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

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

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

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Feksess пожалуйста, прежде чем ЧТО-ЛИБО делать дальше - скачайте хоть какой нибудь учебник и прочитайте как работает HTTP протокол, язык разметки HTML, как выглядят те или иные данные.

    http://phpfaq.ru/start
    http://phpfaq.ru/na_tanke
    http://lib.ru/WEBMASTER/rfc2068/
    http://htmlbook.ru/html/img
     
    _________________________
  2. KREIVEN

    KREIVEN New Member

    Joined:
    22 Dec 2010
    Messages:
    17
    Likes Received:
    0
    Reputations:
    0
    Здраствуйте у меня такой вопрос ?
    Вот код
    PHP:
    <form method="GET" action="/cgi-bin/form_handler.cgi">
    Введите Ваше имя: <input type="text" name="name">
    <
    br>
    <
    input type="submit" name="okbutton" value="OK">
     </
    form>
    Получается как то вот так. а�аВаЕаДаИб�аЕ а�аАб�аЕ аИаМб�:
    что то не так в кодировке??
     
  3. brain

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

    Joined:
    4 Jul 2010
    Messages:
    249
    Likes Received:
    90
    Reputations:
    33
    KREIVEN, а что у вас за кодировка стоит в голове страницы?
     
  4. drvel

    drvel Banned

    Joined:
    7 Jun 2011
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Помогите оптимизировать код )

    Задача - найти папку backup на сайтах....

    Большое время выполнения....
    PHP:

    <?php

    include('dbase.php');
    $result mysql_query("select id,dom_name from dbase.domainbase where done <> 1 limit 1;"); 
    $err mysql_error();
    if (empty(
    $err)) {
        while(
    $row mysql_fetch_array($result))    {
            
    $site strtolower($row['dom_name']);
            
    $url "http://".$site."/backup/";

    $ip gethostbyname($site);
    if(
    ip2long($ip) == -|| preg_match("/.*\.[a-zA-Z]{2,3}$/",$site) == ) {
    }
    else {
            
            
    $Headers = @get_headers($url);
                if(
    strpos($Headers[0],'200')) {
                
                    echo 
    '<a target=new href='.'http://'.$site.'/backup'.'>'.'http://'.$site.'/backup/'.'</a><br>';
                    
    $up_date mysql_query("UPDATE dbase.domainbase SET comment = 'yes' WHERE id='".$row['id']."'");
                    
    mysql_query($up_date);        
                                                        } 
                else{
                    
    $up_date mysql_query("UPDATE dbase.domainbase SET comment = 'no' WHERE id='".$row['id']."'");
                    
    mysql_query($up_date);            
                    }
                    
            
    $up_date mysql_query("UPDATE dbase.domainbase SET done = '1' WHERE id='".$row['id']."'");
            
    mysql_query($up_date);            
                                                    }        
                    }
                    }
    ?>

    Нужны ли комментарии к коду?
     
    #19144 drvel, 18 Aug 2011
    Last edited: 18 Aug 2011
  5. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    PHP:
    <?

    session_start();
    include (
    "dbconnect.php");


    $id = !empty($_POST['user_login'])?$_POST['id']:NULL;
    $pass = !empty($_POST['user_pass'])?$_POST['pass']:NULL;

    if(!
    preg_match("/^[0-9]{1,100}$/"$id))


    {
    header("Location: login.php?mod=no"); //Такой логин с паролем не найдены в базе данных
    }

    else
    {

    if(!
    preg_match("/^[\w0-9]{6,20}$/"$pass))


    {
    header("Location: login.php?mod=no"); //Такой логин с паролем не найдены в базе данных
    }

    else
    {
    $sql mysql_query"SELECT `id` FROM `user` WHERE `id`='$id' AND `pass`='$pass' LIMIT 1");



    if (
    mysql_num_rows($sql) == 1)
    {

    $row mysql_fetch_assoc($sql);
    $_SESSION['id'] = $row['id'];

    header("Location: login.php");

    }

    else
    {

    header("Location: index.php?mod=nologin1"); //Такой логин с паролем не найдены в базе данных

    }
       }
          }


    ?>



    переехал на новый хостинг и стала возникать ошибка

    Warning: Cannot modify header information - headers already sent by (output started at /home/domains/public_html/dbconnect.php:17) in /home/domains/public_html/action.php on line 14

    штоза байда? как быть?
     
    #19145 qaz, 18 Aug 2011
    Last edited: 18 Aug 2011
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz покажите файл dbconnect.php
     
    _________________________
  7. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    PHP:
    <?

    $dbhost "localhost";

    $dbname "name";

    $dbuser "user";

    $dbpass "pass";

    $link mysql_connect($dbhost,$dbuser,$dbpass);

    mysql_select_db($dbname,$link);



    ?> 
     
  8. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    qaz, после header("Location: ...) ставь exit;
    допиши строчку
    mysql_select_db($dbname,$link) or die(mysql_error());
     
    #19148 bad_boy, 19 Aug 2011
    Last edited: 19 Aug 2011
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz удалите пробелы и прочие переносы строк после "?>"
     
    _________________________
  10. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    Gifts, пустые строки не передаются, там скорее всего ошибка в подключении(localhost скорее всего не доступен на сервере как адрес сервера)
     
  11. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    bad_boy, английским языком написано:
    Code:
    Warning: Cannot modify header information - headers already sent by (output started at /home/domains/public_html/dbconnect.php:17) in /home/domains/public_html/action.php on line 14
    Это значит, что заголовки уже нельзя изменить (добавить к ним Location), т.к. уже был вывод данных в скрипте dbconnect.php на строке 17. Любой выведенный символ, в т.ч. пробел, перенос строки перекрывает возможность изменения заголовков скриптом.
     
  12. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    mailbrush, я понимаю, что это значит.
    Печатать мне не хочется уже, буду копипастить.
    Залил скрипты qaz'а себе на денвер:
    Закомментировал:
    результат:
    Warning'и у него отключены, вот и всё.
     
  13. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    1. Были бы отключены - не вываливался б Warning.
    2. Была бы проблема с коннектом к БД - вывалилась бы соответствующее предупреждение, как у тебя.

    Вывод - дело не в коннекте к БД. Добавь лишний пробел к dbconnct.php и укажи правильную информацию для коннекта к БД - будет ситуация точно такая же, как у qaz'a.

    Решение, как уже было сказано, - убрать все символы после "?>" в dbconnect.php.
     
    #19153 mailbrush, 19 Aug 2011
    Last edited: 19 Aug 2011
    1 person likes this.
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    bad_boy невыведенные ошибки (читать отключен вывод ошибок) как раз-таки не влияют на работу функции header(). Наличие же неудаленных непечатных символов (пробелы, переносы строк, табуляция, utf8 символы) приводят к принудительной отправке заголовков.

    Можете поэкспериментировать добавив к вашему решению несколько пустых строк в конце.
     
    _________________________
  15. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    Есть такой Zend-style чит: вообще не ставить ?>
     
  16. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    ооо, среди всего выше сказаного спас ето вариант, всем спасибо)
     
  17. bad_boy

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

    Joined:
    30 Dec 2004
    Messages:
    187
    Likes Received:
    33
    Reputations:
    3
    mailbrush, Gifts, my bad, я то думал он скопировал весь файл и заканчивается он на '?>' и что вы говорите вообще о пустых строках после mysql_* функций и до '?>'.
     
  18. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    нужно, авторизоватся на сайте курлом, но на сайте стоит какаято защита и я нискакого хостинга немогу к сайту подключится, ни через курл ни через файл гет контентс, што можно сделать в такой ситуации?
     
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz не можете подключиться или сайт не отдает страницу?
    PHP:
    $site 'somesite.ru';
    $sock fsockopen($site80);
    if (
    $sock) {echo 'Сайт доступен<br />';}
    else {echo 
    'Cайт недоступен для коннекта'; die();}
    fclose($sock);
     
    _________________________
  20. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    там вроде как идёт перенаправление

    вот што мне показал ваш скрипт

    PHP:
    Сайт доступен
     
    #19160 qaz, 19 Aug 2011
    Last edited: 19 Aug 2011
Thread Status:
Not open for further replies.