isset en $_POST variabelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

23/06/2004 20:06:00
Quote Anchor link
Het gaat om het volgende stukje code :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if ($_POST['verzendbutton'] && !isset($_POST['reactie'])) {
  echo "<span>Vul hier uw reactie in!</span><br />";}
?>

Ik heb register globals off ingesteld. Daarom gebruik ik ook de $_POST variabelen.
Echter de functie isset() werkt dan niet. Ik krijg dan nl. niet de melding: "Vul hier uw reactie in"
Het werkt wel als ik $_POST['reactie'] verander in $reactie. Wat kan hiervan de oorzaak zijn??

Als dit niet voldoende info blijkt te zijn zal ik de tekst van het volledige php bestand meesturen.

Alvast bedankt,
Dimpie.
 
PHP hulp

PHP hulp

30/11/2024 03:14:16
 

24/06/2004 11:17:00
Quote Anchor link
Beetje vaag gescript eerste doe je geen isset en de 2de wel :s

Zo moet het zijn
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if(isset($_POST['verzendbutton']) && !isset($_POST['reactie'])) {
  echo "<span>Vul hier uw reactie in!</span><br />";}
?>
 

24/06/2004 11:40:00
Quote Anchor link
probeer eens $_POST['verzendbutton'] en $_POST['reactie'] te echo-en op je scherm, kijken wat dat weergeeft..
 

24/06/2004 12:03:00
Quote Anchor link
Bedankt voor jullie reacties. Ik heb allebei gedaan:
1. isset() toegevoegd;
2. en inhoud $_POST['reactie'] ge-echood.

ad 1. Het toevoegen van isset() maakte helaas geen verschil.
ad 2. Als ik niks invul in het veld reactie wordt er niets ge-echood. Vul ik wel wat in, dan wordt er ook wat ge-echood. Dus dat gaat wel goed.

Ik het dit script uit het boek "Leer jezelf makkelijk PHP". Ik zal het volledige script maar toevoegen voor de duidelijkheid.

In het originele script werden niet de $_POST variabelen gebruikt. Dus dat is het enige dat ik in dit script hebt gewijzigd.

<html>
<head>
<title>Mailformmulier</title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
function valid_mail ($str) {
    return (ereg ('(^[0-9a-zA-Z_\.-]{1,}@([0-9a-zA-Z_\-]{1,}\.)+[0-9a-zA-Z_\-]{2,}$)', $str));
}
function
valid_name ($str) {
    return (ereg ('^[A-Za-z. -]+$', $str));
}

$_POST['naam'] = ucfirst($_POST['naam']);
 
if ($_POST['verzendbutton'] != "verzenden" || !valid_name($_POST['naam']) || !valid_mail($_POST['mailadres']) || !isset($_POST['reactie'])) {
?>

<form action="mailform4.php" method="post">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if (isset($_POST['verzendbutton']) && !valid_name($_POST['naam'])) { //isset() zelf toegevoegd
        echo "<font color=\"red\">Vul hier uw naam correct in!</font>";
    }

?>

Naam : <input type="text" name="naam" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['naam'] ?>
"><br>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if (isset($_POST['verzendbutton']) && !valid_mail($_POST['mailadres'])) { // isset() zelf toegevoegd
        echo "<font color=\"red\">Vul hier uw mailadres correct in!</font>";
    }

?>

E-mail : <input type="text" name="mailadres" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['mailadres'] ?>
"><br>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    if (isset($_POST['verzendbutton']) && !isset($_POST['reactie'])) { //isset() zelf toegevoegd
        echo "<font color=\"red\">Vul hier uw reactie in!</font>";
    }

?>

Uw reactie : <textarea cols="30" rows="4" name="reactie">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $_POST['reactie'] ?>
</textarea>
<input type="submit" value="verzenden" name="verzendbutton"/>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
    }
    else {
        $boodschap = "Naam: ".$_POST['naam']."\nCommentaar: ".$_POST['reactie'];
        mail($_POST['mailadres'], "Uw reactie van de website", $boodschap);
        echo "Bedankt ".$_POST['naam'].", fijn dat je mee wilde doen!";
        echo "<br />REACTIE: ".$_POST['reactie']; //deze regel extra toegevoegd
        }
?>

</body>
</html>

Misschien hebben jullie hier wat meer in.

Alvast bedankt,
Dimpie
 

24/06/2004 12:53:00
Quote Anchor link
verzenden en checken in 1 doe je dat niet appart :s. Miss dat het daaraan ligt. Ik doe altijd IF verzenden en dan nog een keer
If checken op geldigheid.
 
Mitch X

Mitch X

