我有一本PHP留言簿。所以我可以不在表单中写任何内容并提交,然后发布。我可以避免这个吗?
这是我的PHP代码:
if (isset($_POST["Name"]) &&
isset($_POST["Email"]) &&
isset($_POST["Überschrift"]) &&
isset($_POST["Kommentar"])) {
$daten = array("überschrift" => $_POST["Überschrift"],
"eintrag" => $_POST["Kommentar"],
"autor" => $_POST["Name"],
"email" => $_POST["Email"],
"datum" => date("d.m.Y"));
$daten = base64_encode(serialize($daten));
if(!file_exists("gaestebuch.txt")) {
$datei = fopen("gaestebuch.txt", "xb");
fclose($datei);
}
$altdaten = file_get_contents("gaestebuch.txt");
if (file_put_contents("gaestebuch.txt", "$daten\r\n$altdaten") ) {
echo "Eintrag hinzugefügt!";
} else {
echo "Fehler!";
}
}
答案 0 :(得分:1)
检查第一个值ISSET,以便知道它是一个POST请求,然后检查其余是否为空
if (isset($_POST["Name"]) &&
!empty($_POST["Email"]) &&
!empty($_POST["Überschrift"]) &&
!empty($_POST["Kommentar"])) {
$daten = array("überschrift" => $_POST["Überschrift"],
"eintrag" => $_POST["Kommentar"],
"autor" => $_POST["Name"],
"email" => $_POST["Email"],
"datum" => date("d.m.Y"));
$daten = base64_encode(serialize($daten));
if(!file_exists("gaestebuch.txt")) {
$datei = fopen("gaestebuch.txt", "xb");
fclose($datei);
}
$altdaten = file_get_contents("gaestebuch.txt");
if (file_put_contents("gaestebuch.txt", "$daten\r\n$altdaten") ) {
echo "Eintrag hinzugefügt!";
} else {
echo "Fehler!";
}
}
还考虑使用OR代替&&
!empty($_POST["Email"]) OR
!empty($_POST["Überschrift"]) OR
!empty($_POST["Kommentar"]))
这意味着如果只有一个字段为空,它将失败,而不是仅当所有字段都为空时
答案 1 :(得分:0)
什么都不是白色空间? 如果是这样,请在if语句中进行检查。 (credit)
<header> </header>
答案 2 :(得分:0)
考虑以下几行。
php > $a = '';
php > echo isset($a) ? 'a is set' : 'a is not set';
a is set
php > echo empty($a) ? 'a is empty' : 'a is not empty';
a is empty
设置某些东西并不意味着它不是空的。所以,使用isset($foo) && !empty($foo)
。
更好地创建一个函数,
function present($x) {
return (isset($x) && !empty($x));
}
并使用它。
if (present($_POST['foo'])) {
/* do something */
}
或对整个$_POST
数组执行此操作,
function present($somevar) {
return (isset($somevar) && !empty($somevar));
}
function all_vars_are_ok($arr) {
$x = array_map("present", $arr);
return (array_filter($x) == $x);
}
然后,
if(all_vars_are_ok($_POST)) {
/*
* do something
*/
}
答案 3 :(得分:0)
解决方案:
required
放入输入标记。!empty($variable)