2011-07-06 19 views
0

私は自分のユーザーのPHP電子メールアクティベーションシステムを作成しようとしています。スクリプトを実行すると空白のページが返され、データベースは更新されませんでした。どんな助けもありがとうございます。 activationkeyが初期化されていない定数であり、あなたのコードでIm空白のページをPHPで取得する

<?php 

session_start() 

$host="localhost"; 
$username="root"; 
$password="power1"; 
$db_name="members"; 
$tbl_name="users"; 

$link = mysql_connect($host, $username, $password)or die("cannot connect. Please contact us"); 
mysql_select_db($db_name)or die("cannot select DB. Please contact us"); 

$queryString = $_SERVER['QUERY_STRING']; 

if(isset($_SESSION[$queryString])) { 
    $query = "SELECT * 
       FROM users 
      WHERE email = '$_SESSION[$queryString]'"; 
    $result = mysql_query($query) or die(mysql_error()); 
    while($row = mysql_fetch_array($result)) { 
    if ($queryString == $row[activationkey]) { 
     echo "Congratulations! You have succesfully activated you account. You may now login."; 

     $sql = ("UPDATE users 
       SET activationkey = '' 
       AND status = 'activated' 
       WHERE username = ".$row['username']); 

     if (!mysql_query($sql)) { 
     die('Error: ' . mysql_error()); 
     } 
    } 
    } 
} ?> 
+1

「のerror_reporting(E_ALL)を追加してみてください。ini_set( 『はdisplay_errors』、 'に');"ファイルの先頭に移動して、ページを再度表示したときに返されるエラーを確認します。空白ページを取得する理由は、通常、どこかにエラーがあり、エラー報告がオフになっているためです。 –

+0

'$ _SESSION [$ queryString]'はこれが正しいか、 '$ queryString'を使うつもりですか? – Balanivash

+0

行14に関して私の答えを参照してください – Ryan

答えて

3

は、ここに私のコードです。あなたはおそらくそれが文字列であることを意味しました。

変更この行:これまで

if ($queryString == $row[activationkey]){ 

if ($queryString == $row['activationkey']){ 

そして、あなたは文字列のインデックスではなく、数値のものを経由して$rowの要素にアクセスしているので、あなたにも変更したいと思います:

while($row = mysql_fetch_array($result)){ 

to:

while($row = mysql_fetch_assoc($result)){ 

また、セッションにアクセスしているため、最初に$_SESSIONを参照する前にsession_start()と呼ぶことをお勧めします。

最後に、コードが不正なクエリをデータベースに送信している可能性があります。この行を変更してみてください:

これに
$query = "SELECT * FROM users WHERE email='$_SESSION[$queryString]'"; 

$query = "SELECT * FROM users WHERE email='" . mysql_real_escape_string($_SESSION[$queryString]) . "'"; 
+0

これは問題だけではありません。 –

+0

注意:未定義の変数:14行目のC:¥xampp¥htdocs¥html¥activate.phpの行 – Joe

+0

while($ row = mysql_fetch_array($ result)){ – Joe

1

あなたはおそらくエラーを持っている... PHPは爆破し、あなたがそれについて知っているさせないことで悪名高いです。あなたのコードの先頭にこれを追加して、ファイルを実行してみてください:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

あなたが他のユーザーに利用できるアプリケーションです作るときだけでそれを残していない。..

0

私はラインと考えます$_SESSION[$queryString]$_SESSION['QUERY_STRING']または$queryString

1

あなたのクエリは、セッションを使用している間、SQLを印刷し、クエリ

1

と間違っているかを確認しようとすると、任意の値を返すことはできませんし、すべてのインスタンスを置き換えてみてください、あなたの問題になる可能性がありスクリプトの冒頭に、

<?php 
    session_start(); 

とする必要があります。

私は$のqueryStringを持つ任意の試合を取得していないと思います($ののqueryString == $行[activationkey])

文の場合、実行が

になった場合にのみメッセージが...

を印刷され

0

すべてのdb vals ...

activationkeyは、テーブルのカラムである場合は、1つのより多くの事は、それは[「activationkey」]この$行のような単一または二重引用符でカバーする必要がある

関連する問題