首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何开始调试PHP脚本

问如何开始调试PHP脚本
EN

Stack Overflow用户
提问于 2014-06-26 18:15:31
回答 2查看 54关注 0票数 1

我对PHP非常陌生,所以当涉及到PHP时,调试并不是我所熟悉的。

我使用php/javascript(ajax)为我的网站更改用户密码。所以基本上,当我登录并试图更改我的密码时。代码在第一个回波处中断。所以我在表单中输入的密码与数据库中的密码不匹配。但是,我使用的是相同的散列方法和所有东西。如果有人有任何想法,请告诉我。谢谢!

代码语言:javascript
复制
if(isset($_POST["u"])) {
    $u = preg_replace('#[^a-z0-9]#i', '', $_GET['u']);
    $oldpasshash = md5($_POST["cp"]);
    $newpasshash = md5($_POST["cnp"]);
    $sql = "SELECT id, username, password FROM users WHERE username='$u' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row = mysqli_fetch_row($query);
    $db_id = $row["id"];
    $db_username = $row["username"];
    $db_password = $row["password"];
    if($db_password != $oldpasshash){
        echo "no_exist";
        exit();
    } else {
        $sql = "UPDATE users SET password='$newpasshash', WHERE username='$db_username' LIMIT 1";
        $query = mysqli_query($db_conx, $sql);
    }
    $sql = "SELECT id, username, password FROM users WHERE username='$db_username' LIMIT 1";
    $query = mysqli_query($db_conx, $sql);
    $row = mysqli_fetch_row($query);
    $db_newpass = $row[3];
    if($db_newpass == $newpasshash) {
    echo "success";
    exit();
    } else {
        echo "pass_failed";
        exit();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-26 18:30:40

查看您的前两行代码:

代码语言:javascript
复制
if(isset($_POST["u"])) {
    $u = preg_replace('#[^a-z0-9]#i', '', $_GET['u']);

检查$_POST['u']是否是isset,然后使用$_GET['u']。

FYI,您是直接将$u注入mysql语句,不要这样做。

票数 1
EN

Stack Overflow用户

发布于 2014-06-26 18:30:01

您正在使用mysqli_fetch_row并通过字段名访问表字段。这是不对的。

划从结果集中获取一行数据,并将其作为枚举数组返回,其中每列都存储在从0(0)开始的数组偏移量中。

所以你必须用

代码语言:javascript
复制
$db_id = $row[0];
$db_username = $row[1];
$db_password = $row[2];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24437460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档