V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
YAFEIML
V2EX  ›  问与答

php mysql 中文跟数据库对比不成功

  •  
  •   YAFEIML · 2015-08-13 17:07:17 +08:00 · 2440 次点击
    这是一个创建于 3367 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用户名如果用中文,无法正常登陆成功,英文没有问题。
    mysql内无乱码
    <?php
    //插入连接数据库的相关信息
    require_once 'config.php';

    //开启一个会话
    if (!session_id()) session_start();

    $error_msg = "";
    //如果用户未登录,即未设置$_SESSION['user_id']时,执行以下代码
    if(!isset($_SESSION['user_id'])){
    if(isset($_POST['submit'])){//用户提交登录表单时执行如下代码
    $dbc = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME);
    $user_username = mysqli_real_escape_string($dbc,trim($_POST['username']));
    $user_password = mysqli_real_escape_string($dbc,trim($_POST['password']));

    if(!empty($user_username)&&!empty($user_password)){
    //MySql中的SHA()函数用于对字符串进行单向加密
    $query = "SELECT id, name FROM admin_user WHERE name = '$user_username' AND "."pass = SHA('$user_password')";
    //用用户名和密码进行查询
    $data = mysqli_query($dbc,$query);
    //若查到的记录正好为一条,则设置SESSION,同时进行页面重定向
    if(mysqli_num_rows($data)==1){
    $addlogin = "update admin_user set logincount = logincount+1 where name = '$user_username';";
    $row = mysqli_fetch_array($data);
    $_SESSION['user_id']=$row['id'];
    $_SESSION['username']=$row['name'];
    mysqli_query($dbc,$addlogin);
    $home_url = 'index.php';
    header('Location: '.$home_url);
    }else{//若查到的记录不对,则设置错误信息
    $error_msg = $user_username.', Sorry, you must enter a valid username and password to log in.';
    }
    }else{
    $error_msg = $user_username.', Sorry, you must enter a valid username and password to log in.';
    }
    }
    }else{//如果用户已经登录,则直接跳转到已经登录页面
    $home_url = 'index.php';
    header('Location: '.$home_url);
    }
    ?>
    16 条回复    2015-08-14 11:28:02 +08:00
    PublicID
        1
    PublicID  
       2015-08-13 17:16:46 +08:00
    来玩Python
    YAFEIML
        2
    YAFEIML  
    OP
       2015-08-13 17:18:29 +08:00
    @PublicID 那个入门太难了
    feiyuanqiu
        3
    feiyuanqiu  
       2015-08-13 17:25:59 +08:00
    这东西还是你自己打断点调试最好

    可以先把这个sql的内容打印出来看看
    $query = "SELECT id, name FROM admin_user WHERE name = '$user_username' AND "."pass = SHA('$user_password')";
    arnofeng
        4
    arnofeng  
       2015-08-13 17:27:38 +08:00 via Android
    用框架
    YAFEIML
        5
    YAFEIML  
    OP
       2015-08-13 17:31:26 +08:00
    @feiyuanqiu 行吧,我先试试

    @arnofeng 基础太差,怕用框架走歪路。
    qinxg
        6
    qinxg  
       2015-08-13 17:41:34 +08:00
    编码? 表字段是不是utf8呢? 不懂php 和mysql 乱说的。。
    haiyang416
        7
    haiyang416  
       2015-08-13 17:44:01 +08:00 via Android
    看了这些代码,再看楼主之前发的帖子,需要善意提醒一下,你的入门路走歪了。
    既然刚入门,就不要学那些已经过时已久的代码了,推荐阅读 PHP the right way: http://ww.phptherightway.com
    用 PDO 代替 mysqli,使用 prepare 代替手动拼接查询语句。
    至于你发的代码,你可以设断点调试一下,确认最后拼接的查询语句是否正确,最简单的方式是将生成的语句打印出来,
    放数据库里跑一次。
    haiyang416
        8
    haiyang416  
       2015-08-13 17:48:36 +08:00 via Android
    如果查询语句没有错误,可以查看下数据库中的数据是否正常。
    mumu
        9
    mumu  
       2015-08-13 17:53:15 +08:00
    mysql_query("SET NAMES utf8");用它试试
    arnofeng
        10
    arnofeng  
       2015-08-13 21:47:14 +08:00 via Android
    @YAFEIML 推荐入门用CI框架,官网有视频。一周入门,上手快。
    yangqi
        11
    yangqi  
       2015-08-13 21:59:15 +08:00
    别想了,多半是编码问题
    zhs227
        12
    zhs227  
       2015-08-13 22:12:58 +08:00
    把SQL打出来看看,再把SQL放到数据库里跑一下就明白了。八成是编码问题。另外,教程确实太老了
    YAFEIML
        13
    YAFEIML  
    OP
       2015-08-14 07:31:25 +08:00
    @haiyang416 好的,这个非常好,正在学习。
    @arnofeng 学习框架的话会不会相当于学习另外一种东西?我是说在不了解PHP的情况下会不会走歪?
    arnofeng
        14
    arnofeng  
       2015-08-14 07:41:50 +08:00 via Android
    @YAFEIML 两种,先学了框架,再去看php资料。或者先阅读资料,再用框架。不过最终,你还是要用框架的。
    YAFEIML
        15
    YAFEIML  
    OP
       2015-08-14 08:54:08 +08:00
    @arnofeng 框架没有局限性吗?不会适用任何项目吧?所以说得掌握很多个框架喽?
    arnofeng
        16
    arnofeng  
       2015-08-14 11:28:02 +08:00 via Android
    @YAFEIML 几乎没有啊。因为在里面你也能不用它的库写东西,你可以用其中一小部分你用的顺手的,其他的你自己写就是了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1378 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 17:42 · PVG 01:42 · LAX 10:42 · JFK 13:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.