isset und !isset

03/22/2014 16:16 .ŋight#1
Also ich fühle mich grad echt dumm :D

PHP Code:
            if(isset($_POST['name'])) {
                echo
'Ihre Nachricht wurde versendet! Wir werden uns so schnell wie möglich bei folgender E-Mail Adresse melden:<br><b>'; echo $_POST['email']; echo'</b><br>'; echo $_POST['name'];
                echo
'<br><a href="kontakt.php">Zurück</a>';
                }
            else {
                echo
'Bitte geben Sie einen Namen ein!';
                echo
'<br><a href="kontakt.php">Zurück</a>';
            } 
Im Grunde ist ja alles richtig.. Selbst wenn $_POST['name'] nicht gesetzt ist, wird "Ihre Nachricht wurde versendet.." angezeigt. Ich komme grad nicht hinter wieso das so ist..

So rum geht das auch nicht.. :D

PHP Code:
            if(!isset($_POST['name'])) {
                echo
'Bitte geben Sie einen Namen ein!';
                echo
'<br><a href="kontakt.php">Zurück</a>';
                }
            else {
                echo
'Ihre Nachricht wurde versendet! Wir werden uns so schnell wie möglich bei folgender E-Mail Adresse melden:<br><b>'; echo $_POST['email']; echo'</b><br>'; echo $_POST['name'];
                echo
'<br><a href="kontakt.php">Zurück</a>';
            } 
03/22/2014 16:32 qkuh#2
Wie sieht der Request aus?
03/22/2014 17:46 Phillor#3
wenn du mit isset arbeitest nimm auch gleich noch empty mit rein. Also:

if (isset($var) && !empty($var))

oder andersherum

if (!isset($var) || empty($var))
03/22/2014 20:10 xsrf#4
Was du versuchst ist denke ich zu sagen, dass wenn das Feld leer ist der die Anzeige machen soll richtig?


Ich habe dir hier mal den Code ein wenig ausführlicher auskommentiert geschrieben.

Bei Fragen einfach in Skype anschreiben, habe dich geadded.

HTML Code:
<form method="POST" action="#">
	
	<input type="text" name="name" placeholder="Name">
	<br><br>
	<input type="text" name="email" placeholder="E-Mail">
	<br><br>
	<input type="submit" name="submit" value="Submit">
	
</form>
PHP Code:
<?php

// Überprüfe ob der Button gedrückt wurde!
if(isset($_POST['submit'])) {
    
    
// Überprüfe ob das Feld "name" NICHT leer sind - !empty = nicht leer.
    
if(!empty($_POST['name'])) {
        
        
// Überprüfe ob das Feld "name" NICHT leer sind & ob die E-Mail ein @domain.endung hat also würde zB hallo.peter nicht gehen aber [Only registered and activated users can see links. Click Here To Register...] schon
        
if(!empty($_POST['email']) && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$"$_POST['email'])) {
        
            echo
'Ihre Nachricht wurde versendet! Wir werden uns so schnell wie möglich bei folgender E-Mail Adresse melden:<br><b>';
            echo 
$_POST['email'];
            echo
'</b><br>';
            echo 
$_POST['name'];
    
        
        }
        
// Wenn die Felder leer sind gib das aus
        
else {
            
            echo
'Bitte geben Sie eine valide E-Mail Addresse ein ein!';
            
        }

    
    }
    
// Wenn die Felder leer sind gib das aus
    
else {
        
        echo
'Bitte geben Sie einen Namen ein!';
        
    }

    
}


?>

Du kannst das alles so in eine Datei packen, der Text wird dann darunter angezeigt.
03/23/2014 09:48 Kentika#5
Quote:
Originally Posted by AMAZEN View Post
Was du versuchst ist denke ich zu sagen, dass wenn das Feld leer ist der die Anzeige machen soll richtig?


Ich habe dir hier mal den Code ein wenig ausführlicher auskommentiert geschrieben.

Bei Fragen einfach in Skype anschreiben, habe dich geadded.

HTML Code:
<form method="POST" action="#">
	
	<input type="text" name="name" placeholder="Name">
	<br><br>
	<input type="text" name="email" placeholder="E-Mail">
	<br><br>
	<input type="submit" name="submit" value="Submit">
	
</form>
PHP Code:
<?php

// Überprüfe ob der Button gedrückt wurde!
if(isset($_POST['submit'])) {
    
    
// Überprüfe ob das Feld "name" NICHT leer sind - !empty = nicht leer.
    
if(!empty($_POST['name'])) {
        
        
// Überprüfe ob das Feld "name" NICHT leer sind & ob die E-Mail ein @domain.endung hat also würde zB hallo.peter nicht gehen aber [Only registered and activated users can see links. Click Here To Register...] schon
        
if(!empty($_POST['email']) && eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$"$_POST['email'])) {
        
            echo
'Ihre Nachricht wurde versendet! Wir werden uns so schnell wie möglich bei folgender E-Mail Adresse melden:<br><b>';
            echo 
$_POST['email'];
            echo
'</b><br>';
            echo 
$_POST['name'];
    
        
        }
        
// Wenn die Felder leer sind gib das aus
        
else {
            
            echo
'Bitte geben Sie eine valide E-Mail Addresse ein ein!';
            
        }

    
    }
    
// Wenn die Felder leer sind gib das aus
    
else {
        
        echo
'Bitte geben Sie einen Namen ein!';
        
    }

    
}


?>

Du kannst das alles so in eine Datei packen, der Text wird dann darunter angezeigt.
Die Funktion eregi ist veraltet und sollte nicht mehr benutzt werden. Ich würde stattdessen die Funktion filter_input mit dem Filter FILTER_VALIDATE_EMAIL als Argument nutzen.

Das Ganze kann man hier nachlesen:
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

Grüße
03/23/2014 13:22 ~paradoX#6
Beim Absenden eines Formulars (egal welcher Methode) werden alle Variabeln, die du durch die Namen der <Input>-Tags definiert hast, an das script mitgeliefert!
Egal ob sie leer sind oder nicht. Deshalb kommt php bei der Abfrage zu dem Entschluss, dass es halt nicht nicht gesetzt ist.


Wie die anderen bereits schon erwähnt haben solltest du viel besser Abfragen, ob die Variabel leer ist.


MfG
03/24/2014 07:01 .ŋight#7
Danke.
#solved