0

여기 Gmail을 통해 이메일 확인을하고 있습니다. 확인 링크를 클릭하면 의도 한 페이지로 리디렉션되지만 플래시 데이터를 유지 관리하지 못합니다. 누군가가 클릭을 클릭하면 페이지가 이동하고 확인 후에 사용자에게 "귀하의 이메일에 확인되었습니다. " Gmail에서 페이지 리디렉션 후 플래시 데이터를 유지하는 방법을 알아야합니다.이메일 확인을 위해 gmail에서 리디렉션 한 후 플래시 데이터를 유지하는 방법

public function sendMail() 
{ 
    $this->session->keep_flashdata('message'); 

$data=$this->uri->segment(2); 
if($this->home_model->email_verify($data)){ 
    $this->session->set_flashdata('message','Your Email address has been confirmed'); 
    redirect('home/login','refresh'); 
} 
else 
{ 
    $this->session->set_flashdata('message','Something Went wrong'); 
    redirect('home/login','refresh'); 
} 

}

답변

0

Flashdata은 서버에 두 페이지 사이에서 작동합니다. 따라서 사용자를 확인하는 다른 방법을 따라야합니다. 1. 먼저 사용자 테이블에 열을 만들어야합니다. ('확인'될 수 있음). 2. 전자 메일을 사용자에게 전자 메일로 보내기 전에 임시 변수를 선언 할 수 있습니다. 예. $ status = rand (0,9999); 3. 변수 값을 확인 된 열로 업데이트하십시오. 4. 클릭 URL 끝에 변수를 연결하십시오. 예. http://domain.com/verifyemail/email-here-as-encrypted/ $ status 5. 전자 메일과 $ 상태 값이 같은 행에 있는지 확인하십시오. 6. 일치하는 경우 "전자 메일 확인 됨"메시지가 표시됩니다. 7. 그렇지 않으면 "확인할 수 없음"이 표시됩니다.

시도하고 알려주십시오. 조심해.

//Data to match 
$dbverified = //Get the database verified column value 
$urlstatus = //url value you sent with email same as database data you update. 

//Email to match 
$urlemail = //decode url email 
$dbemail = //Get user email from db 

if($$dbverified == $urlstatus && $urlemail == $dbemail){ 
    echo 'E-mail verified'; 
}else{ 
    echo 'E-mail cannot be verified'; 
} 
+0

의견을 보내 주셔서 감사합니다. 다 잘 작동하지만 문제는 4 단계에서 언급 한 링크를 클릭 할 때마다입니다. 메시지가 표시되지 않습니다. 세션 플래시를 사용하여 메시지를 표시하고 있습니다. –

+0

목적으로 사용할 세션이 없습니다. 디코딩 된 전자 메일과 데이터베이스로 업데이트 한 값을 URL로 보내면 verifyemail.php 페이지의 코드에서와 같이하십시오. –

0

세션이 작동하지 않는 경우 URL을 변경

같은 경우 https://example.com-http://example.com로 URL을 변경. 플래시 데이터가 작동하지 않습니다. 리디렉션을 수행 할 때 URL이 동일해야합니다.