联络表格上的PHP错误?

时间:2019-07-30 06:40:29

标签: php html

我有以前用过的php代码,用于从用户那里收集信息并存储在.txt文档中,但是我已经将其撤回了,这似乎引发了我从主机客户网站获得的错误。

谁能告诉我怎么了?

谢谢

根据我认为错误所指向的内容编辑代码

.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解析错误:语法错误,意外的'&&'(T_BOOLEAN_AND)在   (出于安全考虑已删除)/第2行上的subscribe.php

注意:我已经复制了以前的功能,但是这次我更改了选项

2 个答案:

答案 0 :(得分:1)

在第2行的条件中,您没有将“)”括起来

  

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

答案 1 :(得分:0)

正如这里的许多人所说,您的方括号似乎有问题。当您写出是否有很多条件的语句时,您首先应该问自己这是否是最佳设置(以我的经验,如果经常指出某些错误,或者可以很容易地简化,那么很多条件相同)。如果不是这种情况(有时确实需要吸收它并写出所有条件),则应将其分解,以使其更易于阅读,更容易看到括号“平衡”并易于调试。我会这样写您的声明:

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),这与编写所有{{1} }。

我希望这对您将来的编码很有帮助,并且将帮助您更快地调试内容