php - mysql - 从表行中获取数据

标签 php mysql

我得到了一段代码来取回用户名和密码,看看它们是否匹配。我现在想将 session 变量设置为表中的“点”值,该值与用户名和密码位于同一行。可以做什么?

    <?php $username="asdin";
$password="1sdA2";
$database="a75sdting";
$pword = $_REQUEST['pword'];
$uname = $_REQUEST['uname'];
mysql_connect('mysqsdst.com',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'");
$exsists = 0;

        WHILE($rows = mysql_fetch_array($query)){
         $exsists = 1;
         break;
         }
            if ($exsists){
            $_SESSION['usern']=$uname;
            $_SESSION['logged']=1;

            header('Location: http://wwsdipts/logged2.php');


                    }



mysql_close();

 ?>

我想设置 $_SESSION['points'] = $row[points] 我猜...但我认为这是不正确的

最佳答案

<?php

// start session (required on every page that uses sessions
session_start();

// db auth
$username="asdin";
$password="1sdA2";
$database="a75sdting";

// user auth
$pword = $_POST['pword']; // should use either $_POST or $_GET, NOT $_REQUEST
$uname = $_POST['uname']; // should use either $_POST or $_GET, NOT $_REQUEST

// open db connection
$conn = mysql_connect('mysqsdst.com',$username,$password);
@mysql_select_db($database,$conn) or die( "Unable to select database");

// check user
$query = mysql_query("SELECT * FROM `username` WHERE `password` = '$pword' AND `username` = '$uname'");

if(mysql_num_rows($query)){
    // user exists
    $row = mysql_fetch_assoc($query);
    $_SESSION['usern']=$uname;
    $_SESSION['logged']=1;
    header('Location: http://wwsdipts/logged2.php');
}else{
    header('Location: http://wwsdipts/login.php'); // take them back to login page if incorrect details
}

// close db connection
mysql_close($conn);

?>

我已经整理了你的代码,请看一下注释。以下内容也毫无值(value):

  1. 您应该使用某种针对 SQL 注入(inject)的保护措施,例如 mysql_real_escape_string($_POST['uname']) - 密码相同
  2. 所有使用 session 变量的页面都需要 session_start()
  3. 您不应使用 $_REQUEST,而应使用 $_POST 或 $_GET(了解相关内容)
  4. 您实际上有一个名为用户名的表吗?您应该阅读一些有关数据库设计的内容,该表的更好名称/用途是 users,因为该表将保存用户(唯一 ID、用户名和密码的组合。
  5. 我不知道你所说的点是什么意思,但要访问“用户名”表中的任何列名,请在设置后使用 $row['column-name'] ($row = mysql_fetch_assoc($query);)
  6. 如果您打算将来大量使用 PHP,您应该查找 PDO,它是处理 SQL 的绝佳类。

关于php - mysql - 从表行中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5366448/

相关文章:

php - 使用 MySQL 和 PHP 高效处理大量数据

PHP - JSON 编码问题

MySQL - 唯一行,仅对应于 3 个表之一

MySQL - View 或外键的适当应用

php - 如何编辑这个日期选择器?

php - 如何使用两个表在mysql数据库中插入新记录

php - 使用 2.0+ API、PHP SDK 在 Facebook 群组上发帖

php - 如何使用PHP从文件夹中一张一张地获取图片并显示在页面中

mysql联合问题

mysql - 我想将表从 SQL Server 导出到 mysql