ログインシステムを実装するのに少し問題がありますが、これはユーザーがクッキーを介して再メリットできますが、同時にサイトを使って不正なアクセスを許可しませんセッション作品Remember Me機能を持つログインフォームとlogin_success.php URLへの不正なサイトアクセスPHP
<?php
session_start();
// IF USER NOT REMEMBERED OR NO SESSION THEN THROW HIM OUT TO LOGIN
if (!isset($_SESSION['valid'])|| !isset($_COOKIE['myusername']))
{
header("Location: index.php");
}
$host="localhost"; // Host name
$username="root"; // Mysql username
$password="*****"; // Mysql password
$db_name="secure_login"; // Database name
$tbl_name="users"; // 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");
$sql="SELECT * FROM $tbl_name WHERE username='$myusername'";
$result=mysql_query($sql);
?>
しかし、すぐに私は、ブラウザを閉じて、自分のサイトにそれを再度開くように私は得る:URL
ここではsuccessful_loginための私のコードで私はリダイレクトエラーが出るよう、問題はここにありますリダイレクトループ
ここです私のフォームを処理する電子コード:
<?php
session_start();
//CHECK IF EITHER SESSION OR COOKIE EXISTS THEN REDIRECT TO LOGIN_SUCCESS ELSE CONTINUE TO FORM
function loggedin()
{
if (isset($SESSION['valid']) || isset($_COOKIE['myusername']))
{
$loggedin = TRUE;
return $loggedin;
}
}
if (loggedin())
{
header("Location: login_success.php");
}
// REST OF CODE IS PROCESSED AFTER USER CLICKS SUBMIT ON LOGIN FORM
if(isset($_POST['submit']))
{
$host="localhost"; // Host name
$username="root"; // Mysql username
$password="*****"; // Mysql password
$db_name="secure_login"; // Database name
$tbl_name="users"; // 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");
// username and password sent from form
$myusername=$_POST['username'];
$mypassword=$_POST['password'];
$rememberme=$_POST['rememberme'];
// 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);
$encrypted_mypassword=md5($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
if(mysql_num_rows($result) == 1) //user exists
{
if ($rememberme=="on"){
setcookie("myusername", $myusername, time()+7200);
}
elseif ($rememberme==""){
$_SESSION['valid'] = 1;
}
header('Location: login_success.php');
exit();
}
if($myusername=="[email protected]" && $encrypted_mypassword=="a66d83940f5d22fa54ee51ce"){
header('Location: register.php');
}
else {
echo '<div class="alert">Incorrect Username or Password!</div>';
}
}
?>
ので、基本的にアップラップするために、ユーザーが有効なユーザー名とパスワードを入力し、クリックが私を覚えているとき、私は、ユーザーがブラウザを閉じた場合でも、login_successにリダイレクトするブラウザの好き(すなわち、 COOKIEから私を覚えてください)。すべてのヘルプは大幅
フィリップ・K
あなたの解決策は私のURL認証を壊します。ユーザーがsecure.fixnode.ca/login_success.phpを入力すると、制限されたユーザーエリアに入ることができます。 login_successにIF文を追加したのは、ユーザーがサイトに直接アクセスするのを防ぐためです。これは私の最初の試みは、PHPのログインシステムでは、これはプロダクション用の場合は、私はおそらく使用するだろうsha256 –
私の間違い、あなたのロジックが働いた。私は||を変えた&&と私のサイトには、ユーザーが直接URLを入力することができず、Cookieが正しく保存されます。私の次のステップは、私のハッシングシステムをSHA256に変更することです –
実際には、フォームを処理するコードで、正しく、簡単な方法で作成しました: 'if(isset($ SESSION ['valid'])|| isset($ _ COOKIE [ 'myusername'])) ''(!を使用すると|を使用できます) – drwn