PHP: Frage zu echo und else

05/08/2014 14:42 Cℓoud#1
Hallo zusammen, ich bastel derzeit an einer Website und habe zwei Probleme.

Zum einen habe ich ein Login und Register Script gebastelt, wenn der Login nun fehlschlägt, weil beispielsweise das Passwort falsch ist wirft der mir den Echo auf einer neuen Seite aus, ich würde diesen aber gerne im selben Fenster haben. Hier wäre mein Loginscript:


Zweites Problem ist ich habe ein Kontaktformular wo überprüft wird ob das Feld Email ein @ enthält, ist es nicht der Fall erscheint folgende Meldung: "Du hast keine korrekte Email eingegeben." Allerdings wird der Fehler schon beim öffnen des Formulars angezeigt, ich vermute irgendeine Schleife im Script aber komme auch da nicht wirklich weiter, hier wäre meine Kontakt Form:

05/08/2014 15:09 M4xicaner#2
Problem zwei kannst du lösen, indem du erstmal überprüfst, ob es überhaupt ein $_POST gibt

PHP Code:
if(isset($_POST)){
    
// Verarbeitung des POSTs

Das erste Problem wird mir nicht ganz klar...

PHP Code:
if($behave == 2){
    echo 
'Login fehlgeschlagen';

sollte eigentlich kein neues Fenster öffnen...
05/08/2014 15:44 Cℓoud#3
Ersteres hat super geklappt!

Quote:
Originally Posted by M4xicaner View Post
Das erste Problem wird mir nicht ganz klar...

PHP Code:
if($behave == 2){
    echo 
'Login fehlgeschlagen';

sollte eigentlich kein neues Fenster öffnen...
Es handelt sich um folgende Seite: [Only registered and activated users can see links. Click Here To Register...]
Wenn man auf "Anmelden" klickt öffnet sich ein overlay, wenn man nur x-beliebige Daten eingibt und sich anmeldet, wirft der das echo "Login fehlgeschlagen" in einer weitergeleiteten leeren Seite aus, ich möchte allerdings das er mir das echo im Overlay bzw. auf der selben Seite auswirft.

Das selbe Problem tritt bei Registrieren auch auf.
05/08/2014 16:11 M4xicaner#4
Jetzt sehe ich, was du meinst.

Das "Login fehlgeschlagen" wird auf der selben Seite ausgegeben, nur der ganze Styling-Code nicht mehr, da der nur unter der Bedingung, dass $behave == 0 ausgegeben wird.

PHP Code:
if($behave == 0){
    
// Hier steht bei dir alles essenzielle drin.

05/08/2014 18:14 Cℓoud#5
Quote:
Originally Posted by M4xicaner View Post
Jetzt sehe ich, was du meinst.

Das "Login fehlgeschlagen" wird auf der selben Seite ausgegeben, nur der ganze Styling-Code nicht mehr, da der nur unter der Bedingung, dass $behave == 0 ausgegeben wird.

PHP Code:
if($behave == 0){
    
// Hier steht bei dir alles essenzielle drin.

Gibt es eine Möglichkeit das ich den echo im content lade? Oder das ich z.b eine andere .php dynamisch in den content nachlade?
05/08/2014 19:37 Mostey#6
Quote:
Originally Posted by Cℓoud View Post
Gibt es eine Möglichkeit das ich den echo im content lade? Oder das ich z.b eine andere .php dynamisch in den content nachlade?

[Only registered and activated users can see links. Click Here To Register...] ( s. Ajax (programming) - Wikipedia, the free encyclopedia )

Damit kannst du dynamisch Daten in deine Webseite laden ohne sie aktualisieren zu müssen.
05/08/2014 22:34 MrSm!th#7
^Entweder das oder du gibst halt in jedem Fall das vollständige Markup, nur eben mit anderem Content aus. Das erleichtern z.B. diverse PHP Frameworks und Template Engines.
05/09/2014 06:06 Cℓoud#8
Danke! Hab es nun wie folgt gelöst .. in der Bedingung 2 für den fehlgeschlagenen Login habe ich die header() Funktion benutzt:

Code:
if($behave == 2)
{
header('location: index.php?action=notification');
}
und da ich meine Inhalte bereits dynamisch nachlade, kam folgendes in den content:

Code:
case 'notification': echo('Fehlgeschlagen'); break;