2013-03-21 1 views
0

내 홈 페이지에는 사용자 이름과 암호 용 입력 상자 두 개가 있습니다. 나는 이러한 자격 증명을 확인하고 액세스를 허용하거나 거부하기 위해 데이터베이스를 검사 할 PHP 파일이 있습니다. 사용자가 액세스 할 때 내 화면에 표시하려면 다음과 같이 로그인 : "홈 페이지에 로그인 할 때 입력 한 사용자 이름"....다음 페이지에서 사용자가 입력 한 사용자 이름을 PHP로 표시하는 방법

여기 내 데이터베이스에서 허용하도록 검사하는 코드입니다. 또는 액세스를 거부합니다. 내가 이름을 표시하려고 여기 어디에

<?php 

$host="localhost"; // Host name 
$username="********"; // Mysql username 
$password="********"; // Mysql password 
$db_name="db?K1012904"; // Database name 
$tbl_name="AdminUser"; // 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['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_register("myusername"); 
session_register("mypassword"); 
header("location:loginsuccess.php"); 
} 
else { 
echo "Wrong Username or Password"; 
} 
?> 

 <p class="navbar-text pull-right"> 
    Logged in as: <?php echo $myusername ?> </p> 

내 문제는 내가를 표시하는 것 질수 있다는 것입니다 사용자가 자격 증명을

<form name="form1" class="navbar-form pull-right" method="post" action="checklogin.php"> 
      <input name="myusername" type="text" id="myusername" placeholder="Email"> 
      <input name="mypassword" id="mypassword" class="span2" type="text" placeholder="Password"> 
      <button type="submit" name="submit"class="btn">Sign in</button> 
     </form> 

를 입력 곳이며, 여기 사용자가 입력 한 사용자 이름,이 아이디어를 얻는 방법에 대한 아이디어가 있습니까? 다른 클라이언트 정보를 찾기 위해, 후속 페이지에

$_SESSION['user_id'] = // whatever the logged in user's id ends up being. 

그런 다음 USER_ID를 당겨, 데이터베이스에 선택을 실행

+1

'$ _SESSION [과 로그 아웃에 세션 VAR을 파괴하는 것을 잊지 마세요 'myusername'] ' – DiMono

답변

1

당신은 단지 세션에서 USER_ID를 저장, 데이터베이스에 저장된 사용자 이름을 . 데이터베이스는 "로그인 한"데이터베이스 ID 식별자를 제외하고 $ _SESSION이 아닌 사용자 데이터의 표준 소스 여야합니다. 그렇지 않으면 문제가 발생합니다.

mysql_query는 구식이기 때문에 스토어드 프로 시저와 PDO bound queries을 살펴보고 싶습니다. &은 추천되지 않습니다. 마찬가지로 stripslashes()는 나쁜 기호입니다. 아, 평문 암호를 사용하고 있습니다.

전체적으로 로그인 보안 시스템을 직접 작성하고 모든 사람이 가지고있는 표준 문제를 다시 검토하기를 원하십니까? 대신,이 에 대한 오픈 소스 인증 프로젝트의 해결책을 찾아보십시오. 문제가 반복적으로 해결되었습니다. 여기에 php authentication on github with 867 results에 대한 검색이 시작됩니다. 경험이없는 보안 사용자에게는 권장하지 않는 방법으로 자신의 검색을 시작하십시오.

은 참조 : http://pear.php.net/packages.php?catpid=1 배 인증 클래스 https://github.com/Kausheel/Authentication Github에서 인증 저장소를 PHP 5.3에서 사용되지 않는 등 세션 코드가 전혀 작동하지 않을 수 있습니다 PHP 5.4에서 제거

1

session_register에서 어린이 침대 수 있습니다.

당신은 세션을 사용하는 모든 페이지의 상단에 session_start();을 넣어처럼 변수를 지정해야합니다 :

$_SESSION['myusername'] = $myusername; 

당신은 다음처럼 액세스 할 수 있습니다 세션이 있었다 페이지에

echo $_SESSION['myusername']; 

시작되었습니다.

0

당신은

session_register(); 
0

이되지 않습니다하지만 여전히 작동합니다 사용하는 방법 중 몇 가지 전에

session_start(); 

을 넣어해야합니다.

사용자 이름을 저장하는 myusername이라는 세션 변수를 설정하고 있습니다. 따라서 현재 사용자 이름을 에코하려는 페이지에서 $ _SESSION [ 'myusername'] 변수를 반향시키고 싶을 것입니다. 예를

<p class="navbar-text pull-right"> 
Logged in as: <?php echo $_SESSION['myusername']; ?> </p> 

내가 틀릴 수도 있지만, 나는이 확인 될 것입니다 확신에 대한

.

+0

내 코드에이 코드를 추가했지만 사용자가 입력 한 내용이 표시되지 않습니다. – Jay240692

+0

나는 session_register 함수의 사용이 실제로 삭제되었다고 생각한다. 귀하의 코드에서 변경 : 'session_register ("myusername"); session_register ("mypassword");' to : '$ _SESSION [ 'myusername'] = $ _POST [ 'myusername']]; $ _SESSION [ 'mypassword'] = $ _POST [ 'mypassword']; ' 그런 다음 사용해보십시오. php 태그를 열고 바로 페이지 상단에 session_start()를 추가했는지 확인하십시오. – Ben

+0

나는이 일을했지만 여전히 불행히도 성공을 거두지 못했습니다. – Jay240692

0

당신은 당신이

session_start(); 
... 
$_SESSION['user_name'] = $user_name; $_SESSION['user_id'] = $user_id; 

으로 로그인 바로 그 때 세션 VAR에 데이터를 저장할 수 있지만 로 세션()

관련 문제