[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:
    374
    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:
    374
    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:
    374
    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,194
    Reputations:
    252
    cURL proxy:

    PHP:
    <?php
    $curl 
    = curl_init('/index.php'); 
    curl_setopt($curl, CURLOPT_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($str, 27)."\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,194
    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,803
    Likes Received:
    1,957
    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,194
    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($str, 27)."\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:
    233
    Likes Received:
    88
    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.