2013-10-11 4 views
0
database hs_hr_users 

user_name user_password  is_admin 
admin   qwe123   Yes 
999999   123qwe   No 

здесь у меня есть checklongin для обычного пользователя, и он работает. Но мне нужно, чтобы войти в систему как администратор, используя столбец is_admin = 'Yes'логин как администратор и обычный пользователь

checklogin.php

$host="localhost"; // test local 
$username="ess_las_admin"; // Mysql username 
$password="esslasadmin"; // Mysql password 
$db_name="ess_las_admin"; // Database name 
$tbl_name="hs_hr_users"; // Table name user 
$tbl_name2 ="hs_hr_employee" ; // 
$db = mysql_connect($host, $username, $password); 
$link = mysql_select_db($db_name,$db); 
ob_start(); 

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

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection (more detail about MySQL injection) 
$myusername = stripslashes($myusername); 
$mypassword = md5(stripslashes($mypassword)); 
$myusername = mysql_real_escape_string($myusername); 
$mypassword = mysql_real_escape_string($mypassword); 
$sql="SELECT * FROM $tbl_name a, $tbl_name2 b WHERE a.emp_number=b.emp_number AND a.user_name='$myusername' and a.user_password='$mypassword' 
     AND (
     b.work_station = '14' 
     OR b.work_station = '1' 
     OR b.work_station = '15' 
     OR b.work_station = '16' 
     OR b.work_station = '17' 
     OR b.work_station = '18' 
     OR b.work_station = '19' 
     OR b.work_station = '20' 
     OR b.work_station = '21' 
     OR b.work_station = '22' 
     OR b.work_station = '23' 
     OR b.work_station = '24' 
     OR b.work_station = '25' 
     OR b.work_station = '27' 
     OR b.work_station = '28' 


     )"; 
$result=mysql_query($sql); 
echo $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){ 
session_start(); 
// Register $myusername, $mypassword and redirect to file "login_success.php" 
$_SESSION['user_name_eprofile'] = $myusername; 
$_SESSION['user_password'] = $mypassword; 


//session_register("myusername"); 
//session_register("mypassword"); 
header("location:dashboard.php"); 
} 
else { 
//echo "Wrong Username or Password"; 
header("Location: login.php?error=1"); 
} 

mysql_close($link); 
ob_end_flush(); 
?> 

Все данные для администратора и обычного пользователя находится в той же таблице. Но, колонка is_admin = Yes/No, которые различают оба. Если пользователь будет входить в качестве администратора, пойдет , который является страницей администратора. Если вход в систему как обычный пользователь, пойдет header:location:dashboard.php.

+0

есть ли вопрос? –

+0

'stripslashes' не защищает от SQL-инъекции. Люди обычно предлагали 'addlashes', но это тоже не делает. Вы не должны 'md5' избегать пароля. –

+0

@ Dagon теперь checklogin.php может быть только пользователем обычного пользователя. как сделать checklogin.php можно отличить пользователя от администратора или обычного пользователя? – afifi

ответ

1

Может быть что-то вроде этого:

if($count==1){ 
session_start(); 
// Register $myusername, $mypassword and redirect to file "login_success.php" 
$_SESSION['user_name_eprofile'] = $myusername; 
$_SESSION['user_password'] = $mypassword; 
$row = mysql_fetch_array($result); 
$_SESSION['is_admin'] = $row['is_admin']; 

и делать все, что вы хотите с $_SESSION['is_admin'].

В вашем случае для переадресации:

if ($_SESSION['is_admin']=="Yes") { 
    header("location:admin_search.php"); 
} else { 
    header("location:dashboard.php"); 
} 

Также еще одно предложение, изменить $sql="SELECT * FROM... к $sql="SELECT is_admin FROM...

НО

ПредупреждениеПредупреждение
ФУНКЦИИ mysql_ ARE DEPR ECATED
mysql_* функции устарели от PHP 5.5.0 и будут удалены в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

+0

Я пробовал свой код, я получил эту Неустранимая ошибка: имя функции должно быть строкой в ​​C: \ wamp \ www \ eprofile \ checklogin.php в строке 60. Строка 60 - $ _SESSION ['is_admin'] = $ row (" is_admin "); – afifi

+0

oups .... [] вместо() –

Смежные вопросы