Ich habe ein Login-Formular in PHP erstellt, das funktioniert ok, aber ich habe festgestellt, dass meine Seite, auf die mein Benutzer gerichtet ist, auch für jeden zugänglich ist. Wie kann ich die Seiten schützen, damit sie nur für diejenigen zugänglich sind, die auf der Website angemeldet sind?Anmeldeformular und geschützte Seiten nur für eingeloggte Benutzer?
Muss ich ein Skript auf der Erfolgsseite selbst platzieren?
Ich habe schon ein paar verschiedene Dinge ausprobiert, bin mir aber nicht sicher, was los ist. Hier ist was ich bisher habe!
checking_login.php
<?php
ob_start();
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name=""; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['username'] = $myusername;
$_SESSION['password'] = $mypassword;
header("location: portkey.php");
}
else {
echo "Wrong Username or Password. ";
}
ob_end_flush();
?>
Dies ist die Seite Teil, wo ich sprach über die Seite zu umgeleitet werden. (Es ist immer noch öffentlich für alle).
<?php
session_start();
$host=""; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name=""; // Database name
$tbl_name="members"; // Table name
session_start();
if(!isset($_SESSION['myusername'])) {
header("location:login.php");
}
?>
Login ist die Seite mit dem Formular. Die Tabelle/Benutzer.
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<form name="form1" method="post" action="checking.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1">
<tr>
</tr>
<tr>
<td width="78">Username</td>
<td width="0">:</td>
<td width="294"><input name="myusername" type="text" id="myusername"></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input name="mypassword" type="text" id="mypassword"></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
den zweiten Anruf 'session_start()' in Ihrer geschützten Seite entfernen – Dale
Sie auf going live mit nicht sind zu wollen, sind Sie? –