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
相关产品推荐
相关产品推荐

