[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    Хороший, ану иди сюда! Я тебе чё говорил! Не юзай mysql_result он нужен только если что-то одно вывести... А ещё он нужен если его понимаеш, ты его не понимаеш! Вот и не юзай!

    PHP:
    <?
    $query mysq_query("SELECT * FROM users_reg where login='$login' and pass='$pass'"); 
    $row mysql_fetch_array($query);

    echo 
    '<pre>'//Это потом уберёш
    print_r($row); //И это тож

    echo 'Status: ' $row['status']; //Выведет поле status
    ?>
    На, выполни и узри чудо :D

    =========================

    Насчёт твоих скриптов, тама у тя есть ...echo "<center>Логин <b>".$login."</b> не найден в базе, или вы ввели неправельный пароль.</center>";... тут у тебя XSS и не удевлюсь, если ты все поля пропускаеш только через mysql_escape_string() нужно ещё и htmlSpecialChars() :mad:
    <offtop>Вот подожди, налажу я комп, поставлю аську, покажу где раки зимуют и как правильна скрипты писать и вопросы задавать</offtop>
     
    #1101 Ponchik, 6 Dec 2007
    Last edited: 6 Dec 2007
    2 people like this.
  2. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    давай быстрее только=) жду спасибо
     
  3. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    PHP:
    if($_POST['game'])  
    {  
         
    $login mysql_escape_string($_POST['login']);  
         
    $pass mysql_escape_string(md5($_POST['pass']));//хешируем введенный пароль  
         
    $query "SELECT * FROM users_reg where login='".$login."'&& pass='".$pass."'";   
         
    $result mysql_query($query) or die ("Ошибка ");;//обработка запроса  
          
    $stat mysql_fetch_assoc($result);
         if (
    mysql_num_rows($result)==0)   
        {  
              echo 
    "<center>Логин <b>".$login."</b> не найден в базе, или вы ввели неправельный пароль.</center>";  
                
        } 
        else  
        {
              if (
    $stat["status"] == 7
              {
              echo 
    "Йа, сцуко, админчег! <b>".$login."</b>";
              }
              else
              {
              echo 
    "Привет <b>".$login."</b>";
              }
        } 

    благодаря моему сенсею, решение оказалось простым.
     
  4. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    хм, не знаю как задать вопрос, попытаюсь.

    в чем нужно хранить имена пользователей которые сейчас авторизировались на сайте, чтобы их вывести?)
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    В БД. А хранят там обычно не список имён авторизовавшихся, а время последнего проявления активности. Если разница между сохранённым временем и текущим менее 15 минут - то пользователь показывается в списке, если больше - то нет.
     
    1 person likes this.
  6. Ponchik

    Ponchik Хлебо-булочное изделие

    Joined:
    30 Aug 2005
    Messages:
    687
    Likes Received:
    807
    Reputations:
    311
    XopoIII, хмм... где-то я этот вопрос видел, может в аське, от тебя =\ Яж тебе всё объяснил... Ну раз не понятно, объясняю подробнее
    Как я помню у тебя в $_SESSION['login'] хранился логин пользователя если он залогинен
    В табле пользователей (назовём это users) создай поле last_refresh
    В config.php пишеш такое
    PHP:
    <?php
    //Твой конфиг (файл, который инклудится во все скрипты)
    if($_SESSION['login']) mysql_query("UPDATE `users` SET `last_refresh` = '" time() . "' WHERE `login` = '{$_SESSION['login']}'");
    ?>
    Так... Юзверей онлайн чекаем так
    PHP:
    <?php
    $users_online_query 
    mysql_query("SELECT `login` FROM `users` WHERE " time() . "-`last_refresh` <= 60*15");
    $users_online mysql_fetch_array($users_online_query);
    echo 
    '<pre>';
    print_r($users_online);
    ?>
    Ты... Я не обещаю, но должно работать :)
     
    1 person likes this.
  7. orcismylife

    orcismylife Elder - Старейшина

    Joined:
    1 Oct 2007
    Messages:
    22
    Likes Received:
    6
    Reputations:
    0
    fsockopen();

    нужно подключаться к прокси и обновлять страницу - собственно работа с соксом. но у меня проблема - никак не могу нормально щаюзать сокс.

    хотелось бы получить решение, кушающее айпишник прокси из файла и самое главное - как написать функцию коннекта через прокси и посылание ПОСТ даты?
     
  8. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    почему на запрос
    mysql_fetch_array и mysql_fetch_assoc выдается одно и тоже Array ?
     
  9. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    У меня два вопроса:

    1) Форматированние данных, всмысле "приятное" на вид распределение. В базу данных надо добавить статью, с картинками, отформатировать её по примеру как в wikipedia. Допустим залить картинки с возможностью последующего ввывода в нужной части документа, а так же выделение жирным, создание линков и тому подобное, по принципу bbtags (как при ответе на этом форуме).
    Где я могу почитать статьи о подобном и как это вообще называется на русском или на английском? Форматирование документов? :)

    2) Вывод данных из MySQL. Я знаю как это сделать, смотрел примеры, воссоздавал подобные, вообщем технически - могу создать базу данных и вывести оттуда информацию функцией mysql_fetch_row или mysql_fetch_array. Но сам принцип вывода данных и выбор оптимального варианта - никак не могу понять... Ну не усваивается у меня, каким именно образом цикл выводит данные из массива? mysql_fetch_array, при каждом обращении, переходит на следующую строку, что то там делает, да и циклы бывают разными... Может и не стоит использовать циклы, есть более оптимальный вариант для моего случая... Вообщем как мне в этом разобраться?
    Есть ли хорошие статьи на эту тему? Только не просто примеры и //коменты, а реальное объяснение механизма обработки и вообще... Например как вот эти две статьи:
    1) Короткая статья, отражающая принцип работы сессий в примерах. Примерно аналогично я знаю о выводе данных из mysql.
    2) Подробное описание работы и объяснение механизма работы с сессиями PHP. Вот я в поиске подобного ответа на вопрос.

    Спасибо за ответы :)
     
    2 people like this.
  10. XopoIII

    XopoIII Elder - Старейшина

    Joined:
    29 Oct 2007
    Messages:
    386
    Likes Received:
    30
    Reputations:
    0
    почему на запрос
    mysql_fetch_array и mysql_fetch_assoc выдается тупо Array ?
    что я нето сдела? подскажите
     
  11. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    XopoIII, а что ты ожидашь вместо массива? :) Я тебе, мля, сколько раз говорил маны читать? :) Не слушаешь старших? :) Эти функции каждую строчку результата преобразуют в массив, первая - в индексированный, а вторая в ассоциативный соответственно... Как только в результате заканчиваются строчки, то возвращается false. Что у тебя ещё не так? :) Дальше работай со значениями, индексируя их - $mas["blablabla"] или $mas[2].
     
    1 person likes this.
  12. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    PEPSICOLA

    1) собственно, форматирование текста веб страниц (как ни странно +) ) осуществляется обычно с помощью html.. Реализация bb-тегов на пхп (и не только на нем) очень проста - пишется функция, которая заменяет (обычно с помощью регулярных выражений) все bb-теги на их хтмл-аналоги, и возвращает результат.. этот результат и заносится в БД.. правда, некоторые (неопытные) кодеры заносят в БД данные прямо с бб-тегами, а заменяют их на хтмл-аналоги уже при выводе данных на страницу.. так делать лучше не надо...

    2) второй вопрос я не очень понял (про вывод в цикле), потому ниче не напишу.. если б ты привел свой код - тогда другое дело.. ; )
     
    #1112 Digimortal, 7 Dec 2007
    Last edited: 7 Dec 2007
  13. PEPSICOLA

    PEPSICOLA . . . . . 2L . . . . .

    Joined:
    14 Oct 2004
    Messages:
    1,025
    Likes Received:
    823
    Reputations:
    368
    Дык это мне понятно :)
    Но как это сделано? Java Script? Выделить текст, нажать сверху/снизу и текст обрамляется тэгами ?

    И как лучше залить картинки и вставить их в нужное место на странице? Без потери уже введённого текста? При загрузке - Предварительно сохранять его в сессию или сразу в базу данных? И после загрузке, как его определить... Если допустим все картинки будут сохраняться в одну и ту же папку images и каждой присваевается поряжковый номер? :)

    Да просто если взять чужой код - не понятен механизм обработки... Каким образом там все в цикле присваевается и выводится? :)
     
    5 people like this.
  14. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140

    PHP:
    <?php
    $input 
    "фывфыв[B]Пиздатый текст[/B]фывыфвф";
    $sd explode("[B]",$input);
    $sd1 explode("[/B]",$sd[1]);
    echo 
    "<b>".$sd1[0]."</b>";
    ?>
     
  15. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Смотря что ты пытаешься вывести этими функциями.
    Если запрос типа такого
    То понятное дело у тебя будет выводиться Array
    Если к примеру тебе нужно вывести сколько полей в таблице, к примеру сколько юзеров зарегино, то пользуйся функцией mysql_num_rows() т.к. она возвращает количество рядов.

    Дык наоборот, для mysql_fetch_array() ===> $mas[blabla]
    а для mysql_fetch_assoc() ===> $mas["blabla"]
     
  16. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    у меня ещё такой вопрос: обязательно ли закрывать соединение с БД mysql_close() после выполнения сценария или это не обязательно?
     
    1 person likes this.
  17. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Это хороший тон, но не обязательно. Я советую закрывать.
     
  18. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189

    да, можно javascript'ом, возьми в любом форуме погляди хтмл код - там сам все увидишь..

    а вот картинки можно залить целой кучей способов.. опять же погляди лучше как на различных движках это реализовано и разберись как оно там работает..
    например, можно сделать, чтоб открывалась отдльная страница, на ней ты заливаешь картинки, после чего тебе выводится их адрес на твоем сайте.. этот адрес берешь и вставляешь в бб-тег img текста сообщения, точно так же, как если бы эта картинка лежала на удаленном сайте.. )
     
  19. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Просто подумал о том не будет ли нагружать базу тем что каждый раз открывать новое соединение
     
  20. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    .:enot:., после того как твой скрипт отрабатывает, все ресурсы автоматически уничтожабтся. Поэтому никого и ничто напрягать не будет, другое дело если ты используешь "постоянные" коннекта, тогда сервак можно в два счёта положить...
     
Thread Status:
Not open for further replies.