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

Тема в разделе "PHP", создана пользователем ilya-bunker, 22 июн 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ilya-bunker

    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
    http://localhost/test.php?serverid=1

    описание

    условие if проверяет валидность пользователя для доступа к данному серверу, если в базе 1 строка с индивидуальным clientid то все работает, если несколько то выдает ошибку так как условие выбирает только 1-ую строку (ну а там mysql serverid не соотвутствует request serverid)
    как сделать что бы все работало? заранее спасибо
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    ну так если строк несколько - пройдись в цикле по ним
     
    ilya-bunker нравится это.
  3. Progresser

    Progresser Писатель

    Регистр.:
    25 апр 2007
    Сообщения:
    8
    Симпатии:
    2
    На первый взгляд все правильно.. Сдулай вывод переменных до условия и посмотри я думааю сам поймешь в чем дело...
     
    ilya-bunker нравится это.
  4. ilya-bunker

    ilya-bunker Создатель

    Регистр.:
    5 май 2009
    Сообщения:
    48
    Симпатии:
    6
    сделал и понял что берет только первую строку с одинаковым clientid но там serverid другой поэтому скрипт не работает

    Добавлено через 1 минуту
    поподробнее можно, в пхп ещё новичек
     
  5. Progresser

    Progresser Писатель

    Регистр.:
    25 апр 2007
    Сообщения:
    8
    Симпатии:
    2
    результат в студию сделай..
     
    ilya-bunker нравится это.
  6. fly21

    fly21 Создатель

    Регистр.:
    11 авг 2009
    Сообщения:
    19
    Симпатии:
    2
    Т.е. у тебя один клиент может быть на нескольких серверах?
    Если так, то пожалуй лучше будет сделать запрос к базе серверов с указанием не только 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); // кол-во найденых строк
    Если вернет одну строку, то "велкам", если будет "нуль", то пусть гуляет лесом.
     
    ilya-bunker нравится это.
  7. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    обобщаю.

    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 
    "ошибка"
    ?>
     
    ilya-bunker нравится это.
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    $data_server = mysql_fetch_array

    Это никогда не будет работать в if(){}
     
    ilya-bunker нравится это.
  9. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    попрой другой метод сравления не "==" а "==="
    еще определи переменную сначала, но это не влияется просто что бы было)
    еще если там 1 операторар можно сделать так
    ($serverid === $data_server['serverid'])? echo "выполнено" : echo "ошибка";

    Добавлено через 50 секунд
    если есть модуль xdebug отладь получамы данные и все будет норм)
     
    ilya-bunker нравится это.
  10. ilya-bunker

    ilya-bunker Создатель

    Регистр.:
    5 май 2009
    Сообщения:
    48
    Симпатии:
    6
    спасибо всем огромное, помогло использование в запросе и clientid и serverid
     
Статус темы:
Закрыта.