【问题标题】:PHP Parse Error: Syntax Error; unexpected end of file [duplicate]PHP 解析错误:语法错误;文件意外结束[重复]
【发布时间】:2015-05-13 04:41:38
【问题描述】:

尝试使用此 PHP 设置网页。我首先得到空白页,然后让它显示错误,这是一个内部服务器错误。经过一番研究,我发现主要是导致问题的代码。如果有人愿意为此寻找任何可能的解决方案,我将不胜感激。在此之前还有一些 html 代码,尽管它不包含任何 PHP。

    <?php
$subjectPrefix = 'Site Contact Request';
$emailTo = '***@****.com';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name     = stripslashes(trim($_POST['form-name']));
    $email    = stripslashes(trim($_POST['form-email']));
    $tel      = stripslashes(trim($_POST['form-tel']));
    $assunto  = stripslashes(trim($_POST['form-assunto']));
    $mensagem = stripslashes(trim($_POST['form-mensagem']));
    $pattern  = '/[\r\n]|Content-Type:|Bcc:|Cc:/i';
    if (preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $assunto)) {
        die("Header injection detected");
    }
    $emailIsValid = preg_match('/^[^0-9][A-z0-9._%+-]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/', $email);
    if($name && $email && $emailIsValid && $assunto && $mensagem){
        $subject = "$subjectPrefix";
        $body = "Name: $name <br /> Subject: $assunto <br /> Email Address: $email <br /> Telephone Number: $tel <br /> Message: $mensagem";
        $headers  = 'MIME-Version: 1.1' . PHP_EOL;
        $headers .= 'Content-type: text/html; charset=utf-8' . PHP_EOL;
        $headers .= "From: $name <$email>" . PHP_EOL;
        $headers .= "Return-Path: $emailTo" . PHP_EOL;
        $headers .= "Reply-To: $email" . PHP_EOL;
        $headers .= "X-Mailer: PHP/". phpversion() . PHP_EOL;
        mail($emailTo, $subject, $body, $headers);
        $emailSent = true;
    } else {
        $hasError = true;
    }
}
?>

    <?php if(isset($emailSent) && $emailSent): ?>
        <div class="col-md-6 col-md-offset-3">
            <div class="alert alert-success text-center">Your message has been sent.</div>
        </div>
    <?php else: ?>
        <?php if(isset($hasError) && $hasError): ?>
        <div class="col-md-5 col-md-offset-4">
            <div class="alert alert-danger text-center">An error occurred. Please try later.</div>
        </div>
        <?php endif; ?>

    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="contact-form" class="comment_form" role="form" method="post">
        <div class="row-fluid">
            <div class="span6">
                <input type="text" class="form-control" id="form-name" name="form-name" placeholder="Name" required>
            </div>
            <div class="span6">
                <input type="email" class="form-control" id="form-email" name="form-email" placeholder="Email" required>
            </div>
        </div>
        <div class="row-fluid">
            <div class="span6">
                <input type="tel" class="form-control" id="form-tel" name="form-tel" placeholder="Telephone (Optional)">
            </div>
            <div class="span6">
                <input type="text" class="form-control" id="form-assunto" name="form-assunto" placeholder="Subject" required>
            </div>
        </div>
        <div class="row-fluid">
            <div class="span8">
                <textarea id="form-mensagem" name="form-mensagem" placeholder="Message"></textarea>
            </div>
            <div class="span4">
                <button class="btn" type="submit"><i class="li_paperplane"></i>Send message</button>
            </div>
        </div>
    </form>

【问题讨论】:

  • 如果您已经尝试过error_reporting(-1);ini_set('display_errors', 'On'); 并得到“内部服务器错误”,而不是 PHP 错误,那么您的 php 文件可能存在权限或所有权问题。 ..
  • 您缺少来自&lt;?php if(isset($emailSent) &amp;&amp; $emailSent): ?&gt;/&lt;?php else: ?&gt;endif;
  • @Sean 你说得对,很好。 2个if,只有一个endif。
  • 请也给答案投票

标签: php parse-error


【解决方案1】:

开始时你没有关闭一个if条件,请修改如下:-

<?php if(isset($emailSent) && $emailSent): ?>
        <div class="col-md-6 col-md-offset-3">
            <div class="alert alert-success text-center">Your message has been sent.</div>
        </div>
    <?php else: ?>
        <?php if(isset($hasError) && $hasError): ?>
        <div class="col-md-5 col-md-offset-4">
            <div class="alert alert-danger text-center">An error occurred. Please try later.</div>
        </div>
        <?php endif; ?>
        <?php endif; ?> // this is missing and based on your functionality you can move it to anywhere else

输出:- http://prntscr.com/74n8d3

注意:- 这是第一个以 if 条件开头的 html。取决于您的功能,您需要根据需要对其进行调整。

【讨论】:

    猜你喜欢
    • 2017-06-25
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多