24/06/2004 13:35:00
Quote Anchor link
Je kan gewo0n ! gebruiken ipv isset() omdat ze allebei op het bestaan van een var zoeken. Verder heeft verzenden maar 1 waarde dus ook die vergelijking kan anders:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if (!$_POST['verzendbutton'] || !valid_name($_POST['naam']) || !valid_mail($_POST['mailadres']) || !$_POST['reactie'])
?>

Verder wil ik je erop wijzen dat !isset() niet zoveel zin heeft en misschien zelfs anders werkt dan je denkt.
isset() geeft TRUE als die var bestaat en FALSE als deze niet bestaat dat !isset() is dus totaal overbodig Afbeelding

Edit: !isset() zal dus FALSE geven wanneer een var bestaat en TRUE als het niet zo is.
Gewijzigd op 24/06/2004 13:37:00 door Mitch X
 

24/06/2004 15:01:00
Quote Anchor link
Door !isset() te wijzigen in ! lukt het wel. Thanks.

Alleen snap ik de logica erachter nog niet helemaal.
Als ik test op !isset() krijg ik TRUE wanneer de waarde niet bestaat. Op dat moment wordt de else tak toch uitgevoerd? Dus zou het eigenlijk toch moeten werken?
Wat geeft "!" terug? Is dat geen Boolean?


Ik ben wat PHP betreft vrij nieuw. Heb ooit wel eens wat geprogrammeerd, maar dat stelde niet zo veel voor. Dus ik hoop dat ik niet al te stomme vragen stel.

Bedankt,
Dimpie
 

24/06/2004 15:04:00
Quote Anchor link
Ik bedoel de if then tak natuurlijk. Sorry voor de verwarring.

Dimpie
 
Mitch X

Mitch X

24/06/2004 18:05:00
Quote Anchor link
Quote:
Alleen snap ik de logica erachter nog niet helemaal.
Als ik test op !isset() krijg ik TRUE wanneer de waarde niet bestaat.

Als isset() FALSE geeft omdat die var er niet is geeft !isset() (die ! checkt of iets niet 'bestaat') TRUE terug waardoor de if() uitgevoerd wordt.
 
PHP erik

PHP erik

24/06/2004 19:00:00
Quote Anchor link
Het is juist handiger om !isset($_POST['naam']) dan !$_POST['naam'], omdat isset hiervoor gemaakt is

Jullie vergeten één ding.

isset kijkt of de $_POST is verstuurd, en niet of het een waarde heeft.
je kan beter empty() of !empty() gebruiken. empty() kijkt niet of de var geset is, maar of de gesette var wel waarde bevat
 
De VeeWee

de VeeWee

24/06/2004 19:30:00
Quote Anchor link
dit kan je meestal wel checken met regexpressions
Gewijzigd op 24/06/2004 19:30:00 door de VeeWee
 
Mitch X

Mitch X

24/06/2004 21:07:00
Quote Anchor link
Quote:
isset kijkt of de $_POST is verstuurd, en niet of het een waarde heeft.

De verzendknop zal altijd een waarde hebben door het value attribuut en wanneer een post var niet is geset/er niets is ingevuld zal deze als waarde null hebben waardoor het dus gewo0n werkt.
Isset test, net zoals ! of een var geset is...
http://nl.php.net/isset
 

25/06/2004 13:56:00
Quote Anchor link
Ik heb het volgende scriptje van het Sitepoint forum gehaald.

Als ik dit script uitvoer, lijkt het er op dat PHPerik gelijk heeft.

Vul je nl. voor $var 0, "" o.i.d. in dan is ie wel geset, echter wel empty.

Vul je een andere waarde dan 0 in, dan is $var zowel geset als !empty.

Haal je $var helemaal weg dan is ie niet geset en natuurlijk ook empty.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$var
= 0;

// Evaluates to true because $var is empty
if (empty($var)) {
   echo '$var is empty';
}

else {
    echo '$var is not empty';
    }

// Evaluates as true because $var is set
if (isset($var)) {
   echo ' $var is set even though it can be empty';
}

else {
    echo ' $var is not set';}
?>


Have fun with it.

Dimpie.
 
Mitch X

Mitch X

25/06/2004 14:20:00
Quote Anchor link
Denk nog maar eens Afbeelding
Voer dit script maar eens uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
    if($_POST['stuuruh'])
        if(!$_POST['vakkiej'])
            echo("Blaaah");
        else
            echo("Bleeeh");
    else
    {
        echo("<form method=\"post\" action=\"" . $_SERVER['PHP_SELF'] . "\">");
        echo("<input type=\"text\" name=\"vakkiej\" /><br />");
        echo("<input type=\"submit\" name=\"stuuruh\" value=\"STuuRuH!\" />");
        echo("</form>");
    }

?>

Als je in het invulvak niets invult krijg je Blaaah te zien, vul je wel iets in krijg je bleeeh te zien Afbeelding
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.