我正在为我的网站留言.我现在拥有的是一个基本的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>
Run Code Online (Sandbox Code Playgroud)
(名称字段是只读的是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!";
}
?>
Run Code Online (Sandbox Code Playgroud)
我打算添加一些SQL查询来聚合响应,但首先我希望这个脚本不返回空白页面.
我之前没有写任何表格或使用过POST(加上,我对我的其他人有点不稳定),所以这可能是一些愚蠢的语法,但我看了上下脚本,我看不到它有什么不妥.
(另外,如果有人知道如何使这个表格安全,也许是CAPTCHA,请告诉我!)
很多问题:
你的所有if陈述都应该包含( ... )在内,整个语法都错了!学好PHP.
if (expr)
statement
Run Code Online (Sandbox Code Playgroud)而第一个应该==而不是=.
有很多问题可以解决这个问题.请参阅3个不同的等号.
=是赋值运算符.这意味着,左侧变量被赋予一个新值.==就是你需要的,它是一个比较运算符.检查左侧和右侧是否相等.===是严格比较运算符,检查二者的值和该数据的类型.也更好用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!";
}
?>
Run Code Online (Sandbox Code Playgroud)
另外,您的输入语法无效
<input name="message" rows="5" cols="40">
Run Code Online (Sandbox Code Playgroud)
这种语法适用于<textarea>.即:
<textarea rows="4" cols="50">
Run Code Online (Sandbox Code Playgroud)
语法是:
<input type="text" name="input_name" maxlength="4" size="4">
Run Code Online (Sandbox Code Playgroud)
如果你绝对想要<input />比其他人更大,你将需要使用CSS.