2016-11-17 17 views
2

誰かが私を助けることができるかどうかわかりません。私はデータベーステーブルからセッション変数を設定しようとしています。基本的に私がする必要があるのは、誰かがログインしたときに、ログインしたユーザーのユーザーテーブルの 'user_group'列の値をセッション変数に代入するときです。現時点では、ログイン時にユーザーが手動で入力したユーザー名を渡すだけです。セッション変数を設定する

これはlogin.phpの現在のコードです。私は様々なことを試して、ここでヒントを探しましたが、運がなかった。 私も欲しい:あなたは の後mysql_query

$row = mysql_fetch_assoc($res); 

を追加し、

$_SESSION['logged_in'] = $row['user_group'] 

は、EDITセッションにグループを割り当てた場合、何が起こるか

<?php 
 

 
session_start(); 
 

 
$host = "localhost"; 
 
$user = "root"; 
 
$pass = ""; 
 
$db = "california"; 
 

 
mysql_connect($host, $user, $pass); 
 
mysql_select_db($db); 
 

 

 
\t $username = $_POST['name']; 
 
\t $password = md5 ($_POST['password']); 
 
\t // check to make sure both fields are entered 
 
if ($username == '' || $password == '') 
 
{ 
 
header("Location:login-fail.htm"); 
 
} 
 
else 
 
\t $sql = "SELECT * FROM users WHERE name='".$username."' AND password='".$password. 
 
\t "' LIMIT 1"; 
 
\t $res = mysql_query($sql); 
 
\t if (mysql_num_rows($res) == 1) { 
 
\t  $_SESSION['logged_in']= $username; 
 
\t \t header("Location:login-success.htm"); 
 
\t \t exit(); 
 
\t } else { 
 
\t \t header("Location:login-fail.htm"); 
 
\t \t exit(); 
 
\t } 
 

 
?>

+1

'$ username'の代わりに' $ res'の値を割り当てます – Blinkydamo

+0

さらに、mysql関数の代わりにmysqli関数のようなものを使うべきです。 – SaidbakR

+0

何がsємsємが言った、プラス:あなたはいくつかのセキュリティホールを持っています。あなたのコードはSQLインジェクションに広く開かれています - 誰かが ''DROP TABLE users ''というユーザ名を投稿したと想像してください。 ' - ' 'あなたはあなたのパラメータをエスケープする必要があります:パラメータ化されたクエリを使用する - ' md5'はしばらくの間、安全なハッシュではなく、ひび割れる可能性があります - PHPは安全なハッシュを作成する 'password_hash() 'password_verify()'を使ってこれらのハッシュに対してパスワードをテストします。 –

答えて

2

yに通知するmysql_ *関数は廃止予定です。また、MySQLのクエリは、DBからの結果を使用する必要が

+0

それはうまくいった!ご協力いただきありがとうございます。私はちょうどPHPの基礎を学ぶことから始めています。 –

0

SQLインジェクションに対して保護されていません。

//... 
$res = mysql_query($sql); 
while ($row = mysql_fetch_assoc($res)) { 
    $_SESSION['logged_in']= $row['user_group']; 
} 
//... 

EDITは:* mysql_するのではなく、機能をMySQLのPDOを使用してみてください。 http://php.net/manual/en/ref.pdo-mysql.php

関連する問題