为了账号安全,请及时绑定邮箱和手机立即绑定

联系表上的 PHP 错误?

联系表上的 PHP 错误?

PHP
qq_遁去的一_1 2021-11-05 10:35:07
我有以前用来收集用户信息并存储在 .txt 文档中的 php 代码,但我已将其拉回,它似乎引发了我从主机客户那里得到的错误。谁能告诉我怎么了?谢谢将代码编辑为我认为错误指向的内容.php 文件 vv<?phpif(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['PNumber']) && isset($_POST['PostC']) {    $data = $_POST['Name'] . '-' . $_POST['Email'] . '-' . $_POST['PNumber'] . '-' . $_POST['PostC'] . "\n";    $ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX);    if($ret === false) {        die('There was an error writing this file');    }    else {        echo "$ret bytes written to file";    }}else {   die('no post data to process');}$location = "index.html";header( "Location: $location" );Html vvvv <script>$(function() {    $("#Subscribe").validate({        rules: {            Name: {                required: true,                minlength: 2,                maxlength: 23,                },            Email: {                required: true,                email: true                },            PNumber: {                required: false,                number: true                 },            PostC: {                required: false,                 }    }});});                    </script><form id="Subscribe" method="POST" action="subscribe.php"><p class="subBox"><span>(Required) Name: &nbsp; &nbsp;</span><input id="Name" type="text" name="Name" size="20"></p><p class="subBox"><span>(Required) Email: &nbsp; &nbsp;</span><input id="Email" type="text" name="Email" size="20"></p><p><span>(Optional) Number: </span><input id="PNumber" type="text" name="PNumber" size="20"></p><p><span>(Optional) Postcode: </span><input "PostC" type="text" name="PostC" size="20"></p><p class="Submit"><span><input type="submit" value="Subscribe" name="Submit"></span></p></form>它应该像以前一样将表单中输入的文本存储到 mydata.txt 文件中,但出现错误:PHP 解析错误:语法错误,第 2 行中的(出于安全考虑而删除)/subscribe.php 中出现意外的“&&”(T_BOOLEAN_AND)注意:我已经复制了以前工作过的内容,但这次我更改了选项
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

您没有在第 2 行的条件中括号“)”

if(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['PNumber']) && isset($_POST['PostC']) )


查看完整回答
反对 回复 2021-11-05
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

正如这里的许多人所说,您的括号似乎有问题。当你写出有很多条件的 if 语句时,你应该首先问自己这是否是最好的设置(根据我的经验,如果经常指向错误,或者可以很容易地简化,则相同的很多条件)。如果不是这种情况(有时你真的必须把它搞定并写出所有的条件)你应该把它分开,这样更容易阅读,更容易看到括号“平衡”的位置,更容易调试。我会这样写你的陈述:


if(//opening bracket

   isset($_POST['Name']) 

   && isset($_POST['Email']) 

   && isset($_POST['PNumber']) 

   && isset($_POST['PostC']) )//extra incorrect bracket which is now easy to spot

 )//closing bracket - in line with the opening bracket {

//do some stuff

}

如果您有更复杂的条件,这将进一步帮助您,例如:


if( 

    (//first set of conditions

      isset(condition_1)

      && isset(condition_2)

    ) &&

    (//second set of conditions

      isset(condition_3) 

      || isset(condition_4)

    )

  )

通过这样做,您可以轻松查看您的条件平衡的位置(即打开匹配关闭)。请记住,您不会因为在一行中获得所有条件而赢得任何奖品,并且代码行数更少并不等于代码更高效,正如您的示例所展示的那样。


还值得注意的是,你不需要isset每次都写,isset你可以说isset($var1,$var2,$var3),这和写你所有的一样&& issset。


我希望这对您以后的编码有帮助,并能帮助您更快地进行调试


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信