1

ユーザーが送信したメールを開いたときにセッション変数を作成しようとしています。すべてが2つの.phpファイルで行われます。(mailer.phpおよびregister.php)

mailer.phpは、ユーザーのすべての情報を取得し、URLが記載された電子メールをregister.phpページに送信します。

mailer.phpからregister.phpにセッション変数(User_id)を取得したいと思います。mailer.phpから送信するメールに次のように記載しました。私はそれがうまくいくとは思えませんが、それは私が必要としているものを示しています。

`$ message =$Url。"php session_start();'$ _SESSION[id]'="。$row['user_id']。"?>";
..。
$ mail-> MsgHTML($ message);
$ mail-> Send(); `

そして、登録ページで

`$ userID = $ _SESSION ['id'];`

4

2 に答える 2

2

変数内に関数をアタッチすることはできません...代わりに、検証コードを格納する新しいテーブルを作成するだけで、

function genRandomString() {
    $length = 10;
    $characters = ’0123456789abcdefghijklmnopqrstuvwxyz’;
    $string = ”;    
    for ($p = 0; $p < $length; $p++) {
        $string .= $characters[mt_rand(0, strlen($characters))];
    }
    return $string;
}
$code = genRandomString();
$message = "http://localhost/start_session.php?verify=$code";
$mail->MsgHTML($message);
if($mail->Send()){
    echo 'Message Sent';
    // Then execute a query to insert the generated code to your database
}

ユーザーがメールを開いてリンクをクリックすると、確認ページに移動します。

Match the verification code in the database using get variable and if found, start the session otherwise no session 
$code = mysql_real_escape_string($_GET['verify'];
$query = mysql_query("SELECT * FROM verifications WHERE verification_code=$code");
$rows = mysql_num_rows($query);
if($rows > 0){
    session_start();
    session_regenerate_id();
}
于 2012-07-26T03:22:16.037 に答える
0

まず、php はコードを 1 回実行します。それがページの読み込み時です。

そうは言っても、あなたの質問が間違っていたら訂正してください。誰かがメールを開いたときに取得できるようにしたい ID を含むメールを送信しますか? メールから取得するには、正規表現または単純な文字列 substr ( string $string , int $start [, int $length ] ) をお勧めします。

メールを生のテキストとして受け取った場合 (通常の状況ではそうなります)、そのまま取得してください。

メール例:
「Hello12ID:5 私の名前は…」

少し前まではこのように文字列を扱っていましたが、これで終わりです。

$id = substr($email, strpos($email,'ID:'), strpos($email, ' ', strpos($email,'ID')));
if (is_numeric ($id)) echo '失敗しました: '.$id.' 数値ではありません'; 出口;

それが行うことは、「ID」とその後のスペースの間にあるものを返すことです。私の場合は 5 です。したがって、この場合は $id = 5 です。次に、その 5 をセッションに保存するだけです。これは一度に実行することもできますが、事前に問題がないことを確認することをお勧めします。

それがあなたの意図したものであることを願っています。

于 2012-07-26T03:26:57.883 に答える