Het gaat om het volgende stukje code :
<?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.
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
?
Onbekende gebruiker
25-06-2004 13:56
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.
<?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';}
?>
Denk nog maar eens
Voer dit script maar eens uit:
<?
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