2017-12-08 21 views
0

ユーザーがabc.php?uid = 5のようにシステムにログインしたときに、ユーザーIDをエコーし​​てURL view db structure hereに表示しようとしています私は様々なコードを試しましたが、それを達成することができませんでした。私はログインしたユーザーがログインしたユーザーが、自分のuser_idを使って自分の詳細をフィードビューページに表示するように投稿するときに、下のコードを実行すると、反応がなく、ログインページに固執します。 Pls私は助けが必要です。url(アドレスバー)にログインしたユーザーIDを含めることができません

<?php 
    session_start(); 
    include_once('queryclass.php'); 



    $error = false; 
    if(isset($_POST['btn-login'])){ 
    $username = trim($_POST['username']); 
    $username = htmlspecialchars(strip_tags($username)); 

    $password = trim($_POST['password']); 
    $password = htmlspecialchars(strip_tags($password)); 


    if(empty($username)){ 
    $error = true; 
    $errorUsername = 'Please Input Username'; 
    } 

    if(empty($password)){ 
    $error = true; 
    $errorPassword = 'Please Input Password';  
    }elseif(strlen($password)< 6){ 
    $error = true; 
    $errorPassword = 'Password must be at least six characters'; 
    }  

    if(!$error){ 


     $password = md5($password); 
    $sql = "select * from company where username='$username' "; 
    $result = mysqli_query($conn, $sql); 
    $count = mysqli_num_rows($result); 
    $row = mysqli_fetch_assoc($result); 
    if($count==1 && $row['password'] == $password){ 
     $_SESSION['username'] = $row['username']; 
     function do_user_directory(){ 
     $users = $this->load_all_user_objects(); 
     foreach($users as $user){?> 
     header('location: loggedin.php?uid=<?php echo $user->id;?>');    
     <?php 
     } 
     } 
    }else{ 
     $errorMsg = 'Invalid Username or Password'; 
    } 
    } 

    } 


    ?> 


    This is the queryclass.php 

    <?php 
    require_once('connectdb.php'); 

    function load_user_object($user_id){ 
    global $db; 

    $table = 'users'; 

    $query = " 
       SELECT * FROM $table 
       WHERE ID = $user_id 
      "; 

    $obj = $db->select($query); 
    if(!$obj) { 
     return "No user found"; 
    } 

    return $obj[0]; 

    } 

    function load_all_user_objects(){ 
    global $db; 

    $table = 'users'; 

    $query = " 
       SELECT * FROM $table 

      "; 

    $obj = $db->select($query); 

    if(!$obj) { 
     return "No user found"; 
    } 

    return $obj; 

    } 


    ?> 
+0

ないあなたの質問への答えが、PHPのSQLインジェクションの脆弱性を検索してください。 –

+0

ユーザIDを '$ _SESSION ['uid']'に保存し、 '$ _GET'配列から渡さずにそのデータを操作するのはなぜですか? – num8er

+0

そのプロトタイプ...私があなたが指摘したことをよく知っています。 –

答えて

-1

クエリクラスです。 PHPのクエリステートメントは、= '$のuser_rid' として

0

を単一引用符を使用それではあまりにも$_SESSIONにそのIDを保持してみましょう:

if(!isset($_SESSION['user'])) { 
    header('Location: logout.php'); 
    exit(0); 
} 

// building query to users table (sanitizing Your inputs from sql injections) 
$q = "SELECT ID, username FROM users WHERE "; 
$q.= " username='".mysqli_real_escape_string($conn, $username)."' AND "; 
$q.= " password='".md5($password)."' LIMIT 1"; 

$r = @mysqli_fetch_assoc(@mysqli_query($conn, $q)); 
if(is_array($r) AND !empty($)) { // in case of success $r will keep user array 
    $_SESSION['user'] = $r;  // same as doing $_SESSION['user'] = ['ID' => 1, 'username' => 'somebody']; 
    session_write_close();  // closing session (commiting changes) 
    header('Location: loggedin.php'); // redirecting user to loggedin.php  
    exit(0);      // preventing php script to go down to not execute other statements below 
} 

とどこかloggedin.php

では次のように守ってやります

認証されたユーザーのIDを取得する:

$user_id = $_SESSION['user']['ID']; 

あなたは、HTML内のどこかでユーザIDをエコーする場合と同じように、たとえば行います

<?php $user_id = $_SESSION['user'] ? $_SESSION['user']['ID'] : 'default'; ?> 
<img src="/uploads/users/<?=$user_id?>.jpg"> 
+0

こんにちは、フィードビューのPHPページでログインしたユーザー情報を取得するためにuser_idを使用する方が好きです。ちょうどTwitterやFacebookのフィードのページのようです。 –

関連する問題