За последние 24 часа нас посетили 16462 программиста и 1677 роботов. Сейчас ищут 869 программистов ...

проверка в curl

Тема в разделе "PHP для новичков", создана пользователем codend, 5 ноя 2015.

  1. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    Не могу понять, почему не проверяет есть ли запись в базе данных или нет. Сам скрипт работает таким образом - парсит слово с сайта, вносит в блакнот и в базу данных. Вроде написала прежде чем вносить в базу, должен проверять есть ли запись или нет, если есть то чтобы не вносил в базу данных и не записывал в блокнот. Но почему то он не проверяет.

    Код (PHP):
    1. <?php
    2.  
    3.     session_start();
    4.     include("config.php");
    5.     
    6.     echo getURL('http://www.lalal.com');
    7.  
    8. function getURL($url, $timeout = 30)
    9. {
    10.     $ch = curl_init();
    11.     $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    12.     $header[] = "Connection: keep-alive";
    13.     $header[] = "Keep-Alive: 300";
    14.     $header[] = "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3";
    15.     $header[] = "Pragma: "; 
    16.     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0");
    17.     curl_setopt($ch, CURLOPT_URL, $url);
    18.     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    19.     curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
    20.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    21.     curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    22.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    23.     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    24.     curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    25.     $content = curl_exec($ch);
    26.     curl_close ($ch);
    27.    
    28.     
    29.     
    30.     
    31.     $pos = strpos($content, '<h3>xxxx</h3>');
    32.     if (!$pos){
    33.     
    34.     $f = fopen("../xxx/textfile.txt", "a");
    35. $data = file('../xxx/textfile.txt'); 
    36.  
    37.                 array_splice($data, 0, 0, "cant get content, maybe wrong url or somesing changed!" ." [monhyip.net] / add5.php ".date("Y-m-d H:i:s",time())."\n"); 
    38. file_put_contents('../projects/textfile.txt', implode('', $data));
    39.  
    40.  
    41. $a = 1;
    42.     
    43.  
    44. fclose($f);
    45.     die();
    46.     
    47. }
    48.     $content = substr($content, $pos);
    49.  
    50. // Точно таким же образом находим позицию конечной строки
    51.  $pos = strpos($content, '</strong>');
    52.  
    53. // Отрезаем нужное количество символов от нулевого
    54.  $content = substr($content, 0, $pos);
    55.  $toDelete = 79;
    56.  mb_internal_encoding("UTF-8");    
    57.  $content = str_replace('[details]','', $content);            
    58.  $content = str_replace('<strong>','', $content);        
    59.  $content = str_replace('</strong>','', $content);        
    60.  $content = str_replace('</p>','', $content);        
    61.  $content = str_replace('<p>','', $content);        
    62.  $content = mb_substr( $content, $toDelete); 
    63.  
    64.  
    65.  
    66. for ($i=0; $i<2000; $i++){
    67.     if ($i % 1 == 0);  
    68.      $content = str_replace($i,'', $content );
    69.  
    70. }
    71. $connect = mysqli_connect($db_server, $db_user, $db_pass, $db_base); # Подключаемся к БД
    72. if (!$connect) # Если соединения нет, выводим ошибку на экран
    73. {
    74.     mysqli_error();
    75. }
    76.  
    77. $sql = "SELECT *
    78.     FROM ca 
    79.     WHERE link = '$content'";
    80. $query = mysqli_query($connect, $sql); # Выполняем запрос        
    81. if (mysqli_num_rows($query) > 0) # Если количество искомого значения будет больше одного, выводим сообщение об ошибки
    82. {
    83. }else{
    84.         if(!$content){}else{
    85. $f = fopen("../projects/textfile.txt", "a");
    86. $data = file('../projects/textfile.txt'); 
    87.  
    88.                 array_splice($data, 0, 0, $content ." [monhyip.biz] / add5.php ".date("Y-m-d H:i:s",time())."\n"); 
    89. file_put_contents('../projects/textfile.txt', implode('', $data));
    90.  
    91. $r=mysql_query("INSERT INTO `ca` VALUES(null,'$content','1','".time()."');");
    92.  
    93. $a = 1;
    94.     
    95.  
    96. fclose($f);
    97.  
    98. }}
    99.  
    100. }
    101. ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    www.allhyipmonitors.com, а причем здесь API у них? Я так же парсю другие сайте через file_get_contents и все ок но не берет allhyipmonitors вот почему и делают через curl. Проблема в том что curl не хочет проверять записи из бд...
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    но у нас тут не принято обсуждать парсеры сайтов. законный путь - использовать апи сайта, если таковое предоставлено.
     
  5. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    решила вопрос
    Код (PHP):
    1. $query="SELECT *
    2.     FROM ca 
    3.     WHERE link = '$content'";
    4. $result=mysql_query($query);
    5.  
    6. if (mysql_num_rows($result) > 0)
    7.   
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    зачем выбирать все поля (астериском) если нужно проверить только наличие записи в базе? если далее с этими кортежами ничего не происходит то достаточно выбрать единицу.
     
  7. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    всмысле?
     
  8. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    что именно не ясно? как выбрать единицу вместо астериска (всех полей) ?
    select 1 from table where statement
    если условие истинно то будет выбрано такое кол-во единиц сколько строк попало под условие. не все поля всех этих строк, а тупо по четыре байта на каждую строку. мы же ничего с этими данными потом не делаем. нам нужно просто знать сколько строк попало под условие. еще можно сумму единиц выбрать и потом обработать этот агрегат - мускул в процессе выбора всяк быстрее посчитает кол-во чем пхп сделает num_rows по результирующей таблице.
     
  9. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    ну а смысл? все равно код не для публичного пользования))
     
  10. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    вопрос не в публике а в логическом мышлении программиста. зачем дергать полные кортежи если нужно посчитать только их кол-во. если бы была какая-то обработка строк в цикле - вопросов нет. а так - не самый необходимый оверхед.
     
  11. codend

    codend Новичок

    С нами с:
    22 сен 2015
    Сообщения:
    30
    Симпатии:
    0
    ну вы монстр)