andyah
Goto Top

PHP - Meldung zeigen bevor, weitergeleitet wird

Hi NG,

ich habe nochmal ein kleines Problem.

Im Code-Schnipsel:

if ($num_rows == 1)
{
   //funktioniert
   header("location:http://localhost/php/html/weiter.html");  
}
else
{
   //Hier soll Meldung vor der Weiterleitung kommen
   
   echo '<script language="text/javascript">alert("Anmeldung erfogt");</script>';  
   header("location:http://localhost/php/html/anmeldung.html");  
}

möchte ich versuchen, bei fehlerhafter Anmeldung eine Meldung auszugeben. Die Weiterleitung funktioniert zwar aber die Meldung nicht.

Gruß
Andy

PS: in der Darstellung sind anscheinend die Code-Tags verlohren gegangen!

Content-ID: 203703

Url: https://administrator.de/forum/php-meldung-zeigen-bevor-weitergeleitet-wird-203703.html

Ausgedruckt am: 08.04.2025 um 06:04 Uhr

SlainteMhath
SlainteMhath 21.03.2013 um 10:07:12 Uhr
Goto Top
Moin,

richtig, das funktioniert nicht. Wenn Du vorher eine Meldung anzeigen möchtest, musst auf eine extra Seite weiterleiten, auf der dann die Meldung angezeigt wird.

lg,
Slainte
AndyAh
AndyAh 21.03.2013 um 10:19:20 Uhr
Goto Top
Hi,

wie wäre es, wenn ich die Meldung auf der aufrufenden Anmeldeseite ausgebe.

Wie könnte ich das realisieren?

Gruß
Andy
dog
dog 21.03.2013 um 10:19:27 Uhr
Goto Top
Und die Weiterleitung per HTML Meta-Tag oder Javascript machen.

http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung
AndyAh
AndyAh 21.03.2013 aktualisiert um 10:26:21 Uhr
Goto Top
Hi dog,

die entsprechende Seite wird von PHP aus durch header(....); aufgerufen.

Ich muß quasi eine Seite zurück. Die Meldung "ungültige Anmeldung" soll also auf der HTML-Seite angezeigt werden.

Gruß
Andy
110135
110135 21.03.2013 um 13:46:22 Uhr
Goto Top
Hallo,

mit deiner header()-Funktion wirst du ohnehin so noch Schwierigkeiten bekommen:
Zitat: "Beachten Sie, dass Sie die Funktion header() aufrufen müssen, bevor Sie irgendeine andere Art von Ausgabe (seien es normale HTML-Tags, Leerzeilen in einer Datei oder von PHP) zum Client schicken." (Quelle: http://php.net/manual/de/function.header.php)

Und eine Meldung nach dem header()-Aufruf wird nicht erscheinen, da du ja schon umleitest.

Was du machen kannst:
1. Meldung per Javascript-Alert und Umleitung ebenfalls per Javascript.
2. Wie viele Foren-Systeme es machen:
- ausgeben, ob der Login erfolgreich war oder nicht (ggf. per echo())
- dann via META-Refresh auf eine andere Seite weiterleiten
3. Meldung ausgeben, ob der Login erfolgreich war - dann einen Button "weiter" erzeugen.

Gruß,
Florian
AndyAh
AndyAh 21.03.2013 um 14:31:00 Uhr
Goto Top
Hi flow.ryan,

könntest du evtl. den passenden Code sehen lassen? Ich arbeite mich erst seit ein paar Tagen in die Materie ein.

Gruß
Andy
110135
110135 21.03.2013 um 14:38:48 Uhr
Goto Top
Hallo,

1.
<script type="text/javascript">  
alert('Login erfolgreich!');  
window.location = "http://www.google.com/";  
</script>

2.
<b>Login erfolgreich! Sie werden in wenigen Sekunden weitergeleitet...</b>
<meta http-equiv="refresh" content="3; URL=http://www.example.com/seite">  

3.
<b>Login erfolgreich! Bitte klicken Sie nun auf &quot;weiter&quot;</b>
<a href="http://www.example.com/seite">Weiter</a>  

Ich hoffe ich konnte dir helfen.

Gruß
Florian
Guenni
Guenni 21.03.2013 um 19:08:29 Uhr
Goto Top
Hi Andy,

man kann auch noch eine Info ausgeben, warum man weitergeleitet wird,

und läßt dem User noch ein paar Sekunden Zeit, diese Info zu lesen.

<?php
$num_rows = 2;
if ($num_rows == 1){
   header("location:http://localhost/php/html/weiter.html");  
   exit;
}
?>
<html>
<head>
<title>Weiterleitung nach n Sekunden</title>
<script type="text/javascript">  
<!-- 
var seconds = 5;
var aktiv = window.setInterval("countdown()", 1000);  
function countdown (){
	document.getElementById("show_counter").innerHTML='Ihre Anmeldedaten waren falsch. Sie werden in ' + seconds + ' Sekunden weitergeleitet.';  
	if(seconds == 0){
		window.clearInterval(aktiv);
		// Weiterleitung:
		window.location.href = 'http://www.google.com';  
	}
	seconds --;
}
// -->
</script>
</head>
<body>
<div id="show_counter"></div>  
</body>
</html>

Gruß
Günni
AndyAh
AndyAh 22.03.2013 um 07:21:39 Uhr
Goto Top
Hi Florian,

ich habe es ausprobiert. Es gibt ein Problem mit dem Javascript. In diesem Projekt habe ich das Javascript in einer separaten Datei. Wenn ich deinen JS-Teil eingefüge, wird mir beim anzeigen der Webside am Anfang die Meldung ein einer Endlosschleife angezeigt.

Gruß
Andy
110135
110135 22.03.2013 aktualisiert um 08:20:47 Uhr
Goto Top
Hi,

dann bau doch einfach eine Funktion draus:
<script type="text/javascript">  
function weiterleitung(meldung,ziel)
{
  alert(meldung); 
  window.location = ziel; 
}

Den Aufruf machst du im Erfolgsfall z.B. folgendermaßen:
if ($num_rows == 1){ 
    echo '<script type="text/javascript">';  
    echo 'weiterleitung("Login erfolgreich!","http://meine.seite/unterseite.html");';  
    echo '</script>';  
} 

Oder du nimmst die Lösung von Günni face-wink

Gruß,
Florian
AndyAh
AndyAh 22.03.2013 um 09:07:22 Uhr
Goto Top
Hi Florian,

eitwas umgestellt funktioniert es jetzt.

Gruß
Andy