2
내 진단이 다소 모호하면 미안하지만 문제를 진단하기가 다소 힘듭니다. 나는 꽤 표준적인 로그인 시스템과 그 대부분을 잘 작동한다. 오늘 브라우저를 다시 시작할 때 문제가 발생했습니다 ... admin2.php를 방문한 다음 admin1.php로 다시 이동하지 않으면 admin1.php에 로그인되지 않습니다.PHP 로그인 시스템/세션이 처음으로 작동하지 않습니다
그 후에 모든 것이 완벽하게 작동합니다. 로그 아웃하고 다시 로그인 할 수 있습니다. CSS는 이전에 다음은
는admin1.php
<style>
#form_contain {
text-align: center;
}
form {
display: inline-block;
margin: 100px 0 0 !important;
}
label {
display: table-cell !important;
vertical-align: middle;
}
input[type='text'], input[type="password"] {
float: left;
display: table-cell !important;
margin: 0 0 10px;
height: 25px;
width: 260px !important;
}
</style>
<?php
session_start();
include "lib/head.php";
function protect($string)
{
$string = mysql_real_escape_string($string);
return $string;
}
$user = $_SESSION['username'];
if(!$_POST['submit'])
{
if ($_SESSION['logged'] == true) {
include_once("admin_main.php");
}
else {
?>
<div id="form_contain">
<form method="post" action="<?=$_SERVER['PHP_SELF']; ?>">
<label>Username:</label>
<input type="text" name="username" maxlength="16">
<br>
<label>Password:</label>
<input type="password" name="password" maxlength="16">
<br>
<br>
<br>
<input type="submit" name="submit" value="Login" class="btn">
</form>
<p id="alert"></p>
</div>
<?php
}
}
else
{
$user = protect($_POST['username']);
$pass = protect($_POST['password']);
if($user && $pass)
{
$sql="SELECT id,username FROM catalog_users WHERE username='$user' AND password='$pass'";
$query=mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($query) == 1)
{
$row = mysql_fetch_assoc($query); // mysql_fetch_assoc gets the value for each field in the row
$_SESSION['id'] = $row['id']; //creates the first session var
$_SESSION['username'] = $row['username']; // second session var
$_SESSION['logged'] = true;
echo '
<script language="javascript">
window.location = "admin1.php";
</script>";
';
}
else
{
echo '
<script language="javascript">
window.location="admin_wrong.php";
</script>
';
}
}
else
{
echo '
<script language="javascript">
window.location="admin_wrong.php";
</script>
';
}
}
?>
admin2.php
<?php
session_start();
include('lib/head.php');
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true) {
echo "
This is a secured page, welcome <b>".$_SESSION['username']."</b>
<br>
<br>
<a href='admin1.php'>Back</a>
<a href='logout.php'>Logout</a>
";
}
else {
echo "<b>Sorry, you cannot access this page</b>";
}
?>
업데이트 ... 내가 가지고있는 두 개의 파일이 있습니다 내 코드 상단의 <?php session_start()
이 원인 코드 g 문제
고대의'mysql_ *'함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 [prepared statement] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http : //)를 사용해야합니다. php.net/mysqli). 만약 당신이 배울 점이 있다면, 여기 [PDO 관련 튜토리얼] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers). –
도 있습니다. '