猿问

联系表上的 PHP 错误?

我有以前用来收集用户信息并存储在 .txt 文档中的 php 代码,但我已将其拉回,它似乎引发了我从主机客户那里得到的错误。


谁能告诉我怎么了?


谢谢


将代码编辑为我认为错误指向的内容


.php 文件 vv


<?php

if(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)


注意:我已经复制了以前工作过的内容,但这次我更改了选项


qq_遁去的一_1
浏览 123回答 2
2回答

芜湖不芜

您没有在第 2 行的条件中括号“)”if(isset($_POST['Name']) && isset($_POST['Email']) && isset($_POST['PNumber']) && isset($_POST['PostC'])&nbsp;)

30秒到达战场

正如这里的许多人所说,您的括号似乎有问题。当你写出有很多条件的 if 语句时,你应该首先问自己这是否是最好的设置(根据我的经验,如果经常指向错误,或者可以很容易地简化,则相同的很多条件)。如果不是这种情况(有时你真的必须把它搞定并写出所有的条件)你应该把它分开,这样更容易阅读,更容易看到括号“平衡”的位置,更容易调试。我会这样写你的陈述:if(//opening bracket&nbsp; &nbsp;isset($_POST['Name'])&nbsp;&nbsp; &nbsp;&& isset($_POST['Email'])&nbsp;&nbsp; &nbsp;&& isset($_POST['PNumber'])&nbsp;&nbsp; &nbsp;&& isset($_POST['PostC']) )//extra incorrect bracket which is now easy to spot&nbsp;)//closing bracket - in line with the opening bracket {//do some stuff}如果您有更复杂的条件,这将进一步帮助您,例如:if(&nbsp;&nbsp; &nbsp; (//first set of conditions&nbsp; &nbsp; &nbsp; isset(condition_1)&nbsp; &nbsp; &nbsp; && isset(condition_2)&nbsp; &nbsp; ) &&&nbsp; &nbsp; (//second set of conditions&nbsp; &nbsp; &nbsp; isset(condition_3)&nbsp;&nbsp; &nbsp; &nbsp; || isset(condition_4)&nbsp; &nbsp; )&nbsp; )通过这样做,您可以轻松查看您的条件平衡的位置(即打开匹配关闭)。请记住,您不会因为在一行中获得所有条件而赢得任何奖品,并且代码行数更少并不等于代码更高效,正如您的示例所展示的那样。还值得注意的是,你不需要isset每次都写,isset你可以说isset($var1,$var2,$var3),这和写你所有的一样&& issset。我希望这对您以后的编码有帮助,并能帮助您更快地进行调试
随时随地看视频慕课网APP
我要回答