2013-09-16 2 views
0

PHP를 사용하여 @ # $와 같은 특수 문자가 포함 된 변수를 세션 및 쿠키에 저장하지만 검색 할 때 특수 문자를 볼 수 없습니다. 저장 세션 및 쿠키 변수에 문자가 포함되어 있습니다. 미리 감사드립니다.세션 및 쿠키 변수가 특수 문자없이 저장됩니다.

     //storing 
         $_SESSION['userid'] = $db_id; 
      $_SESSION['email'] = $db_email; 
      $_SESSION['password'] = $db_pass_str; 
      setcookie("id", $db_id, strtotime('+30 days'), "/", "", "", TRUE); 
      setcookie("email", $db_email, strtotime('+30 days'), "/", "", "", TRUE); 
      setcookie("pass", $db_pass_str, strtotime('+30 days'), "/", "", "", TRUE); 

    //Retreivel 
    if(isset($_SESSION["userid"]) && isset($_SESSION["email"]) && isset($_SESSION["password"])) 
{ 
    $log_id = preg_replace('#[^0-9]#', '', $_SESSION['userid']); 
    $log_email = preg_replace('#[^a-z0-9]#i', '', $_SESSION['email']); 
    $log_password = preg_replace('#[^a-z0-9]#i', '', $_SESSION['password']); 
    // Verify the user`enter code here` 

} 
else if(isset($_COOKIE["id"]) && isset($_COOKIE["email"]) && isset($_COOKIE["pass"])) 
{ 
    $_SESSION['userid'] = $_COOKIE['id']; 
    $_SESSION['email'] = $_COOKIE['email']; 
    $_SESSION['password'] = $_COOKIE['pass']; 
} 

세션 변수를 표시 할 때 저장 한 특수 문자가 표시되지 않습니다. 예 : [email protected]을 저장했지만 조회하면 testexample.com 만 볼 수 있습니다.

+0

당신은이 문제가 발생하는 위치 코드를보기 –

+0

더 설명 할 필요가있다. 이 코드가 실행될 때 샘플 입/출력 값을 알려주십시오. –

+0

안녕하세요, 외계인과 마이크, 코드를 추가했습니다. 미리 도움을 주셔서 감사합니다. – ravikanth

답변

2

원래 문자열을 인코딩하려면 htmlspecialchars를 사용하십시오. 예를 들어 ,

<?php 
$session_variable = "[email protected]#$%@"; 
$new = htmlspecialchars("<?php echo $session_variable; ?>", ENT_QUOTES); 
echo $new; // output: [email protected]#$%@ 
?> 
+0

그래서 내 변수를 세션/쿠키에 저장하기 전에 "htmlspecialchars"메서드를 사용하고 내 변수를 저장해야합니까? – ravikanth

+0

아니요. 세션 변수를 검색하려면이 방법을 사용하십시오. 나는 대답을 바꾸고있다. 확인해 봐. –

+0

고마워요. ronak.I 세션/쿠키를 저장할 때이 방법을 사용했는데 제대로 작동했습니다. 따라서 세션/쿠키를 저장하기 전에는 작동하지 않아야합니다. – ravikanth