我有以前用过的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: </span><input id="Name" type="text" name="Name" size="20"></p>
<p class="subBox"><span>(Required) Email: </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
注意:我已经复制了以前的功能,但是这次我更改了选项
答案 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} }。
我希望这对您将来的编码很有帮助,并且将帮助您更快地调试内容