2012-03-15 7 views
0

$ _GETに問題があり、自分のサイトのオーナーを認証しています。彼のプロフィールのユーザーを正当化する方法は?

<?php 
session_start(); 

include('scripts/db_connect.php'); 

    if(isset($_SESSION['id'])){ 
     $url_auth = $_GET['id']; 

    }else{ 
     echo "no user found"; 
    exit(); 
} 

$sql = "SELECT * FROM table WHERE id='".$url_auth."'"; 
$query = $db->query($sql); 
if($query->num_rows !=1){ 
    header("Location: index.php"); 
    exit(); 

私は$ _GET IDを読み出すに問題がある:ユーザーIDがregistratedされているかどうか、チェックするためにこのコードを使用して

イム。何かが間違っているように見えます、なぜ私は知りません。誰かがブラウザ内の任意のidを呼び出しているときにユーザー登録を確認する別の方法がありますか?ありがとう。

+0

このコードでは、 '$ _GET ['id']'には 'id'というセッション変数がないとチェックされません。それはあなたの意図ですか? – halfer

+0

なぜセッションをチェックするのですか?しかし、$ _GETを使用しますか? –

+0

ところで、あなたはここに大きなセキュリティホール、SQLインジェクションを持っています。代わりにこれを行います: '$ url_auth =(int)$ _GET ['id']'。 – halfer

答えて

1

この方法を試してください。

<?php 
session_start(); 

include('scripts/db_connect.php'); 

$id=mysql_escape_string($_GET['id']); //Sanitized the variable to avoid SQL Injection attacks 

$sql = "SELECT * FROM table WHERE id='".$id."'"; 
$query = $db->query($sql); 
if($query->num_rows !=1){ 
    header("Location: index.php"); 
    exit(); 
} 
else 
{ 
$_SESSION["loggedIn"]="Success"; 
header("authenticationSuccess.php"); 
} 
?> 

今、ユーザーが本物であるかどうかを確認するために、すべての他のページにこの$_SESSION["loggedIn"]="Success"を確認してください。コメントのため

変更:あなたは本当に$_GETに問題があると思われる場合

、これを試してみてください。

+0

こんにちは、お返事ありがとうございます。私はそれを使ってみました。しかし、私はindex.phpに転送されています。私はIDから$ _GETを読み出すのにいくつかの困難を抱えているようです。 – John

+0

ちょうど確認する..あなたのクエリが正しく実行されているかどうかを確認するために値をハードコーディングしてみてはいかがですか? $ sql = SELECT * FROMテーブルWHERE id = whateveryouridis; –

+0

クエリが機能しています。それは正しいidを得る。これは正しい方法でURLに表示されます。 – John

関連する問題