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

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

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

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    M1ks, ошибка заключается в том, что магический метод __toString, который преобразовывает объект в строку пытается выбросить исключение, но php запрещает выбрасывать исключения для этого метода. Но может здесь загвоздка именно в браузере, так как немного погуглив я узнал, что эта ошибка происходит у большинства пользователей браузера Firefox. Я пока об ООП в php имею очень смутное представление, поэтому не смогу помочь с этой проблемой.
     
    2 people like this.
  2. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Не допираю логику функции...

    PHP:

    function Account_Exists($username)
                {
                    
    $getAcc mssql_num_rows(mssql_query("select id from users where id='$username'"));
                    if(
    $getAcc == 1) return true//если количество строк равно одной, аккаунт есть
                        
    else return false
                }

    Но функция возвращает false если аккаунт сужествует, и true если не сужествует...
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    DeepBlue7 что вам не понятно? У вас даже комментарий есть в коде и вы сами написали, что эта функция делает
     
    _________________________
  4. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Дело в том, что функция возвращает значение противоположное ожидаемому...

    В таком виде функция возвращает ожидаемый результат :

    PHP:
    function Account_Exists($username)
                {
                    
    $getAcc mssql_num_rows(mssql_query("select id from users where id='$username'"));
                    if(
    $getAcc == 0) return true//но ведь по логике если есть 1 строка, то аккаунт сужествует
                        
    else return false;
                }
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    DeepBlue7 А, вы в этом смысле. Ну да, так бывает, когда программиста переклинивает. Если движок только ваш - переписывайте. А вот если общедоступный и вы подключаете к нему чужие плагины - то придется смириться.
     
    _________________________
  6. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    Движок наш, просто переклинило мозг...

    Теперь вроде допёр. Спасибо.
     
  7. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    2Gifts, мне нужно наоборот чтобы после каждого символа НЕ проставлялся "_", а только вместо того что не относится к A-Za-z0-9,_,-
    Я считаю что прежде всего это проблема в PHP и исходной строке. из за utf8
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    НTL модификатор u
    PHP:
    preg_replace('~[^A-Za-z0-9,_,-]*~u',"_","a.b.c.");
     
    _________________________
  9. emmy

    emmy Member

    Joined:
    12 Oct 2009
    Messages:
    76
    Likes Received:
    17
    Reputations:
    8
    Нет никакой проблемы, регулярное выражение составлено неверно, если судить по вашему описанию задачи. Советую вам выделить время и разобраться как именно они работают. Начните с этих примеров попробуйте сначала предположить результат, а затем проверить своё предположение:
    Code:
    echo preg_replace("~~", "_", "a.b.c."), PHP_EOL;
    Code:
    echo preg_replace("~(substring-does-not-exist)*~", "_", "a.b.c."), PHP_EOL;
    Code:
    echo preg_replace("~[^\w,-]+~", "_", "a.b.c."), PHP_EOL;
     
  10. Zombi ****

    Zombi **** Elder - Старейшина

    Joined:
    4 Apr 2009
    Messages:
    166
    Likes Received:
    183
    Reputations:
    17
    есть php файл, нужно самого себя заменить, как перезаписать самого себя?? гугл не дал ничего толкового.
     
  11. [stranger]

    [stranger] Member

    Joined:
    2 Feb 2010
    Messages:
    167
    Likes Received:
    29
    Reputations:
    4
    Code:
    <?php
    fwrite(fopen(basename($_SERVER['PHP_SELF']),"w"),"<?php phpinfo();");
    
    После второго вызова выдаст результат phpinfo();
     
    #19131 [stranger], 16 Aug 2011
    Last edited: 16 Aug 2011
    4 people like this.
  12. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Gifts, не помогает
     
  13. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    НTL
    PHP:
    echo preg_replace('/[^-A-Za-z0-9_,]+/iu',"_","a.b.c."); 
     
    1 person likes this.
  14. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Проблема с header. Есть пхп файл. В нем должна выводится фотография из БД. Но выводит ошибку Warning: Cannot modify header information - headers already sent by и какие-то каракули.
    Пробовал ставить скрипт вывода картинки в самое начало файла, но тогда картинка выводится а всё остальное нет.
     
  15. Nelz.

    Nelz. Member

    Joined:
    2 Aug 2010
    Messages:
    151
    Likes Received:
    7
    Reputations:
    0
    покажите код
     
  16. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    <?php


    include "mysql.php";
    $query = "SELECT `img` FROM `images` WHERE `id`=2";
    // Выполняем запрос и получаем файл
    $res = mysql_query($query);
    if ( mysql_num_rows( $res ) == 1 ) {
    $image = mysql_fetch_array($res);
    // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
    header('Content-Type: image/jpeg');
    // И передаем сам файл
    echo $image['img'];
    }

    else {

    echo "error";
    }
    ?>
     
  17. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    До выполнения функции header() ничего не должно больше выводиться. Либо необходимо включить буферизацию вывода, написав в начале сценария ob_start().
     
  18. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Прописал ob_start() в начале скрипта- всё тоже самое. Мне нужно из БД выводить картинку на страницу на которой много других элементов. Как же мне тогда сделать так чтобы до выполнения функции header() ничего не выводилось? Хотя в файле пхп скрипт написан сразу после тега <body>. Вроде же ничего до него не выводится.
     
  19. Melfis

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

    Joined:
    25 Apr 2011
    Messages:
    505
    Likes Received:
    105
    Reputations:
    53
    Описание
     
  20. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Прочитав описание, совершенно не понял как использовать эту функцию. Вот имеется код
    PHP:

    <html>
    <head>

    </head>
    <body>


    <?php 


     
    include "mysql.php";
    $query "SELECT `img` FROM `images` WHERE `id`=2";
         
    // Выполняем запрос и получаем файл
         
    $res mysql_query($query);
         if ( 
    mysql_num_rows$res ) == ) {
           
    $image mysql_fetch_array($res);
           
    // Отсылаем браузеру заголовок, сообщающий о том, что сейчас будет передаваться файл изображения
           
    header('Content-Type: image/jpeg');
           
    // И  передаем сам файл
           
    echo $image['img'];
         }
          
        else {
        
        echo 
    "error";
        } 
    ?>

    Какой-то текст

    </body>
    </html>

    Как к конкретно этому коду использовать ob_start() ?
     
Thread Status:
Not open for further replies.