我有以前用来从用户那里收集信息并在.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: </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解析错误:语法错误,意外'&amp;''(t_boolean_and(在 (为安全删除(/subscribe.php在第2行
上
注意:我已经复制了以前工作的内容,但是这次我更改了选项
在第2行中的条件
中的条件if(iSSET($ _ post ['name'](_post ['postc']((
正如许多这里所说的那样,您的方括号似乎有问题。如果您写出很多条件的陈述时,您应该首先问自己这是否是最好的设置(根据我的经验,在很多情况下,如果经常指出错误,或者很容易简化(。如果不是这种情况(有时您确实必须吮吸它并写出所有条件(,则应该将其分解出来,以便更容易阅读,更容易查看括号"平衡"的位置,更易于调试。我会写这样的陈述:
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
'S。
我希望这对您的未来编码有帮助,并将帮助您更快地调试