2016-04-19 3 views
-4

私は、招待されたユーザーがマスターリストに対して電子メールの検証を受けると、招待されたユーザーが登録されるサイトを作成しています。他のページは一度ユーザーのマスターリストに対して検証されます。最初は、ユーザーのマスターリストには、招待されたユーザーの電子メールアドレスしかありません。登録すると、ユーザーはファーストネーム(fname)を含む残りの情報を入力します。ユーザーをページに誘導する(PHPとMysQL)

私がこのコードを使って行う必要があるのは、最初の名前がNULLかどうかを確認することです。直接の場合は "registration.html"です。一方、そのユーザにファーストネームが存在する場合、ユーザは「overview.html」に誘導されるべきである。

fnameがNULLであるかXYZユーザーが "overview.html"に関係しているとしても、私のコードは明らかに正しく動作していません。

$query = "SELECT email, fname FROM registration WHERE email='$email'"; 

    if (fname = "NULL") { 
     header('location: registration.html'); 
    } else { 
     header('location: overview.html'); 
    } 

ありがとうございました!

+4

これはかなり間違っています。あなたは決してあなたのクエリを実行しません。 'fname'はおそらく変数でなければならず、したがって' $ 'で始まります。変数は自動的にクエリの実行結果に割り当てられず、コードはSQLインジェクションに対して脆弱です。 – Chris

+2

構文エラー 'if(fname =" NULL "){'欠落した '$'。これは、あなたが遅くて1ドル短くなったことを意味します;) –

+3

また、文字列 'NULL'に照らして' fname'を文字列 "NULL"に設定します。 – Chris

答えて

1

ここにコード全体を貼り付けなかったとします。どのように行を取得しましたか?

私が指摘できることの1つは、PHP = assignmentです。比較演算子==を使いたいと思います。

また、現在の文字列「null」と比較しているので、「NULL」を引用符で囲まないでください。

希望が解決します。

EDIT:$ emailという変数に格納された電子メールと$ dbcに格納されたPDO接続があると仮定して、他のコメントを見てください。

$q = "SELECT email, fname FROM registration WHERE email = ?"; 
$stmt = $dbc->prepare($q); 
$stmt->execute(array($email)); 
if($stmt->rowCount() == 1){ //you probably have unique email accounts 
    $row = $stmt->fetch(); 
    if (is_null($row['fname'])) { 
     header('location: registration.html'); 
    } else { 
     header('location: overview.html'); 
    } 
} 
+0

こんにちはIzzy ...次は、ページのコードから接続データを差し引いたコードです: – Jorge

+0

//セッション $ var_value = $ _SESSION ['$ email']; //クエリを選択 $ query = "SELECT email、fname FROM registration WHERE email = '$ email'"; (fname == NULL){ header( 'location:registration.html'); } else { header( 'location:overview.html'); } – Jorge

+0

ありがとう、私は今夜これを試してみます。とても有難い! – Jorge

関連する問題