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-Key: 203703

Url: https://administrator.de/contentid/203703

Printed on: April 18, 2024 at 15:04 o'clock

Member: SlainteMhath
SlainteMhath Mar 21, 2013 at 09:07:12 (UTC)
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
Member: AndyAh
AndyAh Mar 21, 2013 at 09:19:20 (UTC)
Goto Top
Hi,

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

Wie könnte ich das realisieren?

Gruß
Andy
Member: dog
dog Mar 21, 2013 at 09:19:27 (UTC)
Goto Top
Und die Weiterleitung per HTML Meta-Tag oder Javascript machen.

http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung
Member: AndyAh
AndyAh Mar 21, 2013 updated at 09:26:21 (UTC)
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
Mitglied: 110135
110135 Mar 21, 2013 at 12:46:22 (UTC)
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
Member: AndyAh
AndyAh Mar 21, 2013 at 13:31:00 (UTC)
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
Mitglied: 110135
110135 Mar 21, 2013 at 13:38:48 (UTC)
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
Member: Guenni
Guenni Mar 21, 2013 at 18:08:29 (UTC)
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
Member: AndyAh
AndyAh Mar 22, 2013 at 06:21:39 (UTC)
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
Mitglied: 110135
110135 Mar 22, 2013 updated at 07:20:47 (UTC)
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
Member: AndyAh
AndyAh Mar 22, 2013 at 08:07:22 (UTC)
Goto Top
Hi Florian,

eitwas umgestellt funktioniert es jetzt.

Gruß
Andy