You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP代码报Unexpected '{'错误,请求协助排查定位问题

解决你的PHP注册代码语法错误问题

我帮你检查了代码,找到了两个导致Unexpected '{'错误的核心问题,还有一个不影响运行但影响体验的小拼写问题,下面逐一说明:

1. 未闭合的条件判断括号(对应你提到的第31行错误)

在表单底部的PHP错误提示代码里,isset($error)后面少了一个闭合的),PHP解析器无法识别完整的条件结构,直接抛出语法错误,这也是注册框消失的直接原因:

错误代码片段:

<?php if(isset($error){ echo '<li class="error-li"> <div class="span-fp-error">'.$error.'</div> </li>'; } ?>

修正后:

<?php if(isset($error)){ echo '<li class="error-li"> <div class="span-fp-error">'.$error.'</div> </li>'; } ?>

2. filter_var函数参数缺失(对应你提到的第50行错误)

验证邮箱格式时,filter_var需要传入第二个参数FILTER_VALIDATE_EMAIL才能正确校验邮箱格式,原代码只传了邮箱变量,不仅无法完成邮箱验证,还会导致逻辑解析混乱,触发语法错误:

错误代码片段:

if(!filter_var($email)){

修正后:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)){

额外的拼写小问题

错误提示里的caracters是拼写错误,建议改为characters,避免给用户传递错误的拼写信息:

$error = 'Name must be between 6-20 characters long';

完整修正后的代码

<?php 
if(isset($_POST['signup'])){ 
    $screenName = $_POST['screenName']; 
    $password = $_POST['password']; 
    $email = $_POST['email']; 
    $error = ''; 
    if(empty($screenName) or empty($password) or empty($email)){ 
        $error = 'All fields are required!'; 
    }else{ 
        $email = $getFromU->checkInput($email); 
        $screenName = $getFromU->checkInput($screenName); 
        $password = $getFromU->checkInput($password); 
        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
            $error = 'Invalid email format'; 
        }else if(strlen($screenName) > 20){ 
            $error = 'Name must be between 6-20 characters long'; 
        }else if(strlen($password) < 5){ 
            $error = 'Password is too short'; 
        }else{ 
            if($getFromU->checkEmail($email) === true){ 
                $error = 'Email already in use'; 
            }else{ 
                // 这里可以添加注册成功的逻辑,比如插入用户数据到数据库等
            } 
        } 
    } 
} 
?>
<form method="post">
<div class="signup-div">
<h3>Sign up </h3>
<ul>
<li>
<input type="text" name="screenName" placeholder="Full Name"/>
</li>
<li>
<input type="email" name="email" placeholder="Email"/>
</li>
<li>
<input type="password" name="password" placeholder="Password"/>
</li>
<li>
<input type="submit" name="signup" Value="Signup for SocialBud">
</li>
</ul>
<?php if(isset($error)){ echo '<li class="error-li"> <div class="span-fp-error">'.$error.'</div> </li>'; } ?>
</div>
</form>

这些修正应该能解决你遇到的语法错误,让注册框正常显示并运行。

内容的提问来源于stack exchange,提问作者r.kuypers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:37:16