我是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的值taht
<?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页面并将用户名传递给页面
我希望能让我的问题清楚,抱歉我的英语不好
答案 0 :(得分:2)
PDO
代替mysql_*
函数。 mysql_real_escape_string()
来防止SQL注入。 POST
方法代替GET
进行登录操作。 了解SESSIONS
。 Google提供了一个很好的教程,您也可以点这个链接:
Creating a simple login-logout session using 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');
}
答案 1 :(得分: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
除此之外,您不应该从数据库中获取所有行以匹配一个用户,只需在查询中添加WHERE
条件。
您还应该切换到PDO或mysqli和预备语句,因为mysql_*
函数已弃用。
答案 2 :(得分:1)
您需要在表单上使用发布而非获取,因为用户和网址中的密码存在很大的安全风险。
$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');
}
}
答案 3 :(得分: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');
}
?>