我正在使用後端的登錄頁面創建內容管理網站。用於在多個頁面上進行用戶驗證的Php會話變量
我已經爲內容管理系統的主菜單創建了一個工作登錄頁面。
下圖顯示我的代碼。
第一步 - 用戶訪問內容管理系統主菜單的URL: 代碼如下所示。
<?php
session_start();
echo $_SESSION['valid_user'];
if(!isset($_SESSION['valid_user']))
{
$URL="error.php";
header("Location: $URL");
}
?>
可能發生兩件事情。 1如果他們沒有登錄,他們將被引導到錯誤頁面。 然後他們可以選擇訪問登錄頁面並使用他們的用戶名和pswd登錄。
我已經聲明?php start_session();?在頂部
<?php
$login = $_POST['name'];
$loginpass =$_POST['password'];
if((isset($login)) || (isset($loginpass))){
//echo "<p> form has been submitted</p>";
include("connect.php");
$query = "select * from logins where
username='$login' and pswd=MD5('$loginpass')";
$result = mysql_query($query) or die($query."<br/><br/>".mysql_error());
$count=mysql_num_rows($result);
echo $count;
if($count > 0){
echo "<p>you are logged in as $login please
go to <a href='home2.php'>edt home</a>.</p>";
echo "<p><a href='logout.php'>log out</a> $login?</p>";
$_SESSION['valid_user'] = $login;
}else{
echo "<p>sorry login failed</p>";
}
}else{
//echo "<p> form hasn't been submitted</p>";
//Visitor needs to enter a name and password
echo "<h1>Please Log In</h1> <form method='post' action='index2.php'>";
echo "<p>Username: <input type='text'name='name'></p>";
echo "<p>Password: <input type='password' name='password'></p>";
echo "<p><input type='submit' name='submit' value='Log In'></p></form>";
}
?>
到目前爲止,所有這些功能對我來說都很好。
但是,我想確保如果用戶繞過主頁url並決定直接跳到編輯菜單中的某個部分,他們將被迫登錄,如果他們還沒有,或者,PHP將檢查他們的憑據,如果他們已經登錄。
這是我在頁面頂部的代碼的一個示例我想要我的驗證ont。我不確定在頂部是否已經有數據庫表連接會影響會話變量。
<?php
include("connect.php");
//echo "all good here";
//grab the data from the table 'designs'
$query ="SELECT * FROM designs ORDER BY id";
//send SQL statement to MySQL server
$display = mysql_query($query);
$num = mysql_numrows($display);
mysql_close();
?>
我知道我想要放置PHP腳本的所有檢查「vaild_user」會話變量設置,也給用戶所指向的文件logout.php註銷的能力PHP頁面。我只是不確定如何去做這件事。
對於所有這些,我都很新穎,並且通常在明確的指導下明白,就像大多數人一樣。
任何人都可以提供幫助將不勝感激
再次感謝!
請淨化你的數據庫輸入其他人做任何事情之前:http://roshanbh.com.np/2007/12/sql-injection -attack-examples-and-preventions-in-php.html – span