我试图用html和php制作一个简单的注册表单,但我收到此错误消息,不知道为什么:
解析错误:语法错误,第 47 行/home/daygosta/public_html/dpicollege/register.php 中的意外$end
这是我在注册中的代码的链接.php点击
你的错误是 heredoc 没有很好地关闭。在您的文本 EOT 之前;不能是任何角色。在您的代码中,我看到一个制表符字符。您可以在文档中看到一个大警告
在$form变量中使用 ''
<?php
error_reporting(0);
require('config.php');
if(isset($_POST['submit'])){
$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($email1 == $email2){
if($pass1 == $pass2){
$name = mysql_escape_string($_POST['name']);
$lname = mysql_escape_string($_POST['lname']);
$uname = mysql_escape_string($_POST['uname']);
$email1 = mysql_escape_string($email1);
$email2 = mysql_escape_string($email2);
$pass = mysql_escape_string($pass1);
$pass2 = mysql_escape_string($pass2);
}else{
echo "Sorry , your passwords do not match!</br>";
exit();
}
}else{
echo "Sorry, your emails do not match!</br>";
}
}else{
$form = '
<form acti method="POST">
First Name: <input type="text" name="name"/></br>
Last Name: <input type="text" name="lname"/></br>
User Name: <input type="text" name="uname"/></br>
Email Address: <input type="text" name="email1"/></br>
Confirm Email Address: <input type="text" name="email2"/></br>
Password: <input type="password" name="pass1"/></br>
Confirm Password: <input type="password" name="pass2"/></br>
<input value="Submit" type="submit" name="submit"/></br>
</form>
';
echo $form;
}
?>
使用这个而不是heredoc
$form = '
<form method="POST">
First Name: <input type="text" name="name"/></br>
Last Name: <input type="text" name="lname"/></br>
User Name: <input type="text" name="uname"/></br>
Email Address: <input type="text" name="email1"/></br>
Confirm Email Address: <input type="text" name="email2"/></br>
Password: <input type="password" name="pass1"/></br>
Confirm Password: <input type="password" name="pass2"/></br>
<input value="Submit" type="submit" name="submit"/></br>
</form>;
这将起作用:
<?php
error_reporting(0);
require('config.php');
if(isset($_POST['submit'])){
$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];
if($email1 == $email2){
if($pass1 == $pass2){
$name = mysql_escape_string($_POST['name']);
$lname = mysql_escape_string($_POST['lname']);
$uname = mysql_escape_string($_POST['uname']);
$email1 = mysql_escape_string($email1);
$email2 = mysql_escape_string($email2);
$pass = mysql_escape_string($pass1);
$pass2 = mysql_escape_string($pass2);
}else{
echo "Sorry , your passwords do not match!</br>";
exit();
}
}else{
echo "Sorry, your emails do not match!</br>";
}
}else{
$form = '
<form acti method="POST">
First Name: <input type="text" name="name"/></br>
Last Name: <input type="text" name="lname"/></br>
User Name: <input type="text" name="uname"/></br>
Email Address: <input type="text" name="email1"/></br>
Confirm Email Address: <input type="text" name="email2"/></br>
Password: <input type="password" name="pass1"/></br>
Confirm Password: <input type="password" name="pass2"/></br>
<input value="Submit" type="submit" name="submit"/></br>
</form>
';
echo $form;
}
?>
错误的答案! 他想使用 Heredoc,您的错误在这里EOT;
在 EOT 结束之前注意空间。
您的问题是,在EOT关闭之前您有空格,删除此空格,您的脚本将起作用。
根据
Heredoc语法,这个是正确的
$form = <<<EOT
<form acti method="POST">
First Name: <input type="text" name="name"/></br>
Last Name: <input type="text" name="lname"/></br>
User Name: <input type="text" name="uname"/></br>
Email Address: <input type="text" name="email1"/></br>
Confirm Email Address: <input type="text" name="email2"/></br>
Password: <input type="password" name="pass1"/></br>
Confirm Password: <input type="password" name="pass2"/></br>
<input value="Submit" type="submit" name="submit"/></br>
</form>
EOT;