解析错误:语法错误、意外$end


Parse error: syntax error, unexpected $end

我试图用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;