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は、サーバー上の2本のページの間で動作します。したがって、ユーザーを確認する別の方法に従う必要があります。 1.まず、ユーザーテーブルに列を作成する必要があります。 (「確認済み」である可能性があります)。 2.ユーザーの電子メールに電子メールを送信する前に、一時変数を宣言できます。 ex。 $ status = rand(0,9999); 3.変数値を検証列に更新します。 4.クリックするURLの最後に変数を追加します。 ex。 http://domain.com/verifyemail/email-here-as-encrypted/ $ status 5.電子メールと$ statusの値が同じ行に存在するかどうかを確認します。 6.一致した場合は、あなたのメッセージを「電子メールで確認済み」と表示します。 7.それ以外の場合は「Can not verified」と表示されます。

お試しください。世話をする。

//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が同じである必要があります。

関連する問題