Проблема с запросом или PHP?

S_alin4ik_R

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

zerkms

TDD infected
Команда форума
S_alin4ik_R
Ну так или иначе - если ваш текущий код хоть как-то похож на тот совет, то второй запрос, который вложен в тело if'а - нужно убрать (потому что первый так и так выгреб всю информацию уже)
 

S_alin4ik_R

Новичок
zerkms
у меня не две таблицы, поэтому второй запрос оставила и дописала оставшиеся проверки...
 

Avron2

Новичок
Цель была не написать хороший код за S_alin4ik_R, а подтолкнуть на нужную мысль.
 

Avron2

Новичок
S_alin4ik_R, напишите свой окончательный вариант, с учетом пожеланий вышеизложенных сообщений
 

S_alin4ik_R

Новичок
в принципе вот:
PHP:
		$login = mysql_real_escape_string($_POST['login']);
		$password = mysql_real_escape_string($_POST['password']);

# Вытаскиваем из БД запись, у которой логин равняеться введенному:
$res_select_id = mysql_query("SELECT `producer_id`, `producer_password` FROM `producer` WHERE `producer_login` ='".$login."' LIMIT 1");
if (mysql_num_rows($res_select_id)==1)
{
	$res_otv = mysql_fetch_array($res_select_id);
	$table = 'producer';
}
else 
{
	$res_select_id = mysql_query("SELECT `distributor_id`, `distributor_password` FROM `distributor` WHERE `distributor_login` ='".$login."' LIMIT 1");
		if (mysql_num_rows($res_select_id)==1){
			$res_otv = mysql_fetch_array($res_select_id);
			$table = 'distributor';
		}
		else ...

...# Сравниваем пароли:
    if($res_otv[$table.'_password'] == md5(md5($password)))
    {
      $_SESSION['login'] = $login; //устанавливаем login & pass & table
	  $_SESSION['pass'] = $password;
	  $_SESSION['table'] = $table;

        # Переадресовываем браузер
       header("Location: index.php"); exit();
    }
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
если вызвать страницу через GET, например, выскочит NOTICE о том, что не определены элементы login и password в массиве $_POST
так писать не стоит
 

fixxxer

К.О.
Партнер клуба
Ну по хорошему
(1) всегда проверять if ($_SERVER['REQUEST_METHOD'] !== 'POST')
(2) всегда проверять isset: post можно прислать любой
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
мой любимый вариант: $login = filter_input(INPUT_POST,'login');
тут в $login точно будет скаляр, а isset пропустит массив, который сразу даст ворнинг в строковой функции
главный минус - нельзя подменить $_POST в тестах
 

fixxxer

К.О.
Партнер клуба
ну я вообще с post работаю (кроме редких простейших случаев) через формы фреймворка :)

filter почему-то вообще не люблю. хз почему. какой то он не ООП :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
я тоже через фреймворк
но в случае yii фреймворк стоит допилить - filter все-таки лучше, чем preg_match
 
Сверху