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>

そして、これはhtmlから来る値をチェックする私のphpファイルです

<?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');            
        }       
?> 

今私が欲しいのは、新しいphpページを開いてユーザー名をページに渡すときです。問題が明確になることを願っています。英語が下手で申し訳ありませif ($rows['username'] == $usr and $rows['password'] == $pwd)true

4

4 に答える 4

2
  1. PDO関数の代わりに使用しmysql_*ます。
  2. 変数を sql クエリに入れる前に、mysql_real_escape_string()SQL インジェクションを防ぐために使用します。
  3. ログイン アクションPOSTの代わりにメソッドを使用します。GET
  4. について学びSESSIONSます。Google で適切なチュートリアルを参照するか、次のリンクをたどることができます: 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

URL のユーザーとパスワードは大きなセキュリティ リスクであるため、 get on formの代わりにpostを使用する必要があります。

    $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 に答える
1

あなたの質問に答えるには、セッションを使用して、一度だけ認証する必要があり、ユーザーがログインしていることを後続のページでチェックできるようにする必要があります。必要なときにいつでも使用できるようにユーザー名を保存します。次に、のheader代わりにリダイレクトを使用しincludeます。

login.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

それとは別に、データベースからすべての行を 1 人のユーザーに一致させる必要はありませんWHERE。クエリに条件を追加するだけです。

mysql_*関数は非推奨であるため、PDO または mysqli とプリペアド ステートメントにも切り替える必要があります。

于 2013-06-14T22:24:21.467 に答える