현재 Wamp로 만든 localhost에서 작동하는 웹 사이트에 대한 PHP 기반 로그인을 구축하고 있지만 원격으로 파일을 복사하면 작동하지 않습니다 서버에 설치하고 동일한 데이터베이스를 설정하십시오. 데이터베이스와의 연결은 사이트에 새로운 사용자를 등록 할 수 있고 사이트에서 데이터베이스에서 제거해야 할 모든 것을 보여주기 때문에 괜찮습니다.세션 기반 로그인이 원격 서버에서 작동하지 않습니다
사이트의 로그인 부분에 문제가있는 것은 단순히 아무것도 수행하지 않는다는 것입니다. 나는 로그인을 시도하고 적절한 계정 세부 사항이있는 경우 로그인이 성공적이라고 말하며 테스트 목적을 위해 세션 변수를 에코합니다 (예 : 데이터베이스에 저장된 사용자 ID 표시). 그러나 다른 페이지로 이동하면 사용자가 전혀 로그인하지 않은 것입니다. 나는 문제가 무엇을 참조하는 것이 중요 할 것을 여기에 모든 코드를 나열하려고합니다 :
로그인 양식 :
<form action="submit.php" method="POST" id="loginForm">
<fieldset>
<table id="form_Table">
<tr>
<td><label for="login_Username">Username</label></td>
<td><input type="text" name="login_Username" id="login_Username" class="" /></td>
</tr>
<tr>
<td><label for="login_Password">Password</label></td>
<td><input type="password" name="login_Password" id="login_Password" class="" /></td>
</tr>
</table>
<p class="submit"><input type="submit" name="login_Submit" value="Log in" /></p>
</fieldset>
</form>
submit.php에 로그인 절차를 처리하는 PHP 코드 :
if (isset($_POST['login_Submit'])) {
if (!empty($_POST['login_Username']) && !empty($_POST['login_Password'])) {
$username = mysql_real_escape_string($_POST['login_Username']);
$password = md5(mysql_real_escape_string($_POST['login_Password']));
$sql = "SELECT * FROM `users` WHERE `username` = '$username' AND `password` = '$password'";
$checklogin = mysql_query($sql);
$result = mysql_query($sql);
if($result === FALSE) {
die(mysql_error());
}
if(mysql_num_rows($checklogin) == "1") {
$row = mysql_fetch_array($checklogin);
$group = $row['group'];
$userid = $row['id'];
$cart = array();
$_SESSION['Username'] = $username;
$_SESSION['Group'] = $group;
$_SESSION['UserID'] = $userid;
$_SESSION['LoggedIn'] = 1;
$_SESSION['cart'] = $cart;
echo '<h1>Logged in successfully!</h1>';
//echo '<meta http-equiv="refresh" content="1;index.php">';
echo $_SESSION['Username'];
echo $_SESSION['LoggedIn'];
echo $_SESSION['UserID'];
echo $_SESSION['Group'];
} else {
echo '<h1>Wrong username or password!</h1>';
}
}
}
의 index.php :
<?php
@session_start();
include 'header.php';
?>
connection.php :
<?php
@session_start();
//connect variables are here
mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL connection error: " . mysql_error());
mysql_select_db($dbname) or die("MySQL database error: " . mysql_error());
mysql_query('SET NAMES utf8');
?>
header.php :
<?php include 'connection.php';
@session_start();?>
내 추측은 내가 주어진 페이지를 떠나면 어떤 이유로 사이트가 (필자는 @session_start를 추가 그 이유는, 세션 변수를 유지하지 않는 것이 었습니다)에 여러 페이지가 있지만이 방법으로는 작동하지 않습니다.
나는 지금 무엇을 할 수 있는지에 대한 아이디어가 없어져서 어떤 도움을 주시면 감사하겠습니다. 고맙습니다.
'www'에서 'www가 아닌'페이지로의 리디렉션이 있습니까? 하나의 세션 설정은 다른 세션에 설정되지 않으므로 –
mysql_ 함수는 준비된 문장으로 MySQLi 나 PDO를 조사해야한다. – Fredd
은 inital $ _SESSION 변수를 설정 한 곳을 포함하여 모든 페이지에서 session_start입니까? session_start 앞에 @를 제거해보십시오. 어떤 오류가 있습니까? – Fredd