2017-12-15 9 views
-2

私は電子メールの確認とその作業はほとんどうまくいっているサインアップスクリプトを持っています。 ユーザー情報は、最初にフォームから「temp」テーブルに送信され、電子メールの確認リンクに従うと、情報は「temp」テーブルから「india」テーブル(最終宛先)に移動します。PHPのIFメッセージが印刷されていません

確認リンクは「confirmation.php」というファイルです。

コードはあるテーブルから別のテーブルにデータを送信していますが、「ありがとう、登録が有効になりました」というメッセージが表示されません。何が間違っているのですか?

ありがとうございます!

Confirmation.php

<?php 
include_once ('config.php'); 

$confirm_code = $_GET["confirm_code"]; 

$sql1 = mysqli_query($conn, "SELECT * FROM temp WHERE confirm_code = '$confirm_code'"); 
$result1= mysqli_fetch_array($sql1, MYSQLI_ASSOC); 

if(mysqli_num_rows($sql1) == 1) { 
    $query = mysqli_query($conn, "INSERT INTO india (confirm_code, name, password, email) SELECT confirm_code, name, password, email FROM temp WHERE confirm_code = '$confirm_code'"); 

    if($query) { 
     $del = mysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'"); 
     if($del) { 
      $msg = "Obrigado, o seu registo foi validado."; 
     }  
    } 
} else { 
    $msg2 = "Erro no registo"; 
} 
$conn->close(); 
?> 
+0

で説明したように

もパラメータ化クエリを使用してください。 –

+2

mysqli関数を使用している場合は、変数を不当にダンプするのではなく、セキュリティ上の目的で[パラメータをバインドする](http://php.net/manual/en/mysqli-stmt.bind-param.php)クエリ。 – cteski

+0

メッセージとともに2つの変数を設定しますが、このスクリプトの値は何も表示されません。 –

答えて

0

はこの:(あなたは私が考える印刷する逃したなどの場合の条件にmysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'");

を試してみてください)

if(mysqli_query($conn, "DELETE FROM temp WHERE confirm_code = '$confirm_code'"))` 
{ 
    $msg = "Obrigado, o seu registo foi validado."; 
echo $msg; 
} 
+0

'$ msg'が正しく登録されていない場合、' $ msg'が何かに設定されているので、 'if'文の外側に' $ msg'をエコーする方が良いでしょう。 – MCMXCII

1

あなたはif(mysqli_num_rows($sql1) == 1) {の代わりに結果を使用する必要があります変数:if(mysqli_num_rows($result1) == 1) {。それは、このような読めないのですPHPコードをインデントしてくださいHow can I prevent SQL injection in PHP?

関連する問題