PHP Machen, eine einfache if-isset-leeren-Funktion
Ich bin der Codierung ein Arbeitsblatt app, die für einen Drucker der Firma.
Ich bin immer in der Flut von Formularen.
Für jedes einzelne Eingabefeld, ich habe zu prüfen, ob die $_POST
Variablen gesetzt sind, und wenn, so echo wieder den Wert. (Im Fall, dass einige Fehler, zum Beispiel nach einem Fehler bei der überprüfung der Benutzer sollte nicht erneut die ganze form)
Beispielcode:
if(isset($_POST['time'])&&!empty($_POST['time'])){echo $_POST['time'];}
Hatte ich zur Umsetzung dieses etwa hundert-mal.
So habe ich versucht, herauszufinden, eine Art von Funktion, um diese einfach und gut lesbar.
Etwas wie dieses:
function if_post_echo($key, $default = "") {
if(isset($_POST[$key])&&!empty($_POST[$key])){
echo $_POST[$key];
}else{
echo $default;
}
}
Aber das klappt nicht.
Ich habe versucht, pass in die $_POST
für die $key
Variablen wie diese:
if_post_echo($_POST['time'])
function if_request_echo($key, $default = "") {
if(isset($key)&&!empty($key)){
echo $key;
}else{
echo $default;
}
}
Und ich habe auch versucht diese:
function if_request_echo($key, $default = null) {
return isset($_REQUEST[$key])&&!empty($_REQUEST[$key]) ? $_REQUEST[$key] : $default;
}
Ohne vernünftigen Ergebnis.
Die Frage:
Wie kann ich forge eine Funktion sieht, die für die notwendige $_POST
variable und gibt ihn zurück, oder wenn sein gelöscht, dann wird eine leere Zeichenfolge zurückgegeben.
Und gibt es eine Möglichkeit, dies zu tun für $_GET
und $_REQUEST
auch? (Oder einfach duplizieren?)
Vielen Dank für Eure Kommentare! @David: ich weiß um die $_REQUEST Problem, aber dieses mal sind wir hinter den Schutz, die app un-Beiträge aus dem Netz. @netcoder: ich kann mich nicht erinnern, warum ich diese einrichten wie diese, aber ich weiß, ich verwendet, um zu versuchen, die !leer, allein, ohne die isset und fiel einige Probleme.
wie ist
$_REQUEST
weniger sicher als $_GET
oder $_POST
? Sie können alle vom Benutzer verändert werden, um zu produzieren Werte, die die Anwendung möglicherweise nicht erwarten. Wie kann $_COOKIE
für diese Angelegenheit, die $_REQUEST
bekommt auch seinen Wert aus.Haben Sie einen Blick auf Chris Shiflet Cross-Site-Fälschungen
Gut, dass es nicht wirklich eine Sicherheit, aber wesentliche Unterschied zwischen POST-und GET-Methoden.
InformationsquelleAutor Kael | 2011-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre PHP-Test-Funktion:
Dann in Ihrem HTML-Formular:
$_REQUEST
(verlinkten) ist ein PHP-super-global enthält POST ($_POST
) und GET ($_GET
) - request-Parameter.Wenn Sie nur wollen, um zu erfassen POST-request Parameter, dann wäre es:
Zum Beispiel.
InformationsquelleAutor Treffynnon
Wenn Sie eine große Menge von Feldern, würde ich vorschlagen, dass Sie verwenden auch ein array von defaults:
$fields
enthält dann eine Liste der Formular-Werte, die entweder mit der POST-Daten oder einer voreingestellten Standardwerte. Kein isset finden?array_filter Mann Seite besonders: Wenn kein Rückruf bereitgestellt wird, müssen alle Einträge von input gleich FALSE, werden entfernt. Geht irgendwie zu erklären, die Arbeit, die hinter dieser Lösung.
Vielen Dank; auch für das hinzufügen der link! (Es funktioniert ähnlich wie
empty()
in diesem Fall.)InformationsquelleAutor mario
Sollte dies funktionieren:
Wenn Sie Probleme haben, empfehle ich, dass Sie versuchen
var_dump($_POST)
oderprint_r($_POST)
um zu sehen, ob alles ordnungsgemäß gebucht.InformationsquelleAutor Karl Laurentius Roos
Nur der Hinweis, das ist redundant:
Einer unset variable wird immer "leer", so
isset()
ist impliziert in Ihrerempty()
nennen.Für Ihre Logik, können Sie das gleiche Ergebnis erzielen mit nur:
InformationsquelleAutor Rikaelus
Ihre erste Funktion funktioniert perfekt für mich.
Warum glaubst du, dass es nicht funktioniert?
Jedoch eine bessere Variante wäre
:
value="<?php _post(time); ?>"
und gibt nichts zurück.value="<?php echo htmlentities(_post(time)); ?>
sollten Sie die echo - Ausgabe.
Diese wird nicht geprüft, ob die variable leer ist, das ist in Ordnung, wenn
$default
ist immer eine leere Zeichenfolge. Wenn es dann nicht funktioniert nicht so gefragt.InformationsquelleAutor Your Common Sense
Wenn Sie wissen möchten, speziell:
Genannt wie die Vorherige Funktion.
InformationsquelleAutor Zirak
Ihre Methode scheint gut zu funktionieren hier:
Habe ich ein einfaches input mit dem Namen test und die form-Methode ist
POST
und mitecho if_post_echo('test');
.Es geschrieben auf der Seite, was in der text box.
InformationsquelleAutor David
Diese Funktion wird Hinzugefügt in PHP 7 als "Null Coalesce Operator" mit zwei Fragezeichen:
echo ($_GET['message'] ?? 'default-if-not-set');
https://wiki.php.net/rfc/isset_ternary
InformationsquelleAutor Adam Albright