2011-08-15 8 views
0
<?php 
ob_start(); 
$host="localhost"; // Host name 
$username="root"; // Mysql username 
$password=""; // Mysql password 
$db_name="dbname"; // Database name 
$tbl_name="Student"; // Table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

// Define $myusername and $mypassword 
$salt = '~Z`[email protected]#$%I^&*()_-+Q=}]{[\|"><'; 
$myusername = mysql_real_escape_string($_POST['regduser']); 
$mypassword = $_POST['regdpass']; 
$mypassword = hash('sha512', $mypassword.$salt); 

$sql = "SELECT * FROM $tbl_name WHERE regduser = '$myusername' AND regdpass = '$mypassword')"; 
$studentID = $_POST['stuID']; 
$result=mysql_query($sql); 

// Mysql_num_row is counting table row 
$count=mysql_num_rows($result); 
// If result matched $myusername and $mypassword, table row must be 1 row 

if($count=1){ 
// Register $myusername, $mypassword and redirect to file "login_success.php" 
session_register("regduser"); 
session_register("regdpass"); 
header("location:/student.php?stuID=$studentID"); 
} 
else { 
echo "$mypassword<br />"; 
echo "$badpasses<br>"; 
echo "Wrong Username or Password"; 
} 

ob_end_flush(); 
?> 

には、このフィールドの値を取得します。具体的にこのラインでこの変数

header("location:/student.php?stuID=$studentID"); 

上記のコードで任意の値を取得していない$studentIDれるのはなぜ?フィールド名stuIDは、上記のSELECTステートメントで選択されています。この値を$studentIDの値にするにはどうすればよいですか?

ありがとうございました。申し訳ありません、少し新人ならば、私はPHPに新しいです。

答えて

1

あなたが現在(ユーザー入力/ HTTPリクエストから)$ _POSTから「stuIDをのgettin」ているやっている、あなたがユーザーを取得しているだけのように/あなたはそれが含まれている(結果を取得したい

合格 " stuID ')からSQL

の後に$ result = mysql_query($ sql);

$sql = "SELECT * FROM $tbl_name WHERE regduser = '$myusername' AND regdpass = '$mypassword')"; 
$result=mysql_query($sql); 
$user = mysql_fetch_array($result); 

if($user){ // login success 
    $studentID = $user['stuID']; 
.... 
2

代わり==$countの値をチェックし、あなたが値代入されます。

header("Location")呼び出しは、HTTPの仕様に準拠することも

// This... 
if($count=1){ 

// Should be... 
if($count == 1){ 

注意することは、完全なURLでなければなりません

header("Location: http://www.example.com/student.php?stuID=$studentID"); 
// Also, you must call exit() right after to prevent further execution of your script 
exit(); 

最後に、regdusermysql_real_escape_string()と電話しましたが、$myusername$mypasswordでも電話する必要があります。

+0

$sql = "SELECT * FROM $tbl_name WHERE regduser = '$myusername' AND regdpass = '$mypassword')"; $studentID = $_POST['stuID']; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count=1){ 

まあマダラ:この

変更! +1 –

0

あなたは決してデータベースクエリの結果を使用していません!特に、ライン

$studentID = $_POST['stuID']; 

ない、データベースから値を取得のではなく、HTTPのPOSTパラメータからです。あなたは、いくつかの点でmysql_fetch_assocまたはそのような何かを使用する必要があります。

$qures = mysql_fetch_assoc($result); 
$studentID = $qures["stuID"]; 

(これは単に概念的であるあなたが最初の結果の数のチェックを行い、結果があることを確認してください。)

関連する問題