방금 PHP를 배우기 시작했고, 내 웹 사이트에 PHP와 MySQL을 사용하여 계정 시스템을 작성했습니다. 나는 SQL 물건이 잘 작동하는 것을 알고, 문제는 내 PHP 세션입니다.내 세션 기반 로그인 시스템이 작동하지 않는 이유는 무엇입니까?
테스트 할 때 로그인을 시도 할 수 있으며 실패합니다. 그런 다음 다시 로그인을 시도하면 성공합니다. 그것은 항상 두 번째 로그인 시도에 성공합니다. 파이어 폭스의 첫 번째 시도에서는 성공하지 못했지만 크롬에서는 성공했다. 또한 Chrome에서 몇 번 로그인 한 후 내 사이트의 일부 다른 페이지로 이동하여 세션을 지우는 것처럼 보였습니다. 또는 적어도 그 세션이 다른 페이지에 등록되지 않았습니다. 나는 Firefox에서 그 문제가 없었다. 나는 체크하고, 더블 체크하고, 트리플 체크하고, 모든 페이지는 다른 것보다 먼저 session_start()를 호출하므로 문제가 될 수 없다.
PHP 세션에 대해 충분히 이해하지 못했습니다. 일관되게 작동하지 않기 때문에 말입니다.
게시 후, 나는 IE에서 테스트하고 모든 것이 잘 작동합니다. 첫 번째 시도에서 로그인하면 내가 방문한 페이지가 내 세션을 유지 관리합니다.
<?php
session_start();
//pass info to mysql(servername, username, password)
$connect = mysql_connect ("localhost", "ggstudio", "mtgertai1");
if (!$connect)
{
die ('Failed to connect: ' . mysql_error());
}
mysql_select_db("ggstudio_accountDatabase", $connect);
//capture data sent to page through login
//usernameField and passwordField
$usernameSubmission = $_POST[usernameField];
$passwordSubmission = $_POST[passwordField];
$validAccount = mysql_query("SELECT * FROM userAccounts WHERE userID = '$usernameSubmission' AND userPassword = '$passwordSubmission'");
$row = mysql_fetch_array($validAccount);
if (($row['userID'] == $usernameSubmission)&&($row['userPassword'] == $passwordSubmission))
{
/*********************************
**********************************
assign global variables to session
after starting session and then***
redirect to user homepage*********
**********************************
**********************************
*/
//get account number from database
$_SESSION['accountNumber']= $row['accountNumber'];
//get first name from database
$_SESSION['firstName']= $row['firstName'];
//get last name from database
$_SESSION['lastName']= $row['lastName'];
//save username into session
$_SESSION['username']= $row['userID'];
//save password into session (only really useful if user wants to change password)
$_SESSION['userPassword']= $row['userPassword'];
//get user's email address from database
$_SESSION['userEmail']= $row['userEmail'];
//get GP from database
$_SESSION['gpoints']= $row['userGloryPoints'];
//get user join date from database
$_SESSION['userJoinDate']= $row['userJoinDate'];
//get user rank
$_SESSION['userRank']= $row['userRank'];
header('Location: http://www.glorygamer.com/account_home.php');
}
else
{
$loginFailed= TRUE;
setcookie("incorrectLogin", $loginFailed, time()+20);
header('Location: http://www.glorygamer.com/shibboleth.php');
}
?>
여기를 돕기 위해 로그인을 처리하는 PHP 코드가 필요합니다. – tobyodavies
문제를 도와 드릴 수 있도록 샘플 코드를 게시하십시오. – Prix
고맙습니다. 내가 코드없이 설명했다면 명백한 알려진 문제가 있는지 확실하지 않았다. 나는 원래의 질문에 코드를 포함시켰다. – rbusch90