我的PHP脚本看起来应该可以工作,为什么不呢?

J. *_*vis 2 php

我正在为我的网站留言.我现在拥有的是一个基本的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,请告诉我!)

Pra*_*man 8

很多问题:

  1. 你的所有if陈述都应该包含( ... )在内,整个语法都错了!学好PHP.

    if (expr)
      statement
    
    Run Code Online (Sandbox Code Playgroud)
  2. 而第一个应该==而不是=.

    有很多问题可以解决这个问题.请参阅3个不同的等号.

    • =是赋值运算符.这意味着,左侧变量被赋予一个新值.
    • ==就是你需要的,它是一个比较运算符.检查左侧和右侧是否相等.
    • ===是严格比较运算符,检查二者的值和该数据的类型.
  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.