[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сложный и кривой код
Frost-56
Суть и смысл кода:
1. Ищем в mysql есть ли ник который в переменной.
а) Если есть, переходим к следующему.
б) Если нету l отправляем сообщение, добавляем в базу и переходим к следующему.
2. Структура БД:
название бд success, имеет 2 поля: id, nick.
3. Curl работает на отлично.
4. Есть txt файл с никами (построчно).

Проблема: Надо брать из txt 1 строку и вносить в переменную, после обработки толкать следующую строку в переменную.



<?php 
include 'bd.php';

$file = "text.txt";
$nick = 'Freeman2012';
$url = "http://forum.kriminala.net/privmsg.php";
$text = 'username=$nick&subject=Testmessag&folder=inbox&mode=post&antispam=NruIqQQVVo5%2Bg95 JEQGF&post=%CE%F2%EF%F0%E0%E2%E8%F2%FC';

$search = ('SELECT * FROM nick WHERE MATCH success AGAINST ($nick)', $db);
$results
if ($search = ....... =`(


$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $text);
$result = curl_exec($ch);
curl_close($ch); e
echo $result;


mysql_query("INSERT INTO
success (nick)
VALUES ('
$nick')",$db);

mysql_close($db);
?>




Спустя 14 минут, 39 секунд (8.01.2012 - 00:33) Renden написал(а):
а я не понял в чем вопрос то, у тя есть массив $file в котором 1=> первая строчка, 2=> вторая строчка и тп, перебрать форечем и все..
ЗЫ вплане $file = file('text.txt');

Спустя 4 минуты, 15 секунд (8.01.2012 - 00:38) Frost-56 написал(а):
$file = file('text.txt');

ага, тут и есть сама проблема.
1. файл должен будет запускаться кроном.
2. не знаю как сделать грамотный массив.

Спустя 1 минута, 26 секунд (8.01.2012 - 00:39) Renden написал(а):
Frost-56
Ну так функция file сама делает массив..
Цитата
файл должен будет запускаться кроном.

А разница?

Спустя 4 минуты, 27 секунд (8.01.2012 - 00:44) Frost-56 написал(а):
Не знаю, запустится ли курл под кроном.
Про file читал и насколько понял это заносить в while.
да и как расписать ситуацию, надо делать что то типа ?:

$file = file('text.txt');
$file++;

чтобы прибавить строку в случае если она найдена в бд ?

Спустя 21 минута, 9 секунд (8.01.2012 - 01:05) Renden написал(а):
Frost-56
Ну по идее.

$file = file('text.txt');
foreach($file as $val)
{
//Я не совсем точно понял что тебе нужно, но предположим так?
$query = mysql_query("SELECT * FROM `success` WHERE `nick` = '$val'");
if(mysql_num_rows($query))
{
echo 'Такой уже есть иду дальше..';
}
else
{
echo 'Такого нет, добавляю в бд';
mysql_query("INSERT INTO `success` SET `nick` = '$val'");
}
}


Спустя 20 минут, 50 секунд (8.01.2012 - 01:26) Frost-56 написал(а):
буду разбираться, пробовать, спасибо =)

Спустя 1 час, 52 минуты, 42 секунды (8.01.2012 - 03:18) Invis1ble написал(а):
Цитата
Не знаю, запустится ли курл под кроном.

а почему бы и нет? запустится конечно.

Цитата
Про file читал и насколько понял это заносить в while.

видимо читал по диагонали. Самая обыкновенная ф-ция, возвращает массив.
заносить надо туда, куда надо заносить. Ваш КЭП smile.gif

ПС. Прочитав название топика подумал, что сейчас увижу простыню г-кода на несколько килострок smile.gif

Спустя 12 минут, 28 секунд (8.01.2012 - 03:31) Frost-56 написал(а):
Спасибо КЭП куда же без тебя biggrin.gif

По теме: можно примерчик с коментами как у винстона ? wink.gif

Спустя 7 минут, 46 секунд (8.01.2012 - 03:38) Invis1ble написал(а):
Примерчик чего конкретно?

Спустя 1 день, 12 часов, 8 минут, 4 секунды (9.01.2012 - 15:47) Frost-56 написал(а):
Как сделать так чтобы когда выбирался 1ник, скрипт ждал 30 секунд и переходил к следующему нику ?

(надо чтобы перед каждым ником 30 секунд было ожидание)

И ещё, в скрипте у меня есть строка:

$text = 'username=$nick&subject=%D3%F1%EB%F3%E3%E8&addbbcodefontcolor=%23444444&addbbcodefontsize=12' ;;

Как мне в переменную $nick вставлялся этот ник.

Спустя 54 минуты, 11 секунд (9.01.2012 - 16:41) Frost-56 написал(а):
кто нибудь поможет ? =(

Спустя 6 часов, 37 минут, 21 секунда (9.01.2012 - 23:18) Frost-56 написал(а):
помогите уже =(

Спустя 14 минут, 2 секунды (9.01.2012 - 23:32) killer8080 написал(а):
Frost-56
какова конечная цель всего этого? Получить список всех зареганых юзеров на том форуме? Или что?

Спустя 8 минут, 2 секунды (9.01.2012 - 23:40) Frost-56 написал(а):
Полный код:

<?php 
include 'bd.php';
$file = file('text2.txt');

foreach($file as $val)
{
$query = mysql_query("SELECT * FROM `success` WHERE `nick` = '$val'");
if(mysql_num_rows($query))
{
echo 'Такой уже есть иду дальше..';
}
else
{
$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=$val&subject=%D3%F1%EB%F3%E3%E8');
$result = curl_exec($ch);
curl_close($ch);
mysql_query("INSERT INTO `success` SET `nick` = '$val'");
}
}



?>


Смысл в том что мускул проверяет, есть ли ник в бд, если нету, то отправляем сообщение с задержкой 30 секунд и добавляем в mysql если отправилось, а если нет то пропускаем и без задержки и переходим к след. нику.

Ещё тут проблема: строка username=$val не отправляется потому что $val не заменяется переменой которую выставил я, а отправляемся в input как $val :P

Спустя 16 минут, 52 секунды (9.01.2012 - 23:57) killer8080 написал(а):
Frost-56
то есть нужно вычеслить юзеров которые есть в Бд но нет в файле? Это можно было сделать так
$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('file.txt'))."')
"
);
while($row = mysql_fetch_assoc($query)){
sleep(30); // задержка 30 секунд
.... // здесь твой курл запрос
}

Спустя 6 минут, 2 секунды (10.01.2012 - 00:03) Frost-56 написал(а):
<?php 
include 'bd.php';
$file = file('text2.txt');

foreach($file as $val)
{
$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('text2.txt'))."')");
while($row = mysql_fetch_assoc($query))
{
sleep(30);
$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=$val&subject=%D3%F1%EB%F3%E3%E8');
$result = curl_exec($ch);
curl_close($ch);
mysql_query("INSERT INTO `success` SET `nick` = '$val'");
}
else
{
echo 'Иди булок поешь, есть же уже такой';
}
}


?>


Правильно ?


 ! 

М
Мы против мата!
Семён

Спустя 51 минута, 24 секунды (10.01.2012 - 00:54) killer8080 написал(а):
Цитата (Frost-56 @ 9.01.2012 - 23:03)
Правильно ?

нет
я же показал код. Тебе не нужен никакой foreach, в этом варианте сразу берешь из базы только те ники, которых нет в файле.

Спустя 16 часов, 1 минута, 49 секунд (10.01.2012 - 16:56) Frost-56 написал(а):
Скрипт почему то не работает =(

<?php 
include 'bd.php';
$file = file('text2.txt');

$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('text2.txt'))."')");
while($row = mysql_fetch_assoc($query))
{
sleep(30);
$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=$val&subject=%D3%F1%EB%F3%E3%E8');
$result = curl_exec($ch);
curl_close($ch);
echo($result);
mysql_query("INSERT INTO `success` SET `nick` = '$val'");
}


?>

Спустя 5 минут, 49 секунд (10.01.2012 - 17:02) killer8080 написал(а):
Frost-56
во первых выкинь
Цитата (Frost-56 @ 10.01.2012 - 15:56)
$file = file('text2.txt');

зачем дважды читать файл?
Во вторых там возможно нужна авторизация на сайте.

Спустя 18 часов, 8 минут, 31 секунда (11.01.2012 - 11:11) Frost-56 написал(а):
Все равно не работает =(

<?php 
include 'bd.php';

$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('text2.txt'))."')");
while($row = mysql_fetch_assoc($query))
{
sleep(30);
$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=$val&subject=%D3%F1%EB%F3%E3%E8');
$result = curl_exec($ch);
curl_close($ch);
echo($result);
mysql_query("INSERT INTO `success` SET `nick` = '$val'");
}


?>

Спустя 2 часа, 2 минуты, 14 секунд (11.01.2012 - 13:13) Frost-56 написал(а):
никто не знает ?
ошибок нету просто белый экран

Спустя 6 минут, 5 секунд (11.01.2012 - 13:19) Winston написал(а):
Цитата (Frost-56 @ 11.01.2012 - 12:13)
ошибок нету просто белый экран

Подозрительно...
Попробуй так написать
Свернутый текст
<?
include 'bd.php';

$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('text2.txt'))."')") or die(mysql_error());

$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
while($row = mysql_fetch_assoc($query))
{
sleep(30);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username={$val}&subject=" . urlencode('текст'));
$result = curl_exec($ch);
echo curl_error($ch) . '<br/>';
echo $result;
mysql_query("INSERT INTO `success` SET `nick` = '{$val}'") or die(mysql_error());
}
curl_close($ch);
?>

Спустя 23 минуты, 36 секунд (11.01.2012 - 13:42) Frost-56 написал(а):
Ничего не изменилось =(

Спустя 11 минут, 43 секунды (11.01.2012 - 13:54) Winston написал(а):
Цитата (Frost-56 @ 11.01.2012 - 12:13)
ошибок нету просто белый экран

А индикатор загрузки страницы во вкладке стоит или крутиться? То есть страница полностью загружена, или грузится продолжительное время?

Спустя 41 секунда (11.01.2012 - 13:55) Frost-56 написал(а):
секунды 3 грузится и все, типа загружена

Спустя 1 минута, 13 секунд (11.01.2012 - 13:56) Winston написал(а):
sleep не пробовал убирать?



Спустя 45 секунд Winston написал(а):
И попробуй поставить CURLOPT_RETURNTRANSFER, 0



Спустя 2 минуты, 41 секунда Winston написал(а):
Откуда берется $val? если ты написал $row = mysql_fetch_assoc($query) ???

Спустя 4 минуты, 31 секунда (11.01.2012 - 14:01) Invis1ble написал(а):
первым делом в начало скрипта
error_reporting(E_ALL);
ini_set('display_errors', 'On');

и будет счастье



Спустя 2 минуты, 30 секунд Invis1ble написал(а):
и нахрена sleep(30) стоИт? ты б еще sleep(100500) поставил и ждал



Спустя 4 минуты, 37 секунд Invis1ble написал(а):
и судя по privmsg.php в url авторизация таки нужна.
и да, спам - это плохо

Спустя 8 минут, 58 секунд (11.01.2012 - 14:10) Frost-56 написал(а):
У меня в htaccess прописано
php_value display_errors 1
php_value display_startup_errors 1
думал будет достаточно

Цитата
и нахрена sleep(30) стоИт? ты б еще sleep(100500) поставил и ждал


стоит анти-флуд 30 секунд, вот и надо слип30.

Цитата
и судя по privmsg.php в url авторизация таки нужна.


авторизация есть, он берет из cookie, уже проверял отдельным ником.

Спустя 3 минуты, 9 секунд (11.01.2012 - 14:13) Winston написал(а):
Цитата (Frost-56 @ 11.01.2012 - 13:10)
авторизация есть, он берет из cookie, уже проверял отдельным ником.

Если вручную прописать ник, то авторизация успешна?
Еще раз повторюсь
Цитата (Winston @ 11.01.2012 - 12:56)
Откуда берется $val? если ты написал $row = mysql_fetch_assoc($query) ???

curl_setopt($ch, CURLOPT_POSTFIELDS, "username={$val}&subject=" . urlencode('текст')); 

???

Может быть $row['val'] ?

Спустя 1 минута, 47 секунд (11.01.2012 - 14:15) Invis1ble написал(а):
Цитата
php_value display_errors 1

только включает отображение ошибок, а судя по тому что у тебя левая переменная в коде и нет сообщений об ошибках - не хватает error_reporting()

Спустя 1 минута, 11 секунд (11.01.2012 - 14:16) Frost-56 написал(а):
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include 'bd.php';

$query = mysql_query("
SELECT *
FROM `success`
WHERE `nick` NOT IN ('"
.implode("','", file('text2.txt'))."')") or die(mysql_error());

$url = "http://forum.kriminala.net/privmsg.php";
$ch = curl_init();
while($row = mysql_fetch_assoc($query))
{
sleep(30);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username={$row}&subject=" . urlencode('текст'));
$result = curl_exec($ch);
echo curl_error($ch) . '<br/>';
echo $result;
mysql_query("INSERT INTO `success` SET `nick` = '$row'") or die(mysql_error());
}
curl_close($ch);
?>


Сделал так, но ничего не изменилось, та же пустая страница и пустая бд

Спустя 3 минуты, 24 секунды (11.01.2012 - 14:19) Invis1ble написал(а):
Цитата
username={$row}
Цитата
`nick` = '$row'"

разберись сначала, в чем отличие массивов от строк, а потом уже лезь дальше

Спустя 4 минуты, 24 секунды (11.01.2012 - 14:24) Winston написал(а):
$row - это массив.
Напиши в цикле print_r($row);
И увидишь какие там индексы и значения.
А потом уже будешь подставлять
{$row['имя_поля_БД_в_котором_хранятся_ники']}

Спустя 1 минута, 29 секунд (11.01.2012 - 14:25) Invis1ble написал(а):

 ! 

М
Я думаю тему можно закрыть, ибо нефиг учить спаммеров спамить.
Если кто-то несогласен с решением - велкам в личку.
Invis1ble
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.