我正在为我的网站留言。我现在所拥有的是一个基本的HTML表单:
<form action="submit.php" method="post">
Name: <input type="text" value="Julian Davis" name="name"readonly><br>
E-mail (Not published) <input type="text" name="email"><br>
Message: <input name="message" rows="5" cols="40"><br>
<input type="submit">
</form>
(名称字段是只读的是gag的一部分)。它使用HTTP POST将结果发送到submit.php,如下所示:
<?php
if strlen($_POST["message"]) = 0 {
echo "You didn\'t type a message. Don't you want people to hear
what you have to say?";
}
else if strlen($_POST["message"]) > 499 {
echo "Messages are limited to 500 characters. Try again.";
}
else{
echo "Your response has been received. Cheers!";
}
?>
我打算添加一些SQL查询来聚合响应,但首先我希望这个脚本不返回空白页。
我之前没有写任何表格或使用过POST(另外,我对我的elseifs有点不稳定),所以这可能是一些愚蠢的语法,但我看了上下脚本,我可以看不出有什么问题。
(另外,如果有人知道如何使这个表格安全,也许是CAPTCHA,请告诉我!)
答案 0 :(得分:8)
许多问题:
所有if
语句中都应包含( ... )
,整个语法错误!好好学习PHP。
if (expr)
statement
第一个应该有==
而不是=
。
有很多问题可以解答这个问题。请参阅The 3 different equals。
=
是赋值运算符。这意味着,左侧变量被赋予一个新值。==
,这是一个比较运算符。检查左侧和右侧是否相等。===
是严格比较运算符,它检查数据的值和类型。最好使用elseif
代替else if
。
如评论中所述,注意elseif和else if在使用大括号时只会被视为完全相同,如上例所示。使用冒号来定义if / elseif条件时,如果分成两个单词,则不能将else分开,否则PHP将因解析错误而失败。“
更正后的代码:
<?php
if (strlen($_POST["message"]) == 0) {
echo "You didn\'t type a message. Don't you want people to hear what you have to say?";
}
elseif (strlen($_POST["message"]) > 499) {
echo "Messages are limited to 500 characters. Try again.";
}
else {
echo "Your response has been received. Cheers!";
}
?>
另外,您的输入语法无效
<input name="message" rows="5" cols="40">
此类语法适用于<textarea>
。即:
<textarea rows="4" cols="50">
语法为:
<input type="text" name="input_name" maxlength="4" size="4">
如果您绝对希望<input />
大于其他{/ 1}},则需要使用CSS。