2017-11-26 8 views
-1

「クラス」を再生するページでifステートメントを設定しようとしています。私がチェックしたいのは、行のpathoptionに値が設定されていて、それがホームページにリダイレクトされていて、それに値が設定されていない場合、リダイレクトしないことです。現在、私はユーザとレジスタの "stats"テーブルの両方にユーザ名を設定しています。私が持っている問題は、if文で設定したものにリダイレクトすることです。ここでリダイレクトされている場合、行に値があるかどうかを確認します。

は私のコードです:

//CREATE CONNECTION 
    $conn = new mysqli($dbserver, $dbusername, $dbpassword, $db); 
    $username = $_SESSION['loggedin']; 
// CHECK CONNECTION 
if ($conn->connect_error) 
{ 
    die("Connection Failed: ".$conn->connect_error); 
} 

$query = "SELECT pathoption from stats where username='$username'"; 
$result = mysqli_query($conn, $query); 

if(mysqli_num_rows($result) > 0) 
{ 
    header('location:../../index.php?page=home'); 
} 
+1

pathoptionフィールドに値があるかどうかを確認しないで、ユーザーが統計表に関連付けられたレコードを持っているかどうかだけを確認します。 – Shadow

+0

@Shadow Alright ..ログインしたユーザーのフィールドpathoptionに正しい値が設定されているかどうかを確認するにはどうすればよいですか? – Peterssoen

+0

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'、' $ _GET'、**任意の**ユーザデータを直接クエリーに入れないでください。誰かがあなたのミスを悪用しようとすると非常に危険です。 – tadman

答えて

1

mysqli_num_rowsのみ、結果セットの行数を返します。私はあなたがpathoptionが空であるかどうかをチェックしたいと仮定しています、ここでの例です。

if(mysqli_num_rows($result) > 0) { 

    $row = mysqli_fetch_assoc($result); 

    if (!empty($row['pathoption'])) { 
     header('location:../../index.php?page=home'); 
    } 

} 

注:コードはSQLインジェクションに対して脆弱です。prepared statementsを使用する必要があります。

+0

私が間違っていると私を訂正し、値をホームページにリダイレクトします。行に値がある場合、ホームページにリダイレクトされるようにコードを変更できますか? – Peterssoen

+0

更新しました。 – YouneL

関連する問題