прошу помощи, не работает условие

Статус
В этой теме нельзя размещать новые ответы.

ilya-bunker

Создатель
Регистрация
5 Май 2009
Сообщения
48
Реакции
6
добрый день, есть пример скрипта


PHP:
<?php

require './configuration.php';
include './include.php';
// из clientid получаем serverid далее получаем email и данные авторизации
$rows_client = ('SELECT * FROM `client` WHERE `clientid` = \'' . $_SESSION['clientid'] . '\'');
$result_client = mysql_query ($rows_client);
$data_client = mysql_fetch_array ($result_client);

// из clientid получаем serverid далее получаем boxid
$rows_server = ('SELECT * FROM `server` WHERE `clientid` = \'' . $_SESSION['clientid'] . '\'');
$result_server = mysql_query ($rows_server);
$data_server = mysql_fetch_array ($result_server);

//
$serverid = htmlspecialchars(stripslashes(trim($_REQUEST['serverid'])));

if ($serverid == $data_server['serverid']) {
	//выполняем далее скрипт
	echo "выполнено";	
} else {
	echo "ошибка";
}
?>


пример url
Для просмотра ссылки Войди или Зарегистрируйся

описание

условие if проверяет валидность пользователя для доступа к данному серверу, если в базе 1 строка с индивидуальным clientid то все работает, если несколько то выдает ошибку так как условие выбирает только 1-ую строку (ну а там mysql serverid не соотвутствует request serverid)
как сделать что бы все работало? заранее спасибо
 
ну так если строк несколько - пройдись в цикле по ним
 
На первый взгляд все правильно.. Сдулай вывод переменных до условия и посмотри я думааю сам поймешь в чем дело...
 
На первый взгляд все правильно.. Сдулай вывод переменных до условия и посмотри я думааю сам поймешь в чем дело...
сделал и понял что берет только первую строку с одинаковым clientid но там serverid другой поэтому скрипт не работает

Добавлено через 1 минуту
ну так если строк несколько - пройдись в цикле по ним
поподробнее можно, в пхп ещё новичек
 
Т.е. у тебя один клиент может быть на нескольких серверах?
Если так, то пожалуй лучше будет сделать запрос к базе серверов с указанием не только id клиента, но и serverid.
PHP:
$serverid = htmlspecialchars(stripslashes(trim($_REQUEST['serverid']))); 
$rows_server = ("SELECT * FROM `server` WHERE `clientid` = '{$_SESSION['clientid']}' AND `serverid` = '{$serverid}'");
$result_server = mysql_query ($rows_server); 
$num_rows = mysql_num_rows($result_server); // кол-во найденых строк
Если вернет одну строку, то "велкам", если будет "нуль", то пусть гуляет лесом.
 
обобщаю.

PHP:
<?php 

require './configuration.php'; 
include './include.php'; 

// 
$serverid = htmlspecialchars(stripslashes(trim($_REQUEST['serverid']))); 

// из clientid получаем serverid далее получаем boxid 
$rows_server = ('SELECT * FROM `server` WHERE `clientid` = \'' . $_SESSION['clientid'] . '\' and `serverid` = \'$serverid\''); 
$result_server = mysql_query ($rows_server); 
if ($data_server = mysql_fetch_array ($result_server))
{


    //выполняем далее скрипт 
    echo "выполнено";     

} else 
echo "ошибка"; 
?>
 
$data_server = mysql_fetch_array

Это никогда не будет работать в if(){}
 
попрой другой метод сравления не "==" а "==="
еще определи переменную сначала, но это не влияется просто что бы было)
еще если там 1 операторар можно сделать так
($serverid === $data_server['serverid'])? echo "выполнено" : echo "ошибка";

Добавлено через 50 секунд
если есть модуль xdebug отладь получамы данные и все будет норм)
 
спасибо всем огромное, помогло использование в запросе и clientid и serverid
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху