2016-11-27 10 views
0

でユーザーIDを保存することはできませんデータベース。私はそれをすべてに非常に新しいんだと、私は非常にラフなログインページを持って、親切にしてください!私は物事の異なる組み合わせの多くを試みたが、私が現在持っているもの、私はオンライン見てきた答え、で行くことはかなり近いはずです。もし誰でも私に何か指針を与えることができれば、大きな助けになるでしょう。ありがとうございました!は、ユーザーが何かを送信したときに、私はに服従するユーザーIDを追加することができるように私には、ログインしているユーザーのユーザーIDを取得し、セッション内に格納しようとしているセッション

ログインページ

<?php 

session_start(); 

//Connection and select database go in here 

// username and password sent from form 
$myusername=$_POST['Email']; 
$mypassword=$_POST['User_Password']; 

// To protect MySQL injection 
$myusername = stripslashes($myusername); 
$mypassword = stripslashes($mypassword); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 

$sql="SELECT User_ID, Email, User_Password FROM $tbl_name WHERE Email='$myusername' and User_Password='$mypassword'"; 
$result=mysql_query($sql); 

// Mysql_num_row counts table row 
$count=mysql_num_rows($result); 

// If result matched $myusername and $mypassword, table row must be 1 row 
if($count==1){ 

// is_auth to make sure they can view other pages that need credentials. 
$_SESSION['is_auth'] = true; 
$_SESSION['User_ID'] = $result->User_ID; 

// Once the sessions variables have been set, redirect them to the landing page/home page. 
header('location: ../View/main.php'); 
exit; 
} 

else { 
$error = "Please enter an email and password to login."; 
} 
header("location:../View/mainUnauthenticated.php"); 

ユーザーが認証されているかどうかを確認するページ。私はこれは私が、私は(私が思っていた!)格納されたユーザIDをつかむことができるようにしたいページのいずれかからの抜粋であるすべての関連ページ

<?php 

    session_start(); 
echo $_SESSION['User_ID']; 

// Test the session to see if is_auth flag was set (meaning they logged in successfully) 

// If test fails, send the user to homepage and prevent rest of page being shown. 

if (!isset($_SESSION["is_auth"])) { 
header("location: ../View/mainUnauthenticated.php"); 
exit; 
    } 
else if (isset($_REQUEST['logout']) && $_REQUEST['logout'] == "true") { 
// At any time we can logout by sending a "logout" value which will unset the "is_auth" flag. 
// We can also destroy the session if so desired. 
unset($_SESSION['is_auth']); 
session_destroy(); 
// After logout, send them back to homepage 
header("location: ../View/mainUnauthenticated.php"); 
exit; 
} 
?> 

の開始時にこれを呼び出します。今の私は、それが働いて表示するようにテキストフィールドに表示するために取得しようとしています。

<?php include('../Controller/is_auth.php') 

?> 


<p> 
<input type="text" name="User_ID" id="User_ID" value="<?php echo $_SESSION['User_ID'];?>"/> 
</p> 
+1

mysqlを使用しないでください。代わりに 'mysqli'または' PDO'を使用してください。あなたは 'mysql injection'でも広く開いています。 – Nytrix

+0

私は今、仕事にそれを持っていると思います。問題は私のセッションの開始位置でした。私はログインページの一番上に置いていましたが、SQLクエリの後に移動して動作しました!ヘルプとコメントNytrixとFilip Macekに感謝します。 –

答えて

0

まず、古いmysql_queryの代わりにPDOを使用することをお勧めします。私はSQL injectionに安全です。

エラー:変数からの出力を見るための簡単な「デバッグ」機能を作成することをお勧めします。たとえば、ログインスクリプトでは、var $ result-> User_IDを使用します。変数が存在することは確かですか?ここでは、使用することができ、私の簡単なデバッグ機能である:

function debug ($var, $name = "Debug") { 
    echo "<h2>$name</h2><pre>"; 
    var_dump($var); 
    echo "</pre>"; 
} 

は、この機能を使用すると、単にあなたが除いているものを手に入れるかどうかを確認し、問題を発見することができます。

debug($result, "Database output");//or without 2nd parameter 

PS:すべてのコードにいくつかのfunctions.phpを作成してください。一部の機能を変更すると、すべてのファイルを書き換える必要はありません。

関連する問題

 関連する問題