2014-02-15 3 views
-1

1. Как я могу войти в ту же форму для администратора и пользователя?как войти в ту же форму для администратора и пользователя

Вот мой код

<?php 
include('config.php'); 
session_start(); 
if($_SERVER["REQUEST_METHOD"] == "POST"){ 
$email=$_POST['email']; 
$password=$_POST['password']; 
$salt = sha1(md5($password)); 
$password = md5($password.$salt); 
$sql="SELECT email FROM registered_members WHERE email='$email' and password='$password'"; 
$result=mysql_query($sql); 
$row=mysql_fetch_array($result); 
$active=$row['active'];    
$count=mysql_num_rows($result); 
$sql1="SELECT email,password FROM admin WHERE email='$email' and password='$password'"; 
$result1=mysql_query($sql1); 
$row1=mysql_fetch_array($result1); 
$active1=$row1['active'];    
$count_admin=mysql_num_rows($result1); 
if($count==1){ 
session_register("email"); 
session_register("password");  
$_SESSION['login_user']=$email; 
header("location:member.php"); 
} 
elseif($count_admin==1){ 
session_register("email"); 
session_register("password");  
$_SESSION['login_admin']=$email; 
header("location:admincp/admin-panel.php"); 
} 
else { 
echo "Wrong email or Password"; 
}} 
?> 

2.Please помочь мне, как я могу решить эту проблему ??

+1

Вы ** широко открыты ** для SQL-инъекций, и ** вы будете взломаны **, если вы еще не были. Используйте подготовленные/параметризованные запросы с PDO или аналогичные, чтобы полностью избежать этой проблемы. – Brad

+0

как я могу это сделать? – user3303166

+0

http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059 – Brad

ответ

0
  1. Пожалуйста, используйте некоторые отступы перед отправкой. Трудно и вряд ли кто-то ответит вам грязным кодом

  2. Как говорится в комментарии, SQL Injections. Предотвратить их и узнать о подготовленных заявлений: http://php.net/pdo.prepared-statements

Перед ваш ответ, это действительно нужно две таблицы, чтобы иметь такое же содержание? Не было бы проще создать один столбец, который мог бы отметить, если пользователь имеет права администратора или нет? Это предотвратит запуск двух запросов, более быстрый код, более высокую производительность и меньшее потребление памяти.

Теперь ваш вопрос:

Code removed

Пожалуйста, имею в виду вашу структуру и безопасность кода.

+0

Не размещайте небезопасный код на StackOverflow. Люди слепо копируют/вставляют этот материал все время. Кроме того, рассмотрите возможность использования чего-то другого, кроме 'md5()' для хеширования паролей. Солевой метод также испорчен ... реверсирование одного хеша откроет пароль для всех других одинаковых паролей, так как соль основана на пароле. Логика - это беспорядок. Почему бы не присоединиться к этим таблицам? Наконец, заголовки 'Location:' должны содержать полный URL-адрес, чтобы быть действительным. Большинство браузеров позволят вам уйти от него, и новый предложенный стандарт не потребует его, но на данный момент вам все еще нужен полный URL. – Brad

+0

Вопрос не в безопасности. Вопрос состоял в том, как поставить два значения сеанса, а ошибка была в условной цепочке. Если люди слепо копируют/вставляют, они должны знать, что они делают. Кроме того, это действительно конкретный случай, это не общий код. Имейте в виду, что мне не нравится размещать небезопасный код, но это не значит вопрос. –

+0

, так что смысл, если я использую почту метода без pdo, хакеры могут легко взломать мою базу данных mysql. что, если у моего сервера есть ssl am i open to mysql injection? – user3303166

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