热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

解决C:\AbyssWebServer\htdocs\login_tools.php第37行的‘解析错误:语法错误,意外的‘else’(T_ELSE)’问题

作为一名PHP初学者,我在尝试构建包含登录和注册功能的网站时遇到了一个语法错误。尽管参考了几本关于PHP和MySQL的书籍,但这个问题仍然困扰着我。

作为一名PHP初学者,我手头有几本非常有用的书籍,如《PHP与MySQL轻松上手》和《Larry Ullman的PHP与MySQL》。这些资源极大地帮助了我对PHP和MySQL的理解,但在实际项目中遇到一个问题让我感到困惑。


我正在开发一个包含论坛页面的网站,并认为添加登录和注册功能是非常必要的。最初,一切进展顺利,直到我在项目中引入了login_tools.php脚本后,遇到了一个语法错误。这个错误信息是:“Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\Abyss Web Server\htdocs\login_tools.php on line 37”。


以下是导致错误的完整PHP脚本:


function load($page='login.php') {
$url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
$url = rtrim($url, '/\\');
$url .= '/' . $page;

header("location:$url");
exit();
}

function validate($dbc, $user_name='', $pwd='') {
$errors = array();

if (empty($user_name)) {
$errors[] = '请输入用户名。';
} else {
$un = mysqli_real_escape_string($dbc, trim($user_name));
}

if (empty($pwd)) {
$errors[] = '请输入密码。';
} else {
$p = mysqli_real_escape_string($dbc, trim($pwd));
}

if (empty($errors)) {
$q = "SELECT users_id FROM users WHERE users_name='$un' AND pass=SHA1('$p')";
$r = mysqli_query($dbc, $q) or die("Error: " . mysqli_error($dbc));
if (mysqli_num_rows($r) == 1); { // 这里存在分号问题
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
return array(true, $row);
} else {
$errors[] = '用户名和密码未找到。';
}
}
return array(false, $errors);
}

解决方案



#1





您的PHP代码格式存在问题,特别是在if (mysqli_num_rows($r) == 1);这一行,这里不应该有分号。正确的代码应该是:


if (empty($errors)) {
$q = "SELECT users_id FROM users WHERE users_name='$un' AND pass=SHA1('$p')";
$r = mysqli_query($dbc, $q) or die("Error: " . mysqli_error($dbc));
if (mysqli_num_rows($r) == 1) {
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
return array(true, $row);
} else {
$errors[] = '用户名和密码未找到。';
}
}

建议在编写代码时使用集成开发环境(IDE),因为它们可以自动检测并提示此类语法错误。





#2





另一个需要注意的地方是if (mysqli_num_rows($r) == 1);这行代码实际上是一个空的if语句。由于后面跟着的是一个代码块,而没有相应的if语句来匹配这个else,因此会导致语法错误。


这种错误通常发生在将大括号放置在if语句之后的下一行时,容易忽略掉条件判断的结束符号。




推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 解决PHP与MySQL连接时出现500错误的方法
    本文详细探讨了当使用PHP连接MySQL数据库时遇到500内部服务器错误的多种解决方案,提供了详尽的操作步骤和专业建议。无论是初学者还是有经验的开发者,都能从中受益。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
author-avatar
朱仔happy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有