2016-09-04 4 views
0

사용자가 등록하고 로그인 할 수있는 index.php 페이지가 있습니다. 사용자가 로그인하면 Welcome Admin을 표시하고 싶습니다. 세션이 null이라는 것을 알고 $_SESSION이 null이 될 수 있습니까? 세션은 항상 null을 반환합니다.

<?php 

session_start(); 

try { 
    $db = new PDO("mysql:host=127.0.0.1; dbname=blog", "root", ""); 
} catch (PDOException $ex) { 
    echo $ex->getMessage(); 
} 

$v = $db->prepare("select * from uyeler where uye_sifre=? and uye_ad=?"); 
var_dump($v); 
if ($_POST) { 

    $isim = $_POST["isim"]; 
    $sifre = $_POST["sifre"]; 

    $v->execute(array($sifre, $isim)); 
    $x = $v->fetchAll(PDO::FETCH_ASSOC); 
    $d = $v->rowCount(); 


    if ($d) { 
     $_SESSION["ad"] = $x["uye_ad"]; 
     $_SESSION["sife"] = $x["uye_sifre"]; 
     $_SESSION["durum"] = $x["uye_durum"]; 
     echo "Giriş başarılı"; 
    } else { 
     echo "Geçersiz Kullanıcı"; 
    } 

} else { 
    if ($_SESSION) { 
     var_dump($_SESSION); 
     echo "adam üye"; 
    } else { 

     echo '<form action="" method="post"> 


    <table cellpadding="5" cellspacing="5"> 
     <tr> 
      <td>Uye Ad</td> 
      <td><input type="text" name="isim" id=""></td> 
     </tr> 

     <tr> 
      <td>Uye Şifre</td> 
      <td><input type="password" name="sifre" id=""></td> 
     </tr> 
     <tr> 

      <td><input type="submit" id=""></td> 
     </tr> 

    </table> 
</form>'; 
    } 
} 
?> 

는 위해서 var_dump 출력

wamp64\www\indeks.php:12: 
object(PDOStatement)[2] 
    public 'queryString' => string 'select * from uyeler where uye_sifre=? and uye_ad=?' (length=51) 
C:\wamp64\www\indeks.php:34: 
array (size=3) 
    'ad' => null 
    'sife' => null 
    'durum' => null 
+0

어떤 오류가 당신이 얻을 않았다 그래서이 라인이에

$_SESSION["ad"] = $x["uye_ad"]; $_SESSION["sife"] = $x["uye_sifre"]; $_SESSION["durum"] = $x["uye_durum"]; 

해결 ? '$ _SESSION' 배열은'session_start()'가 사용되기 전에 호출되지 않았거나 헤더가 설정되기 전에 출력이 시작된 결과로서 실패한 경우에만 null입니다. 두 경우 모두 PHP는 확실히 당신에게 문제를 디버깅하기 위해 알아야 할 모든 것을 알려주는 상세한 오류를 줄 것입니다. 오류 정보를 공유하면 정보를 좁힐 수 있습니다. – Sherif

+0

주제를 업데이트했습니다. –

+1

오류가 세션이 아니므로 귀하의 질문이 반환됩니다! – Provie9

답변

0
  1. 을 어떤 쿼리를보고 수동으로 쿼리를 실행 보고.
  2. fetchAll은 다차원 배열을 반환합니다.

    $_SESSION["ad"] = $x[0]["uye_ad"]; 
    $_SESSION["sife"] = $x[0]["uye_sifre"]; 
    $_SESSION["durum"] = $x[0]["uye_durum"]; 
    

    $x는 다차원 적이며, 다음과 같습니다 : 당신이 당신의 오류 로그를 확인하면

    $x = array(
    array('uye_ad'=>'any value', 'uye_sifre'=>'any value2', 'uye_durum'=>'any value3',) 
    ); 
    
+0

어떻게 작동합니까? –

+0

이 줄에서'$ x = $ v-> fetchAll (PDO :: FETCH_ASSOC);'$ x는 다차원 배열입니다. 이 배열은 다음과 같이 구성됩니다 : 'array ('uye_s'=> '모든 값', 'uye_durum'=> '모든 값 3')) –

0

입니다이 시도 :

추가 정보를 위해
$v = $db->prepare("select * from uyeler where uye_sifre=:sifre and uye_ad=:isim"); 
$v->bindParam(':sifre', $sifre, PDO::PARAM_INT); 
$v->bindParam(':isim', $isim, PDO::PARAM_INT); 

$v->execute(); 

, 조회 PHP Docs

+0

나에게이 출력을 준다 치명적인 오류 : 정의되지 않은 메서드를 호출합니다. –

+0

에서 PDOStatement :: bind_param()을 업데이트했습니다. 지금 해봐? – Haring10

관련 문제