2013-08-20 5 views
0

많은 문제가 생겨서 혼란 스러웠습니다. PHP와 MySQL을 사용하여 로그인 화면을 만들고 있습니다. 데이터베이스의 기존 사용자에 대해 사용자 이름과 암호의 유효성을 검사 한 후 세션을 시작하고 로그인 변수 화면에 제공된 사용자 이름에 세션 변수 사용자 이름을 설정합니다. 그것은의 index.php 페이지로 저를 전송하는 경우화면간에 PHP 세션이 지속되지 않습니다.

$username = html($_POST['username']); 
    $password = html($_POST['password']); 

    $result = $pdo->prepare('SELECT * FROM users WHERE username = :username AND password = :password'); 
    $result->bindValue(':username', $username); 
    $result->bindValue(':password', $password); 
    $result->execute(); 

    foreach($result as $user) 
    { 
     $count = $count + 1; 
    } 

    if ($count == 1) 
    { 
       session_start(); 
      $_SESSION['username'] = $username; 
     ` //if I do an echo $_SESSION['username'] it displays the correct user 
      header('Location: .'); 
      exit();` 
    } 

그러나 $_SESSION['username'] 변수는 사라지고 그 이유를 이해하지 않습니다.

나는 다음과 같은 오류 얻을 그러나
<p><a href="view.php">View all tasks</a></p> 
<p><a href="form.php?add">Add your own task</a></p> 

<p>Welcome, <?php echo $_SESSION['username']; ?></p> 

: 모든 조언이 크게들

에게
+1

각 페이지에'session_start()'가 있습니까? 각 페이지에 – Nick

답변

0

을 이해할 수있을 것이다 Notice: Undefined variable: _SESSION in C:\xampp\htdocs\abcabcabc\index.php on line 16

모두에 sesssion_start() 추가 이것은 내가 index.php에에서 사용하는 코드는 사용자 이름을 확인하는 것입니다 세션을 사용하는 스크립트 중

+0

? 나는'session_start()'가 세션을 시작하고 세션 변수를 초기화 할 때 한 번만 필요하다고 생각 했습니까? –

+1

php.net에서 : "session_start()는 세션을 생성하거나 GET 또는 POST 요청을 통해 전달 된 세션 식별자를 기반으로 현재 세션을 다시 시작하거나 쿠키를 통해 전달합니다." – Horen

+0

나는 이것이 나의 문제를 해결했다고 믿는다. 나는 세션 변수를 사용하는 모든 페이지에서 그것을 사용해야한다는 것을 몰랐다. 나는 이것이 세션을 모두 리셋 할 것이라고 생각했다. –

0

index.php 파일의 시작 부분에 session_start();을 사용해야합니다.

0

첫 번째 2 개의 답이 맞습니다. 각 페이지에서 세션을 시작해야합니다. 나는 보통 헤더 파일과 같은 모든 페이지에 "포함 된"파일에 넣기 때문에 생각할 필요가 없습니다.

+0

이것은 조엘 아주 좋은 제안입니다. 각 페이지에 특정 파일을 포함시키기 때문에이 작업을 수행 할 수 있습니다. 이 접근 방식에는 알려진 이점이 있습니까? 아니면 모든 페이지에 추가하는 것을 잊지 않고 "쓰고"잊어 버리기 때문에 사용됩니까? –

+1

거기에 있어야하고 그것을 넣는 논리적 인 장소 인 것처럼 보입니다. 나는 다른 어떤 특별한 이점도 알지 못한다. – Joel

+0

도움에 감사드립니다. –

관련 문제