2017-09-25 20 views
-1

私は完全に送信されたメールでユーザーを確認しようとしていますが、リンクをクリックすると「挿入されていません」と表示されます。これは明らかに私が挿入領域に何か間違って書いたからですが、私はそれが何である可能性はよく分かりません。ここに私のスクリプトは次のとおりです。検証が機能しない

<?php 
session_start(); 
require 'connect.inc.php'; 


$Username = $_GET['usr']; 
$Code = $_GET['verify']; 
$One = '1'; 

$sql = "SELECT Username, `VerficationCode`, `Verified` FROM user WHERE `Username`='$Username'"; 
$result = $con->query($sql); 

if ($result->num_rows > 0) { 

    while($row = $result->fetch_assoc()) { 

     $ActualCode = $row['VerficationCode']; 

     if ($Code == $ActualCode) { 

      $confirm = "INSERT INTO user (VerficationCode) VALUES ('$One') WHERE `Username` = '$Username'"; 
      if(!mysqli_query($con,$confirm)){ 
       $_SESSION['failed'] = 'Oops! Something went wrong. Please try again.'; 
       echo 'not inserting.'; 
      } else { 
       header ('Location: home.php'); 
       $_SESSION['verified'] = 'Successfully verified.'; 
      } 
     } else { 

      $_SESSION['verified'] = 'Unsuccessfully verified.'; 
      header ('Location: index.php'); 
      echo 'unsuccessful'; 
     } 
    } 
} else { 
    $_SESSION['failed'] = 'Oops! Something went wrong. Please try again.'; 
    header ('failed.php'); 
} 


?> 

そして、ここでは私のconnect.inc.phpスクリプトです:

<?php 

$con = mysqli_connect("localhost", "root", "", "users"); 

?> 

編集:http://********.com/home.php?verify=friendov59c806e6bfc57TimerHotel20001&usr=TimerHotel

+0

WHERE Username = '$ Username''では、挿入の際に 'where'を使うことはできません。これはSQLインジェクションにもオープンで、パラメータ化されています。 – chris85

+0

insert文で 'where'を使用していますが、動作しません。既存の行を更新しようとしているのか、新しい行を挿入しようとしていますか? – coderodour

+0

あなたのコードはSQLインジェクション攻撃に対して脆弱です。パラメーター化された照会とプリペアドステートメントを使用して、悪意のある入力値を使用して攻撃者がデータベースを侵害しないようにする必要があります。 http://bobby-tables.comでは、PHP/mysqliを使用して質問を安全に書く方法のいくつかの例と、リスクの説明を示します。 unsanitisedデータをSQLに直接挿入しないでください。 – ADyson

答えて

0

代わりの

:これは、検証のリンクは次のようになります
"INSERT INTO user (VerficationCode) VALUES ('$One') WHERE `Username` = '$Username'" 

使用

"UPDATE user SET `VerficationCode`='$One' WHERE `Username` = '$Username'" 
+0

しかし、 'mysql_real_escape_string'を使わないでvarialblesを使うのは危険です(http://php.net/manual/en/function.mysql-real-escape-string.phpを参照) –

+0

ありがとう!できます。私は最近、PHPに入ってきました。私は進歩に先んじてやり遂げていますが、結局のところ私はそのように早く学びます。それが私がやる理由です。ちょうどfyi:P – Idk