У меня ещё 1 вопрос: вот есть у курла стандартаные константы, например, для UA, я не могу, не используя эту константу, работать напрямую с массивом заголовков? Или если есть константа, то этот заголовок нужно слать через неё? В курле в массиве заголовков, нужно их отделять \r\n? Или перевода строки с помощью ентер - достаточно? Как сказать курлу, что я отправляю Accept-Encoding? Спасибо за ответ.
Думаю глупый вопрос но не могу понять как реализовать. Переменная держит в себе число типа float Это может быть 11, 0.55 и т.д. Нужно сделать так чтоб целые числа были с 2мя нулями после запятой А если число не целое то так и оставлять
Парни помогите сделать следующее, надо что бы программа брала строку из файла каждый час, как пройдет час после того как программа взяла строку надо что бы эта строка удалялась из файла, и бралась следующая строка по такому же принципу. Как такое реализовать? Подскажите, заранее благодарен!
я так понял ты капчу руками вводишь? а мне вот делать нечего, на вот тебе распознавалку сделал PHP: <?php function captcha_recognize($filename) { $symbols = array( //забиваем массив идентификаторами циферок '---XX---'. '-X---XX-'. '-X----X-'. 'XX----XX'. 'X------X'. 'X------X'. 'X------X'. 'X------X'. 'XX----XX'. '-X----X-'. '-XX--XX-'. '---XX---', '--------'. '---X----'. '-XXX----'. 'XX-X----'. '---X----'. '---X----'. '---X----'. '---X----'. '---X----'. '---X----'. '---X----'. '---X----', '---XXX--'. '-XX---X-'. '-X-----X'. '-------X'. '------X-'. '------X-'. '-----X--'. '----X---'. '---X----'. '--X-----'. '-X------'. 'XXXXXXXX', '--XX----'. 'XX---X--'. 'X----X--'. '-----X--'. '-----X--'. '---XX---'. '-----X--'. '------X-'. '------X-'. 'X-------'. 'X----X--'. '--XX----', '-----X--'. '-----X--'. '----XX--'. '---X-X--'. '-----X--'. '--X--X--'. '-X---X--'. '-----X--'. 'XXXXXXXX'. '-----X--'. '-----X--'. '-----X--', '-XXXXXX-'. '-X------'. '-X------'. '-X------'. '---XX---'. 'XX---X--'. '------X-'. '------X-'. '------X-'. 'X-----X-'. '-X---X--'. '--XXX---', '---XXX--'. '--X---X-'. '-X----X-'. 'XX------'. 'X--XXX--'. 'XX----X-'. 'XX----X-'. 'X------X'. 'X------X'. '-X----X-'. '-X----X-'. '---XX---', 'XXXXXXXX'. '------X-'. '-----X--'. '----XX--'. '----X---'. '---XX---'. '---X----'. '---X----'. '--X-----'. '--X-----'. '--X-----'. '--X-----', '---XX---'. '-X---XX-'. '-X----X-'. '-X----X-'. '-X----X-'. '--XXXX--'. '-X----X-'. 'X------X'. 'X------X'. 'X------X'. '-X----X-'. '---XX---', '---XX---'. '-X----X-'. 'XX------'. 'X------X'. 'X------X'. '-X----XX'. '--XXX--X'. '-------X'. '------XX'. '-X----X-'. '-X---X--'. '--XXX---'); $return = ''; //это мы будем возвращать list($width, $height) = getimagesize($filename); //определяем размер $source = imagecreatefromgif($filename); //грузим картинку $im = imagecreatetruecolor($width, $height); //создаём новую imagecopyresized($im, $source, 0, 0, 0, 0, $width, $height, $width, $height); //и сохраняем её //а всё потому, что на сервере капча гененируется через imagecreate вместо imagecreatetruecolor и нихера у нас без этого не получится //кому интересно - попробуйте брать оригинальюную картинку, imagecolorat будет возвращать рандомные данные imagedestroy($source); //выгружаем, он нам не нужен $was_new_symbol = false; //будем записывать какой была $new_symbol for($x=0;$x<$width;$x++) { //гоним по X $new_symbol = false; //мы ещё на нашли новый тёмный пиксель for($y=0;$y<$height;$y++) { //гоним по Y $color = imagecolorat($im, $x, $y); //определяем цвет пикселя if($color <= 3353395) { //если цвет темнее, значит мы нашли часть циферки на капче $new_symbol = true; //запоминаем } } if($new_symbol == true && $was_new_symbol == false) { //если в предыдушем цикле мы нашли циферку, а в прошлый раз там все пиксели были светлые, значит точно нашли $id = ''; //создаём идентификатор $matches = array(0,0,0,0,0,0,0,0,0,0); //записываем кол-во совпадений for($y2=4;$y2<=15;$y2++) { //гоним по Y 4 - 15 там размещается циферка по высоте for($x2=$x;$x2<=$x+7;$x2++) { //гоним по X - X+7 там размещается циферка по ширине $color = imagecolorat($im, $x2, $y2); //определяем цвет if($color <= 3353395) { //если пиксель тёмный, пишем в индентификатор "X" иначе пишем "-" $id .= 'X'; }else{ $id .= '-'; } } } foreach ($symbols as $symbol=>$symbol_id) { //берём наш массив идентификаторов $len = strlen($symbol_id); //определяем длину идентификатора for($i=0;$i<$len;$i++) { //гоним по длине и берём по 1му символу ("-" или "X") if($id[$i] == 'X' && $symbol_id[$i] == $id[$i]) { //если текущий символ "X" и он совпадает с символом идентификатора $matches[$symbol]++; //записываем это совпадание } } } arsort($matches); //сортируем совпадания по убыванию $return .= key($matches); //берём первый ключ - это и есть циферка, которую мы ищем } $was_new_symbol = $new_symbol; //запоминаем нашли мы тёмный пиксель или нет за этот прогон } imagedestroy($im); //выгружаем капчу из памяти return $return; //возвращаем строку } ?> прокомментировал там тебе всё, чтоб разобрался никаких обработок ошибок не делал, сам давай сохраняешь свою http://www.wmraskrutim.ru/img.php?type=login например в C:/captcha.gif только куки не забудь передать потом $code = captcha_recognize('C:/captcha.gif'); в $code будут твои числа с картинки время распознования 0.024 секунды... на моих 6 ядрах 3.2 ух, накодился я, можно и погамать
Ponchik, ты когда массив symbols заполнял, то использовал какой-то шаблон (всегда цифры так выглядят), или каким-то образом сам просчитывал расположение цифр? Какой проверки данных, которые пришли из форм, достаточно, чтобы обезопасить себя от самых простых xss? Делаю так: PHP: if( isset($_POST['name']) && !empty($_POST['name']) && !is_array($_POST['name']) ){ $name = stripslashes(trim(htmlspecialchars($_POST['name'],ENT_QUOTES))); }
PHP: if($color <= 3353395) { //если пиксель тёмный, пишем в индентификатор "X" иначе пишем "-" $id .= 'X'; }else{ $id .= '-'; } echo $id; stripslashes делает как mysql_real_escape_string только наоборот в общем если у тебя этот $name не идёт в MySQL или в инклуд то норм а так это сразу и SQL Inj и нуллбайт
Не, не, вопрос про другое. Ты в начале составил массив, в котором с помощью символа X записаны все цифры от 0 до 9. Ты чем руководствовался, когда его составлял? Или ты сначала выводил переменную $id, а потом на основание вывода этой переменной получал набор символов, которые характеризуют это число? Т.е., сначала нужно написать все кроме массива с символами, характеризующими числа, а затем составить этот пасив? Как будет выглядеть скрипт, который принимает из формы данные, которые идут в бд? Желательно, без использования PDO, т.к. я с ним плохо работаю. Чтобы человек, который прочитал статьи про виды уязвимостей, не смог провести атаку? Создал на своем хостинге простенькую страницу, в которой есть форма из двух полей: текстовое поле и сабмит. Выключил magic quote, написал вывод переменной из формы на этой же странице, хотел поглядеть, будет ли выполняться алерт в форме. К моему удивлению, алерт не выполнялся. Символы ,"\/<> выводились, а <gserge> - нет. На каком уровне происходит защита? На уровне настройки пхп? Кстати, < script > - выводилось. Буду рад услышать ответы на все вопросы. Спасибо.
Hixon Если вы жаждете получать неожиданные результаты, как, например, с Encoding - можете работать с заголовками через CURLOPT_HTTPHEADER. Но я сильно рекомендую писать правильный код. На второй вопрос ответил krypt3r Уберите stripslashes и trim - ими вы только вредите себе (точнее первым вредите, второй бесполезен). Плюс если используете одинарные кавычки у аттрибутов, устаналивайте второй параметр htmlspecialchars в ENT_QUOTES. https://forum.antichat.ru/thread30641.html
Gifts, спасибо за ответы. Много человек мне сказали, что с курлом нужно работать, используя константы, а не на прямую с заголовками. Мол, если я хочу использовать заголовки, то нужно переходить на сокеты, которых, к сожалению, пока я не знаю. Вероятно, люди правы, буду использовать константы. За это - отдельное спасибо.
Всем привет,подскажите пожалуста,скачал файлообменник на пхп,постаивл денвер,у мну свой сервак,в денвере изменил post и upload поставил размер 2000м где то, но не могу никак понять файлы загружаются и выдается ссылка на скачивание, но более 128 метров файлы не скачиваются с сервака,хотя они тама лежат в зашифрованном виде в папке,а менее 128 мегабайт спокойно можно скачать по ссылке,в чем может быть проблема,подскажите плиииз((
в php.ini найди memory_limit = 128M но это ололо какой неправильный файлообменник ты скачал, если 10 человек будут качать файлы по 1гб, у тебя сервер будет жрать 10 гигов оперативки найди там где он делает file_get_contents или чёто такое и перепиши на fread да, так и сделал но что значит сначала всё сделать распознавание без массива не сделаешь методом тыка вычисляешь насколько тёмные пиксели тебе подходят ищешь начало циферок определяешь какие пиксели записывать в идентификатор, если капча большая и всегда одинаковая, то можешь по +10 пропускать ну и выводишь это, делаешь массив, и потом уже сравниваешь но эта капча она немного рандомная, пиксели не совпадают на 100% пришлось делать количество совпадений
Менял я memory_limit и 2000м ,ставил все равно тоже самое(((, file_get_contents, не могу такого найти,смотрел download.php и upload.php,скрипт называется mini file host,скачивал и другие где есть шифрование ,примерно такая же проблема(,закачивает но не качает более 128 м
отправляю сообщение через курл на форум, соощение приходит в таких символах Новости 23.07.2011 Р*абота системы была восстановлена Можете вернуть РєРѕРґС‹, учет трафика производится. как мне быть из какой кодировки в какую кодировать?
Скорей всего вы передаёте на форум сообщение в кодировке win1251, а на форуме кодировка utf8, нужно перед отправкой перекодировать сообщение командой convert_cyr_string и дело в шляпе...
спасибо, попробую ещо вопрос, есть файл с текстом PHP: <div class="new"> <span class="date">23.07.2011</span> <span class="title">Работа системы была восстановлена</span> <span class="text">Можете вернуть коды, учет трафика производится.</span> нужно оставить только русские буквы без тегов делаю так PHP: $aa = preg_replace('<(.*?)>','',$a[0]); тоесть он должен удалить всё што между < > а удаляет всё, как быть?