10/10/2018, 11:15
Rắc rối về Form Login
Mình có tạo 1 trang web .html có form Login; và có trang checkLogin.php. Cho mình hỏi làm sao để khi đăng nhập user và pass bên trang .html, nếu đúng user và pass trong MySQL( mình đã tạo nó rồi), thì nó giữ nguyên trang hiện hành, bỏ đi Form Login và có thêm dòng chữ Welcome 'Username'; còn nếu sai thì báo lỗi(và vẵn còn Form Login). Bạn nào có thể giúp mình được ko. Mình cảm ơn!
Bài liên quan





if ($taikhoan == admin && $matkhau == admin) { header("cp.php"); // link cần đến } else { echo "Wrong password"; }<input name="taikhoan" type="text" size="29">
<input name="matkhau" type="password" size="29">
có name="taikhoan" , name="matkhau" khi ta submit form sẽ chuyển sang checkLogin.php để kiểm tra giá trị nhập này! (action="checkLogin.php")Sau đó file checkLogin.php sẽ làm nhiệm vụ kiểm tra giá trị nhập đó và thực hiện theo cách ta muốn và ngược lại nếu sai...
VD:
file checkLogin.php!
if ($taikhoan == admin && $matkhau == admin) { header("Location: cp.php"); // link cần đến } else { echo "Wrong password"; }"Nếu taikhoan = admin và matkhau = admin thì khi đó chuyển sang trang cp.php và ngược lại nếu sai thì thông báo ra màng hình là wrong password"
Ngoài ra nếu bạn biết thêm session thì vận dụng vào form này sẽ rất hay...
Cách mình là thế bạn nào có khác hay hơn thì post lên cho mọi người cùng tham khảo nhá ...
[=========> Bổ sung bài viết <=========]
OK! Học session bạn ơi... <== cái này mình mới học cách đây 1 ngày,có gì sai xin bạn thứ lỗi!!
__ sửa file html của bạn thành file "index.php"
Thêm vào sau tag <?php code sau:
session_start();
code trên để bắt đầu khởi tạo session !! Sau đó vào trang login cũng làm y như vậy:
<?php
session_start();
================================================== =======================
OK! Vậy file index.php theo mình viết là như vầy...
<?php
session_start();
if (!empty($_SESSION["admin"]))
{
?>
<center>Đăng nhập thành công!!!</center>
<?php
exit();
}
else
{
?>
<form action="login.php" method="POST">
<input type="text" name="taikhoan" size="29">
<input type="password" name="matkhau" size="29">
<input type="SUBMIT" name="SUBMIT" value="SUBMIT" size=6>
</form>
<?php
}
?>
Còn file login.php:
<?php
session_start();
include("dbconnect.php"); //file connect db
$result = mysql_query("select * from tbl_user") or
die (mysql_error());
$row = mysql_fetch_array($result);
if ($taikhoan == $row["username"] && $matkhau == $row["password"])
{
$_SESSION["admin"] = $row["password"];
header("Location: ./");
}
else
{
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
mysql_free_result($result);
?>
Với $row["username"] là cột của id admin (username) còn $row["password"]) là password admin (password)! Nếu đúng u/p thì chuyển về trang chính đồng thời cũng gán thêm session:
$_SESSION["admin"] = $row["password"]; header("Location: ./");<?php session_start(); if (!empty($_SESSION["admin"])) { ?> <center>Đăng nhập thành công!!!</center> <?php exit(); } else { ?> <form action="login.php" method="POST"> <input type="text" name="taikhoan" size="29"> <input type="password" name="matkhau" size="29"> <input type="SUBMIT" name="SUBMIT" value="SUBMIT" size=6> </form> <?php } ?>phủ định (!empty($_SESSION["admin"]) thì xuất ra màng hình "đăng nhập thành công" còn ngược lại thì xuất ra trang đăng nhập...
Nếu muốn logout thì tạo trang logout.php với code sau:
<?php
include("dbconnect");
session_start();
session_destroy();
header("Location: index.php");
?>
Xong! Nếu có gì sai mong các bạn đừng cười!
<?php
$db_host = "localhost"; // Giữ mặc định là localhost
$db_name = "mysite"; // Cần thay đổi..
$db_username = "root"; // Cần thay đổi..
$db_password = "dohoangthien"; // Cần thay đổi..
@mysql_connect("{$db_host}", "{$db_username}", "{$db_password}") or die("Khong the ket noi toi database");
@mysql_select_db("{$db_name}") or die("Khong the chon database");
?>
Bạn kiểm tra dùm mình đi. Mình ko biết lỗi chỗ nào nữa. Mình cảm ơn !
[=========> Bổ sung bài viết <=========]
Àh, còn nữa. Mình làm theo cách này, mình có 3 file này:
1. mysql.php
<?php
$db_host = "localhost"; // Giữ mặc định là localhost
$db_name = "mysite"; // Cần thay đổi..
$db_username = "root"; // Cần thay đổi..
$db_password = "dohoangthien"; // Cần thay đổi..
@mysql_connect("{$db_host}", "{$db_username}", "{$db_password}") or die("Không thể kết nối database");
@mysql_select_db("{$db_name}") or die("Không thể chọn database");
?>
2. Login.php
<?php
// Tải file mysql.php lên
require_once("mysql.php");
if ( $_GET['act'] == "do" )
{
// Dùng hàm addslashes() để tránh SQL injection, dùng hàm md5() để mã hóa password
$username = addslashes( $_POST['username'] );
$password = md5( addslashes( $_POST['password'] ) );
// Lấy thông tin của username đã nhập trong table members
$sql_query = @mysql_query("SELECT id, username, password FROM members WHERE username='{$username}'");
$member = @mysql_fetch_array( $sql_query );
// Nếu username này không tồn tại thì....
if ( @mysql_num_rows( $sql_query ) <= 0 )
{
print "Tên truy nhập không tồn tại. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Nếu username này tồn tại thì tiếp tục kiểm tra mật khẩu
if ( $password != $member['password'] )
{
print "Nhập sai mật khẩu. <a href='javascript:history.go(-1)'>Nhấp vào đây để quay trở lại</a>";
exit;
}
// Khởi động phiên làm việc (session)
session_start();
$_SESSION['user_id'] = $member['id'];
// Thông báo đăng nhập thành công
print "Bạn đã đăng nhập với tài khoản {$member['username']} thành công. <a href='index.php'>Nhấp vào đây để vào trang chủ</a>";
}
else
{
// Form đăng nhập
print <<<EOF
<form action="login.php?act=do" method="post">
Tên truy nhập: <input type="text" name="username" value="">
Mật khẩu: <input type="password" name="password" value="">
<input type="submit" name="submit" value="Đăng nhập">
</form>
EOF;
}
?>
3. index.php ( mình tạo trước Web Template dạng .php, và index.php apply template từ nó, mình đặt đoạn code này trong thẻ <td> của trang template )
<?php
// Tải file mysql.php lên
require_once("mysql.php");
// Khởi động phiên làm việc
session_start();
if ( !$_SESSION['user_id'] )
{
print <<<EOF
Bạn chưa đăng nhập! <a href='login.php'>Nhấp vào đây để đăng nhập</a>
EOF;
}
else
{
$user_id = intval($_SESSION['user_id']);
$sql_query = @mysql_query("SELECT * FROM members WHERE id='{$user_id}'");
$member = @mysql_fetch_array( $sql_query );
print <<<EOF
Bạn đang đăng nhập với tài khoản {$member['username']}.
EOF;
}
?>
Nhưng khi mình chạy index.php thì nó báo
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at F:\Web Sever\AppServ\www\Thien_Website\index.php:5) in F:\Web Sever\AppServ\www\Thien_Website\index.php on line 334
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at F:\Web Sever\AppServ\www\Thien_Website\index.php:5) in F:\Web Sever\AppServ\www\Thien_Website\index.php on line 334
Ngoài ra, khi mình login đúng user và pass thì nó báo đăng nhập thành công, nhưng khi nhấp link để trở lại trang chủ thì nó hiện lại y như ban đầu (Bạn chưa đăng nhập! Nhấp vào đây để đăng nhập). bạn biết cách khắc phục ko?
$matkhau = $_POST["matkhau"];
if ($taikhoan == $row["username"] && $matkhau == $row["password"])
{
$_SESSION["admin"] = $row["password"];
header("Location: ./");
}
else
{
echo "<meta http-equiv='refresh' content='0;url=index.php'>";
}
ở code trên mình gán session khi file login.php vừa kiểm tra password xong mà???
Nếu password và tài khoản phù hợp với database thì chuyển lại trang index đồng thời gán thêm biến session...
$_SESSION["admin"] = $row["password"];
header("Location: ./");
Rồi sau đó file index.php mới kiểm tra session đấy! Nếu session tồn tại, tức lại đăng nhập đúng thì xuất Câu Càho Mừng Đăng Nhập Thành Công còn ngược lại là trả về trang đăng nhập...
bka: mình cũng muốn viết bằng php lắm chứ. Nhưng sao mình ko chèn css và javascript vào trang php được vậy bạn? Bạn chỉ với.
bạn học thêm cách làm việc với google đi
không cài localhost thì không học code được đâu, làm gì cũng thấy khó, thấy nản thì cố gắng học để làm gì