2013-10-10 2 views
0

'name'및 '$ _SESSION 만 사용하여 전자 메일 ($ _COOKIE를 사용하지 않음)을 사용하여 저장 한 변수를 표시하려면 어떻게해야합니까?

$ _COOKIE를 사용하여 작동하지만 실제로 잘 설계되지 않은이 프로그램을 만들었습니다. 나는 단지 배우는 중이다. 하지만 $ _COOKIE 대신 $ _SESSION을 사용하여 데이터를 수집하는 양식을 변환하려고합니다. 내가 한 모든 것은 $ _COOKIE를 $ _SESSION (덜 setcookie 등)으로 대체했습니다. 내 목표는 '기억하기'를 클릭하면 '이름'과 '이메일'을 기억하므로 브라우저를 다시 열 때 '링크'를 직접 클릭하여 다운로드 할 수 있습니다.

<?php 
session_start(); 
    // session 
    if (isset($_POST['remember'])) { 
$customer_name = $_SESSION['name']; 
if (!($customer_name)) { 
$customer_name = $_POST['name']; 
} 
$customer_email = $_SESSION['email']; 
if (!($customer_email)) { 
$customer_email = $_POST['email']; 
} 

//If Form submitted 
//I.e. Email validation that will check if field is empty or doesn't 
//If there is no error 
echo 'Here's the <a href="http://www.google.com/something">link.<br />'; 
//else there's error 

<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Name: 
<?php 
    if (isset($_SESSION['name'])) { 
    echo $_SESSION['name']."<br />"; 
    } 
else { 
?> 
<input type="text" name="name" value="<?php echo $_POST['name']; ?>" size="25" /><br /> 
<?php } ?> 

Email: 
<?php 
    if (isset($_SESSION['email'])) { 
    echo $_SESSION['email']."<br /><br />"; 
    } 
else { 
?> 
<input type="text" name="email" value="<?php echo $_POST['email']; ?>" size="25"/> 
<input type="checkbox" name="remember" /> Remember me 
<input type="submit" name="Submit" /> 
<?php } ?> 


</form> 
+1

세션은 일반적으로 일시적이므로 쿠키를 사용하면 만료 날짜를 먼 미래로 설정할 수 있습니다. – Barmar

+0

무엇이 문제입니까? –

+0

@Barmar $ _SESSION과 $ _COOKIE는 클라이언트쪽에 저장된 데이터 만 전자의 "토큰"이지만 후자는 수집되는 변수의 실제 내용입니다 (예 : $ _COOKIE [ 'name'] = "john "이 클라이언트의 브라우저에 저장 됨). – mythoslife

답변

0

대신 쿠키를 사용하십시오. 예를 들어 이메일과 함께 쿠키를 설정하면 쿠키가 만료 될 때까지 기억됩니다. 세션을 사용하면 서버 구성에 따라 다르지만 일반적으로 낮습니다 (하루 미만). 당신은 $customer_XXX을 설정하지만, 결코 $_SESSION['XXX']을 설정하지하고, 당신의 코드에서

if (isset($_POST['remember'])) { 
    if (!isset($_SESSION['name'])) { 
     $_SESSION['name'] = $_POST['name']; 
    } 
    if (!isset($_SESSION['email'])) { 
     $_SESSION['email'] = $_POST['email']; 
    } 
    $customer_name = $_SESSION['name']; 
    $customer_email = $_SESSION['email']; 
    ... 

을이 시도 P

+0

예 저는 $ _SESSION을해야하기 때문에 그렇게했습니다. – mythoslife

+0

하지만 쿠키가 'remember me'세션에 적합하지 않습니다. 세션은 –

+0

입니다. @Dagon 저는 $ _COOKIE를 $ _SESSION으로 변환 한 개념을 사용하려고 했으므로 그 방식으로 작동시킬 수 있습니다. 두 가지의 차이점은 $ _SESSION이 클라이언트의 브라우저 (서버의 나머지 부분)에 토큰을 저장하지만 $ _COOKIE가 실제로 "콘텐츠"(예 : John, [email protected])를 저장한다는 것입니다. – mythoslife

0

:

어쨌든, 나는 전혀 여기에 질문을 참조니까.

+0

이 두 가지는 다음과 같습니다. $ _SESSION [ 'name'] = $ customer_name; $ _SESSION [ 'email'] = $ customer_email; – mythoslife

+0

업데이트 된 코드를 기반으로 한 새로운 대답입니다. – Barmar