Gebruik van dummy variabele voor submitcontrole

Status
Niet open voor verdere reacties.

JohanDerks

Verenigingslid
Lid geworden
2 dec 2006
Berichten
82
Om te weten of een variabele die via PHP is doorgegeven (submit) aan een ander document,
beschikbaar is, gebruik je if (isset($_POST['........'])).
Kan ik daarvoor een dummy variabele (zonder waarde) gebruiken, bijv.
<input type="hidden" name="ZamSubmit"/>
en de controle in het volgende document luidt dan:
if (isset($_POST['ZamSubmit']))

En een vraag daarmee samenhangend: welk type variabele geeft een hidden element door? Alleen een string?
Moet ik dan een string invullen, bijv. <input type="hidden" name="ZamSubmit" value=""/> of kan
<input type="hidden" name="ZamSubmit" value=true/> ook?
 
Kijk eens naar
Code:
<?php
echo "<pre>".print_r($_POST, true)."</pre>";
?>
Dan zie je precies welke POST-variabelen er bestaan na het versturen van je formulier.

Ikzelf gebruik altijd dit om te controleren of iets verstuurd is. Het gaat wel uit van 1 knop, maar het is te combineren met meerdere knoppen in de statement.
Code:
<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
// Verstuurd
}
?>
 
Laatst bewerkt:
Dat deed ik al met
foreach ($_POST as $key => $value) {$inhoud .= "$key: $value\n";}; print $inhoud;
, maar dan verschijnt er wel de key van de variabele 'ZamSubmit', maar niet de waarde (want ik had aan
de verborgen variabele 'Zamsubmit' geen waarde gegeven. Omdat ik een PHP-probleem, dat van 'Zamsubmit' niet kan oplossen, dacht ik, dat het aan dat ontbreken van een waarde zou kunnen liggen.

Het PHP-probleem
"Een lap tekst kan ik zowel binnen als buiten PHP zetten." is mij verteld.
Betekent dat, dat de volgende code
Code:
<?php 
if (isset($_POST['ZamSubmit'])) {  
    if ($pI=="pt") {   //  Dit betekent, dat deze pagina opgeroepen is vanuit Zamenhofa.php, waar Italiaans is geschrapt. 
?>
	    <tr>
		    <td class="d">
		        <button type="button" onclick="style=\'background-color: \' + klor; kreuGTfenro(\'it\')">
			    Klik hier voor Italiaans (it)</button >
		    </td>
		    <td class="ctr">
		        <input type="radio" name="it" value="1" onclick="marku(\'it\',\'jes\')" />jes 
		        <input type="radio" name="it" value="0" onclick="marku(\'it\',\'ne\')" />ne 
		        <input type="radio" name="it" value="-1" onclick="return forigu(\'it\')" />nedifinebla
		    </td>
	    </tr>
<?php 
    }
}
?>
hetzelfde is als
Code:
<?php 
if (isset($_POST['ZamSubmit'])) {  
    if ($pI=="pt") {   Dit betekent, dat deze pagina opgeroepen is vanuit Zamenhofa.php, waar Italiaans is geschrapt.
        print '
	    <tr>
		    <td class="d">
		        <button type="button" onclick="style=\'background-color: \' + klor; kreuGTfenro(\'it\')">
			    Klik hier voor Italiaans (it)</button >
		    </td>
		    <td class="ctr">
		        <input type="radio" name="it" value="1" onclick="marku(\'it\',\'jes\')" />jes 
		        <input type="radio" name="it" value="0" onclick="marku(\'it\',\'ne\')" />ne 
		        <input type="radio" name="it" value="-1" onclick="return forigu(\'it\')" />nedifinebla
		    </td>
	    </tr>
        ';
    }
}
?>
?
(Ook $pI is doorgegeven.)
Helaas vertoont de tekst zich in geen van beide gevallen in het van server-side afkomstige document.
 
Wat je zegt over je lap code is correct. Het escapen van je quotes in verder dan ook niet nodig.
 
Het verschil
Code:
if ($_SERVER['REQUEST_METHOD'] == "POST") {
   // request method 'post' is gebruikt
}
if (!empty($_POST)) {
   // post data array is NIET leeg (bevat dus data)
}
if (isset($_POST['submit'])) {
   // post data 'submit' heeft een waarde
   // let op: een lege string is ook een waarde!
}

Hoe je een hidden veld kan omzetten naar een boolean (true/false)
Code:
<input type="hidden" name="ZamSubmit" value="1">

$zamHidden = false;
if ($_SERVER['REQUEST_METHOD'] == "POST") {
   if (isset($_POST['ZamSubmit'])) {
      $zamHidden = ($_POST['ZamSubmit']  === "1");
   }
}

// hetzelfde kan je ook bereiken met: [I]var = (if-expressie) ? trueWaarde : falseWaarde[/I]
$zamHidden = (!empty($_POST) && isset($_POST['ZamSubmit'])) ? ($_POST['ZamSubmit']  === "1") : false;
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan