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

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

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

    Hixon Member

    Joined:
    17 Apr 2010
    Messages:
    88
    Likes Received:
    9
    Reputations:
    0
    Хм, неужели никто не писал голосовалку, где голос добавлялся с помощью аякса? Должен же быть какой-то способ. Я уже все js скрипты переглядел, думал, может быть, какой-то ещё запрос нужно отправить. В результате, нашёл, что клиент отправляет ещё 1 запрос, если заходит с браузера, но даже, если отправить этот запрос курлом и проголосовать, то голос не добавляется.
     
    #19021 Hixon, 5 Aug 2011
    Last edited: 5 Aug 2011
  2. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Я пробовал прописывать session_start(); Но всё равно не выводит.
    Думаю дело не в сессии. Пытался вывести echo $row['id']; - не выводит
     
  3. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Feksess, пересмотрите логику скрипта в сторону, например, такого варианта
    PHP:
    <?php 
      
    include "mysql.php";
      
    session_start ();
      
    $login mysql_real_escape_string ($_POST['login']);
      
    $query "SELECT `id`, `name`, `pass` FROM `users` WHERE `login` = '$login' LIMIT 1";
      
    $sql mysql_query ($query)
        or die(
    mysql_error());   
      if (
    mysql_num_rows ($sql) < 1)
        die (
    'User not found');
      
    $row mysql_fetch_assoc ($sql);
      
    $salt $row['name'];
      
    $pass md5 (md5 ($_POST['pass']) . $salt);
      if (
    $pass !== $row['pass'])
        die (
    'Wrong password');
      
    $_SESSION['user_id'] = $row['id'];
      echo  
    $_SESSION['user_id'];
    ?>
     
  4. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    в содеpжимом страници есть текст заключонный в теги
    типа
    <p><strong>Черная вода / Zwart water / Two Eyes Staring</strong></p>

    выбрать его можно так
    preg_match("/<p><strong>(.*?)<\/strong><\/p>/",$site_b, $theme);

    а какой функцией можно выбрать не шаблон а тот текст што между
    <strong> и </strong>

    ?
     
  5. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Ну так под индексом 1 в массиве theme и будет текст. Или я не понял вопрос!?
     
  6. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    нет, под индексом 1 будет

    <p><strong>Черная вода / Zwart water / Two Eyes Staring</strong></p>


    а надо только то што меджу <strong> и </strong>
     
  7. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Ну как же? вот:
    PHP:
    <?php
    $site_b 
    "<p><strong>Черная вода / Zwart water / Two Eyes Staring</strong></p>";
    preg_match("/<p><strong>(.*?)<\/strong><\/p>/",$site_b$theme);
    echo 
    $theme[1];
    ?>
    Помоему вы не понимаете, что такое массивы и их индексы. Или не знаете как работает функция preg_match();
     
    1 person likes this.
  8. qaz

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

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

    оу, теперь понял, спасибо, есть ещо вопрос



    ignore_user_abort(1);
    што значат цифры в етой функции?
    0 - NORMAL
    1 - ABORTED
    2 - TIMEOUT

    1 - ABORTED переводится как ,,прервана,, тоесть ето значит што функция прерывается или нет?
     
  9. Чакэ

    Чакэ Elder - Старейшина

    Joined:
    15 Aug 2010
    Messages:
    260
    Likes Received:
    66
    Reputations:
    62
    qaz, ты бы сам немного подучился прежде чем другим глупые советы давать.
    Feksess, убедись что у тебя включен полный вывод ошибок, вплоть до нотисов, и больше юзай var_dump()
     
  10. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    qaz
    Это называется переносы строки.
    PHP:
    $in 'text';
    echo 
    preg_replace("~(\r?\n){2,}~""\n"$in);
    Где вы нашли такие параметры к данной функции? Читайте внимательно мануал: http://www.php.net/manual/en/function.ignore-user-abort.php

    Feksess Вы уверены, что такая база существует, и что такой запрос вернет то, что вы хотите?

    Hixon Писали, ваша задача - повторить запросы, которые отправляет браузер один в один. Запросы можно посмотреть в Wireshark или с помощью плагина LiveHTTPHeaders. Задавайте вопросы по JS в топике про JS, вопрос желательно формулировать полностью, а не исходить из собственных предположений - люди склонны переоценивать собственные силы
     
    _________________________
  11. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Выводит Wrong password.
    Насколько я понял проблема в хешировании пароля. Когда убрал хеширование, всё работало как надо.
    Вот скрипт регистрации
    PHP:
    <?php
      $name
    =$_POST['name']; 
     
    $salt md5($name); 
     
    $login=$_POST['login'];  
    $pass md5(md5($_POST['pass']) . $salt);
      
    $retypepass md5(md5($_POST['retypepass']) . $salt);
      
    $email=$_POST['email'];   
         if(
    $pass==$retypepass && preg_match("#^[a-zA-Z0-9]*$#"$login) && preg_match("#^[a-zA-Z0-9]*$#"$pass) && strlen($login)>=&& strlen($login)<=20 && strlen($pass)>=&& preg_match("#^[a-zA-Z0-9]*$#"$email) && preg_match("#^[a-zA-Z0-9]*$#"$name) && strlen($email)>=&& strlen($email)<=50 && strlen($name)>=&& strlen($name)<=30)  
    {  
      
    // Запись id 
     
    $fh fopen("id.txt","r") or die("Не удалось открыть файл");   $id fgets($fh);
      
    $id $id 1
       
    fclose($fh);  
    $fh fopen("id.txt","w") or die("Не удалось открыть файл");  fwrite($fh$id);  fclose($fh); 
           include 
    "mysql.php";
      
    $insert "INSERT INTO users(login, pass, email, name, id)   VALUES('$login', '$pass', '$email', '$name', '$id')";  
      
    $result mysql_query($insert);   }  
        else{    echo 
    "Произошла ошибка";    }      
      
    ?> 
    Вот авторизации
    PHP:
    <?php   
       
    include "mysql.php";  
       
    session_start (); 
        
    $login mysql_real_escape_string ($_POST['login']);   
      
    $query "SELECT `id`, `name`, `pass` FROM `users` WHERE `login` = '$login' LIMIT 1";  
       
    $sql mysql_query ($query)       or die(mysql_error());   
         if (
    mysql_num_rows ($sql) < 1)
           die (
    'User not found'); 
        
    $row mysql_fetch_assoc ($sql); 
        
    $name $row['name'];    
     
    $saltmd5($name);  
      
    $pass md5 (md5 ($_POST['pass']) . $salt);   
      if (
    $pass !== $row['pass'])     
      die (
    'Wrong password');   
      
    $_SESSION['user_id'] = $row['id'];  
       echo  
    $_SESSION['user_id'];   
    ?>
    Вроде все правильно не пойму, почему пароли не совпадают.
    Пробовал выводить пароль в скрипте регистрации и в скрипте авторизации. Вывелись одинаковые пароли. В чем же тогда дело?
     
  12. Feksess

    Feksess New Member

    Joined:
    23 Jul 2009
    Messages:
    57
    Likes Received:
    3
    Reputations:
    -1
    Проблему решил. В поле БД просто стояло ограничение количества символов и хеш пароля записывался не полностью.
     
  13. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Feksess, судя по этому куску кода
    PHP:
    // Запись id  
    $fh fopen("id.txt","r") or die("Не удалось открыть файл");   $id fgets($fh); 
    $id $id 1;  
    fclose($fh);   
    $fh fopen("id.txt","w") or die("Не удалось открыть файл");  fwrite($fh$id);  fclose($fh);  
    вы никогда не слышали об автоинкременте в MySQL. Откройте для себя новое, и ваш код станет немного лучше
     
  14. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    Всем привет, возник такой вопрос, я курлом отправляю пост запрос на движок ipb, для создания темы, проблема возникла в том што сообщение приходит неполное в чём может быть проблема? сам скрипт отправляет всё правильно, ето форум всё не принемает.
     
    #19034 qaz, 6 Aug 2011
    Last edited: 6 Aug 2011
  15. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Нет, ну сомневаюсь, что проблема именно на стороне форума. Когда ты отправляешь сообщение с браузера и точно такое же сообщение со своего скрипта, то они одинаково отображаются на форуме или нет?
     
  16. qaz

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

    Joined:
    12 Jul 2010
    Messages:
    1,551
    Likes Received:
    173
    Reputations:
    75
    да, вы правы, я перепроверил, курл отправляет не полний пост запрос,

    я заметил што если большой контент, то не отправляет и половины, если мало то всё гуд, как ето исправить?
     
    #19036 qaz, 6 Aug 2011
    Last edited: 7 Aug 2011
  17. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    В чем может быть проблема?

    Пытаюсь зайти в phpmyadmin скриптом - авторизируюсь, получаю куки, шлю их потом, а он их не принимает - удаляет и ставит новые.


    Code:
    Set-Cookie: phpMyAdmin=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_fontsize=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_lang=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_charset=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_collation_connection=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_theme=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pma_mcrypt_iv=deleted; expires=Sat, 07-Aug-2010 14:23:19 GMT; path=/myadmin/
    Set-Cookie: pmaCookieVer=4; expires=Tue, 06-Sep-2011 14:23:20 GMT; path=/myadmin/; HttpOnly
    Set-Cookie: phpMyAdmin=jxFE8hdIYwOyRaTgkndBBBI%2CsJd; path=/myadmin/; HttpOnly
     
  18. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай http://php.net/curl_setopt curlopt_cookiefile, curlopt_cookiejar
     
    _________________________
  19. Hixon

    Hixon Member

    Joined:
    17 Apr 2010
    Messages:
    88
    Likes Received:
    9
    Reputations:
    0
    Добрый вечер
    Есть ссылка:
    PHP:
    http://site.com/voting/comment/?score=roxx&id=1359988
    Я пытаюсь понять, как эта же ссылка выглядела бы без настроек в .htaccess? Сразу думал, что было бы как-то так:
    PHP:
    http://site.com/voting/comment.php?score=roxx&id=1359988
    но потом задумался, а как же скрипт voting.php. Если кому не сложно, то напишите, пож-та, вариант этой же ссылки без настроек в htaccess.
    Спасибо.
     
  20. FewG

    FewG Member

    Joined:
    25 Dec 2009
    Messages:
    136
    Likes Received:
    12
    Reputations:
    0
    Здесь .htaccess не при чём. Представь ссылку так:

    PHP:
    http://site.com/voting/comment/[HIDDEN_STRING]?score=roxx&id=1359988
    где [HIDDEN_STRING] - страница на которой находится данная ссылка.

    ПРИМЕР: находять на странице:

    PHP:
    http://site.com/voting/comment/index.php
    можно заюзать ссылку

    PHP:
    http://site.com/voting/comment/?score=roxx&id=1359988
    Эффект будет аналогичен, если бы была заюзана

    PHP:
    http://site.com/voting/comment/index.php?score=roxx&id=1359988
    Ясно? [HIDDEN_STRING] просто не используется.
     
Thread Status:
Not open for further replies.