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

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

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

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Эта ошибка означает, что в файле index.php есть вывод до того, как используется функция session_start();
     
    1 person likes this.
  2. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Я пользуюсь этой функцией для транслита, может тебе подойдет:)
    PHP:
    function totranslit($text$decode true)    {
            
    $rus_b = array('А''Б''В''Г''Д''Е''Ё''Ж''З''И''Й''К''Л''М''Н''О''П''Р''С''Т''У''Ф''Х''Ц''Ч''Ш''Щ''Ъ''Ы''Ь''Э''Ю''Я');
            
    $eng_b = array('A''B''V''G''D''E''E''ZH''Z''I''J''K''L''M''N''O''P''R''S''T''U''F''H''TS''CH''SH''SCH''''Y''''E''YU''YA');

            
    $rus_s = array('а''б''в''г''д''е''ё''ж''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ц''ч''ш''щ''ъ''ы''ь''э''ю''я',);
            
    $eng_s = array('a''b''v''g''d''e''e''zh''z''i''j''k''l''m''n''o''p''r''s''t''u''f''h''ts''ch''sh''sch''''y''''e''yu''ya');

            if (
    $decode) {
                
    $text str_replace($rus_b$eng_b$text);
                
    $text str_replace($rus_s$eng_s$text);
            } else {
                
    $text str_replace($eng_b$rus_b$text);
                
    $text str_replace($eng_s$rus_s$text);
            }
            return 
    $text;
    }
     
    1 person likes this.
  3. Macro

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

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    А ты сделай сначала проверку на сочитания, а потом уже на отдельные буквы
     
  4. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Поставь в начало файла
    PHP:
    @ob_start();
    @
    ob_implicit_flush(0);
    И все будет ОК:)
     
    2 people like this.
  5. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    кстате у тя он тоже с косяком как и у меня попробуй прописать

    totranslit("vasya", false)

    будет не Вася а Васыа
     
  6. DIAgen

    DIAgen Banned Life!

    Joined:
    2 May 2006
    Messages:
    1,055
    Likes Received:
    376
    Reputations:
    460
    Держи.. только не проверял как работает
    PHP:
     function totranslit($text)    {
            
            
            
    $rus_s_2 = array('а''б''в''г''д''е''ё''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ъ''ы''ь''э');
            
    $eng_s_2 = array('a''b''v''g''d''e''e''z''i''j''k''l''m''n''o''p''r''s''t''u''f''h''''y''''e');
            
            
    $rus_s_1 = array('ж','ц''ч''ш''ю''я',);
            
    $eng_s_1 = array('zh','ts''ch','sh','yu''ya');
            
            
    $rus_s_0 = array('щ');
            
    $eng_s_0 = array('sch');
            
            
    $text str_replace($eng_s_0$rus_s_0$text);
            
    $text str_replace($eng_s_1$rus_s_1$text);
            
    $text str_replace($eng_s_2$rus_s_2$text);
     
            return 
    $text;
    }  
    или вот так
    PHP:
     function totranslit($text)    {
            
            
    $rus_s = array('щ','ж','ц''ч''ш''ю''я','а''б''в''г''д''е''ё''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ъ''ы''ь''э');
            
    $eng_s = array('sch','zh','ts''ch','sh','yu''ya','a''b''v''g''d''e''e''z''i''j''k''l''m''n''o''p''r''s''t''u''f''h''''y''''e');

            
    $text str_replace($eng_s$rus_s$text);

            return 
    $text;
    }  
     
    #1866 DIAgen, 9 Feb 2008
    Last edited: 9 Feb 2008
  7. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    Пахает =)

    млин та легко а не догадался.. эххь(
     
    #1867 Doom123, 9 Feb 2008
    Last edited: 9 Feb 2008
  8. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    код сиситемы аунтификации
    PHP:
    <?php
    session_start
    ();
    $url getenv("HTTP_REFERER");
    $err "<center><font color=#ff0000><p>Ошибка авторизации!<br>
    Неверный логин или пароль</font></center></p>"
    ;
    function 
    showForm() {
    echo 
    "<p align='center'>Только для зарегистрированных пользователей!</p>
    <p align='center'>Вам нужно авторизоваться или
    <a href='self.php'>зарегистрироваться</a>, это не займёт у
    Вас много времени.</p>
    <center>
    <form action='
    {$_SERVER['PHP_SELF']}' method='post'>
    <table border='0'>
    <tr>
    <td>Логин</td>
      <td><input type='text' size='20' name='login' /></td>
    </tr>
    <tr>
    <td>Пароль</td>
      <td><input type='password' size='20' name='pass' /></td>
    </tr>
    </table>
    <input type='submit' name='submit' value='Авторизоваться'>
    </form>
             </td>
          </tr>
       </table>
            </div>
         </td>
      </tr>
    </table>
    </center>"
    ;     
    }

    function 
    compare_log($log,$pass,$aut_log,$aut_pass)
    {
    $val false;
        if((
    $log === $aut_log) &&
        (
    md5($pass) === $aut_pass))
    $val true;
    return 
    $val;   
    }

    if(isset(
    $_POST['submit'])) {
    if((!
    eregi("^[_.0-9a-z-]{2,15}$"$_POST['login'])) or
    (!
    eregi("^[_.0-9a-z-]{6,15}$"$_POST['pass']))) {
    echo 
    $err;
    showForm();
    exit; }

    else{
    include 
    "config.php";
       
    $query "(SELECT * FROM regy)";
       
    $result mysql_query($query);
    while(
    $aut mysql_fetch_array($result))
    if(
    compare_log($_POST['login'],$_POST['pass'],$aut['login'],$aut['pass'])) {
            
    $_SESSION["auth_username"] = $aut['pass'];
            
    header("Location: $url");
            exit; }   
                
    if(!
    compare_log($_POST['login'],$_POST['pass'],$aut['login'],$aut['pass'])) {
       echo 
    $err;
       
    showForm();
       exit; }
    }
    }

    if (!isset(
    $_SESSION["auth_username"])) {
    showForm();
    exit;
    }
    ?>
     
    вроде бы все правильно...компится..но не работает
    посмотрите пожалуйста в чем ошибка
     
  9. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    $query = "(SELECT * FROM `regy`)";
    поставь апострофы
    иногда бывают из-за этого траблы,
    а если честно мне лениво весь код проверять:)
     
    #1869 RedBull@12, 10 Feb 2008
    Last edited: 10 Feb 2008
  10. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Такое как:

    header();
    session_start();
    setcookie();

    Надо добавлять перед выводом на экран чего либо... Если ставишь echo или print или до <?php уже был вывод, то заголовок ака header (А куки и сессия именно там) уже формирован и не может быть добавлен...
     
  11. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Кто спец по CURLy, подскажите, как загрузить страничку через прокси?
     
  12. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    cURL proxy:

    PHP:
    <?php
    $curl 
    curl_init('http://www.antichat.ru/index.php'); 
    curl_setopt($curlCURLOPT_PROXY'127.0.0.1:3003); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_TIMEOUT, 10); 
    $page = curl_exec($curl); 
    curl_close($curl);
    ?>
     
    2 people like this.
  13. Кельт

    Кельт Member

    Joined:
    4 Jul 2007
    Messages:
    16
    Likes Received:
    5
    Reputations:
    0
    Народ, подскажите, пожалуйста, вот есть файл с кучей строк, можно как-нибудь сделать так, что бы после обработки этого файла скриптом, оставались только последние 28 символов, а все предидущие удалялись?
     
  14. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Кельт, 28 символов от каждой строки?

    Если да, то юзай такой код.
    PHP:
    <?php
        $file 
    file_get_contents('file.txt');
        
    $new_file '';
        foreach(
    explode("\n"$file) as $str) {
            
    $new_file .= substr($str27)."\n";
        }
        
    $file fopen('new_file.txt''w');
        
    fwrite($file$new_file);
        
    fclose($file);
    ?>
    file.txt - файл с твоими строками, new_file.txt - обработанный файл. Права на файл new_file.txt должны быть 0777.
     
    #1874 NOmeR1, 10 Feb 2008
    Last edited: 10 Feb 2008
  15. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Если нет, то такой:
    PHP:
    <?php
    $file 
    file_get_contents('file.txt');
    $new_file substr($file, -28);
    $file fopen('new_file.txt''w+');
    fwrite($file$new_file);
    fclose($file);
    ?>
     
  16. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Надо создать файл для последующего корректного использования в mysql> LOAD DATA INFILE "data.txt" INTO TABLE my_table;
    Вообщем столбцы должны быть разделены символом табуляции (0х09), но надо ли заключать сами данные в кавычки и в какие, одинарные или двойные?
    PHP:
    $string=$pass.chr(9).$code1.chr(9).$code2.chr(9).$code3.chr(9).$code4.'\n';
    Дело в том что строковые переменные $code1-4 могут содержать спецсимволы (в том числе и символ табуляции и кавычки). Ввобщем как быть? Добавить экранирование спецсимволов в $code1-4? Или создать свой формат и потом использовать опции функции LOAD DATA INFILE
    Code:
    [FIELDS
            [TERMINATED BY '\t']
            [[OPTIONALLY] ENCLOSED BY '']
            [ESCAPED BY '\\' ]
        ]
        [LINES TERMINATED BY '\n']
    
     
  17. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    -=lebed=-=, при записи делать $str = str_replace("\t", " ", $str);
    Кавычки при записи экранировать, при выводе - stripslashes
    И еще \n должен быть в двойных кавычках, а не одинарных
     
  18. Кельт

    Кельт Member

    Joined:
    4 Jul 2007
    Messages:
    16
    Likes Received:
    5
    Reputations:
    0
    NOmeR1, да в каждой строке =) но твой скрипт удаляет первые 28 символов, а мне надо что бы оставались именно последние 28 =(

    ага, просто заменил:
    PHP:
    $new_file .= substr($str27)."\n";
    на
    PHP:
    $new_file .= substr($str, -29)."\n";
    и все получилось лучше некуда =) спасибо =)
     
    #1878 Кельт, 10 Feb 2008
    Last edited: 10 Feb 2008
    1 person likes this.
  19. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    -=lebed=-, данные не надо заключать не в какие кавычки, более того если ты их заключишь в кавычки, то и кавычки запишутся в поле данных (вместе с данными), переменные $code1-4 советую парсить на предмет табуляции до занесения в файл (например с помощью str_replace) т.к. наличие лишней табуляции нарушит структуру вносимых данных, т.е. LOAD DATA INFILE равномерно заносит из файла данные, которые начинаются от начала строки, далее находятся между табуляциями и до конца строки (конечно если использовать опции LOAD DATA INFILE поумолчанию, причем опции по умолчанию ты привел в своем посте) ну вот как то так, если ты ничего не понял (мой косяк) то стучи в осику, знаю как помочь
     
  20. 1NtR0

    1NtR0 Elder - Старейшина

    Joined:
    14 Apr 2007
    Messages:
    235
    Likes Received:
    89
    Reputations:
    35
    <?php
    $file = file('file.txt');

    for($i=0;$i<count($file):$i++)
    {
    $site="http://microsoft.com";
    include("$site"."$file[$i]");
    }
    ?>
    Почему добавляет в при инклуде в конец урла __ (подчеркивание) ?
     
Thread Status:
Not open for further replies.