1

我是 PHP 新手,我有 html 页面,需要用户提供用户名和密码才能进入聊天页面

html page
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<link rel="stylesheet" type="text/css" href="Registerstyle.css">
<title>اسجل دخولك الى الشات</title>
</head>

<body>
    <div id = "page">
        <div id = "header">
        </div>
        <div id = "container" dir = rtl>
            <div id = "menu">
                <ul>
                    <li><a href="#">تسجيل الدخول</a></li>
                    <li><a href="#">استرجاع كلمة المرور</a></li>
                    <li><a href="#">######</a></li>
                    <li><a href="#">######</a></li>
                </ul>
            </div>
            <div id = "midofcontainer">     
            <div id = "text">
                اسم المستخدم <br><br>
                كلمة المرور
            </div>      
            <div id = "form">
                <form name="log" method="GET" action="login.php">
                <input type="text" name="usr" id="usr" style="width: 242px"></input><br><br>
                <input type="password" name="pwd" style="width: 242px"></input><br><br>
                <input type="submit" style="width: 78px" value="تسجيل الدخول">
                <input type="reset" style="width: 78px" value="مسح">
            </div>
            </div>
        </div>
        <div id = "footer">
        </div>
    </div>    
</body>
</html>

这是我的 php 文件,它将检查来自 html 的值

<?php
    require 'connect.inc.php';

    $usr = $_GET['usr'];
    $pwd = $_GET['pwd'];
    $table_name = 'user';
    $query = "SELECT * FROM $table_name" ;

    $query_run = mysql_query($query);
        while($rows = mysql_fetch_array($query_run))
        {

            if ($rows['username'] == $usr and  $rows['password'] == $pwd)
            {

                include ('chatArea.php');
                exit();
            }                
            else
                include_once ('log.html');            
        }       
?> 

现在我想要的是当它if ($rows['username'] == $usr and $rows['password'] == $pwd) 返回true时打开一个新的 php 页面并将用户名传递给页面我希望能让我的问题清楚,对不起我的英语不好

4

4 回答 4

2
  1. 使用PDO而不是mysql_*函数。
  2. 在将变量放入 sql 查询之前使用mysql_real_escape_string()以防止 SQL 注入。
  3. 使用POST方法而不是GET登录操作。
  4. 了解SESSIONS. 谷歌一个很好的教程,或者你可以点击这个链接: 使用 PHP 创建一个简单的登录-注销会话

    但在你的情况下,使用mysql_num_rows并更改 sql 查询,如下所示:

    require 'connect.inc.php';
    $usr = mysql_real_escape_string($_GET['usr']);
    $pwd = mysql_real_escape_string($_GET['pwd']);
    $table_name = 'user';
    $query = "SELECT * FROM $table_name where username='$usr' and password='$pwd'" ;
    $query_run = mysql_query($query);
    if(mysql_num_rows($query_run) == 1){
    
       include ('chatArea.php');
       exit();
    }                
    else {
        include_once ('log.html'); 
    }          
    
于 2013-06-14T22:24:38.803 回答
1

要回答您的问题,您需要使用会话,以便您只需进行一次身份验证,并且可以在后续页面中检查用户已登录并且您已存储用户名,以便您可以在需要时使用它。然后您将使用header重定向而不是include

登录.php

<?php
session_start();

...

if (user_found_condition)
{
  $_SESSION['username'] = $usr;
  header('Location: /url/to/chatArea.php');
  exit();
}

然后在每个需要登录的页面中,您从以下内容开始:

<?php
session_start();
if (!isset($_SESSION['username']))
{
  // redirect to login
}

// use $_SESSION['username'] wherever you want to display the username

除此之外,您不应该从数据库中获取所有行来匹配一个用户,只需WHERE在查询中添加一个条件。

您还应该切换到 PDO 或 mysqli 和准备好的语句,因为这些mysql_*函数已被弃用。

于 2013-06-14T22:24:21.467 回答
1

您需要使用post而不是get on form,因为 url 中的用户名和密码是一个很大的安全风险。

    $usr = $_GET['usr'];
    $pwd = $_GET['pwd'];
    $table_name = 'user';
    $query = "SELECT username,password FROM $table_name WHERE username = '".mysql_real_escape_string($usr)."' limit 1";

    $query_run = mysql_query($query);
        while($rows = mysql_fetch_array($query_run))
        {

            if ($rows['username'] == $usr and  $rows['password'] == $pwd)
            {

                include ('chatArea.php');
                exit();
            }                
            else
                include_once ('log.html');            
        }  

}
于 2013-06-14T22:28:15.520 回答
0

你可以像这样验证用户名和密码

<?php
require 'connect.inc.php';

$usr = $_GET['usr'];
$pwd = $_GET['pwd'];
$table_name = 'user';
$query = "SELECT * FROM $table_name where username = '$usr' and password = '#pwd'" ;

$query_run = mysql_query($query);
$rows = mysql_fetch_array($query_run))
if (!isempty($rows)) {
    include ('chatArea.php');
    exit();
} else {
    include_once ('log.html');            
}       
?> 
于 2013-06-15T13:55:55.837 回答