Просмотр полной версии : [php] Новичкам: задаем вопросы
m0Hze Потому что гладиолус.
Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.
while ($row = mysql_fetch_array($query)) print_r($row);
А немогли с самого начала сказать,а не выеживаца?
Спасибо.
Есть функция которая выводит дату...
$date = date("d.m.Y", time());
Как из этот даты получить обратно секунды как в функции time()
Точность как видите до 1 дня...
Есть функция которая выводит дату...
$date = date("d.m.Y", time());
Как из этот даты получить обратно секунды как в функции time()
Точность как видите до 1 дня...
_ttp://ru2.php.net/manual/ru/function.strtotime.php
Как сделать чтоб было так не было хтмл тегов
function treecat($parent=0,$lv=0)
{
connection();
$sql = mysql_query('SELECT id,parent,name FROM category where parent = '.intval($parent));
while($cat = mysql_fetch_array($sql))
{
if ($lv == 2 ) break;
if ($cat['parent'] !=0) {
echo "<tbody><tr><td><a href=theme.php?cat=".$cat['id'].">".$cat['name']."</a></td></tr></tbody>";
}
else
{
echo "<thead><tr><th class=\"title\">". $cat['name']."</th></tr></thead>";
}
treecat($cat['id'],$lv+1) ;
}
}
Например если сделать так в выводит массив
function treecat($parent=0,$lv=0)
{
$arr= array();
connection();
$msql = mysql_query('SELECT id,parent,name FROM category where parent = '.intval($parent));
if(mysql_num_rows($msql)> 0) {
while($cat = mysql_fetch_array($msql))
{
if ($lv == 2 ) break;
$arr[] = $cat;
//echo "<tbody><tr><td><a href=theme.php?cat=".$cat['id'].">".$cat['name']."</a></td></tr></tbody>";
//echo "<thead><tr><th class=\"title\">". $cat['name']."</th></tr></thead>";
$arr[] = treecat($cat['id'],$lv+1) ;
}
return $arr ;
}
}
$forum = treecat();
echo "<pre>";
print_r($forum);
?>
Array
(
[0] => Array
(
[0] => 3
[id] => 3
[1] => 0
[parent] => 0
[2] => Auto
[name] => Auto
)
[1] => Array
(
[0] => Array
(
[0] => 5
[id] => 5
[1] => 3
[parent] => 3
[2] => BNW
[name] => BNW
)
[1] => Array
(
)
[2] => Array
(
[0] => 6
[id] => 6
[1] => 3
[parent] => 3
[2] => Mercedes Benz
[name] => Mercedes Benz
)
[3] =>
)
[2] => Array
(
[0] => 4
[id] => 4
[1] => 0
[parent] => 0
[2] => Work
[name] => Work
)
[3] => Array
(
[0] => Array
(
[0] => 7
[id] => 7
[1] => 4
[parent] => 4
[2] => Find job
[name] => Find job
)
[1] =>
[2] => Array
(
[0] => 8
[id] => 8
[1] => 4
[parent] => 4
[2] => Get job
[name] => Get job
)
[3] =>
)
[4] => Array
(
[0] => 9
[id] => 9
[1] => 0
[parent] => 0
[2] => Programing language
[name] => Programing language
)
[5] => Array
(
[0] => Array
(
[0] => 10
[id] => 10
[1] => 9
[parent] => 9
[2] => Php
[name] => Php
)
[1] =>
[2] => Array
(
[0] => 11
[id] => 11
[1] => 9
[parent] => 9
[2] => C++
[name] => C++
)
[3] =>
)
[6] => Array
(
[0] => 13
[id] => 13
[1] => 0
[parent] => 0
[2] => Films
[name] => Films
)
[7] => Array
(
[0] => Array
(
[0] => 14
[id] => 14
[1] => 13
[parent] => 13
[2] => Comedy
[name] => Comedy
)
[1] =>
[2] => Array
(
[0] => 15
[id] => 15
[1] => 13
[parent] => 13
[2] => Triller
[name] => Triller
)
[3] =>
)
)
как его потом вывести в хтмл вида
и правельно ли я вернул массив
как его потом вывести в хтмл вида ..
<table border="1" width="70%" cellpadding="2" cellspacing="0 class="bord" >
<thead><tr><th class="title"></th></tr></thead>
<tbody>
<tr><td><a href=theme.php?cat=""> </a></td></tr>
</tbody>
</table>
<br/>
Суб категория
<table border="1" width="70%" cellpadding="2" cellspacing="0 class="bord" >
<thead><tr><th class="title"></th></tr></thead>
<tbody>
<tr><td><a href=theme.php?cat=""> </a></td></tr>
</tbody>
</table>
Как лучше это сделать?
Знает кто-нибудь хостинг (платный/бесплатный), где можно открывать постоянное соединение с mysql-сервером и постепенно передавать ему запросы, лимитов на время быть не должно.
Спасибо.
как рандомно достать запись из БД?
И возвожно это по средствам запроса сделать?
mailbrush
27.04.2009, 19:54
Как полностью остановить работу скрипта, после чего сразу же возобновить. Цикл foreach. sleep(), flush(), не предлагать, т.к. они приостанавливают, но скрипт работает.
Как полностью остановить работу скрипта, после чего сразу же возобновить. Цикл foreach. sleep(), flush(), не предлагать, т.к. они приостанавливают, но скрипт работает.
Я думаю тогда только запись в БД или фаил и потом проверка на время по крону
2Byrger
mysql_query("SELECT * from table_name where id=rand(1,mysql_field_count())");
mysql_field_count()- узнаете кол-во строк;
rand()-выводите число в диапазоне от 1 до [кол-во строк]
У меня id не упарядоченое.
mailbrush
27.04.2009, 20:50
mysql_query("SELECT id from table_name limit 1,mysql_field_count()");
KaZ@NoVa
28.04.2009, 01:16
eD']Знает кто-нибудь хостинг (платный/бесплатный), где можно открывать постоянное соединение с mysql-сервером и постепенно передавать ему запросы, лимитов на время быть не должно.
Спасибо.
Явно платный нужен, и подойдет любой с хорошим саппортом.. стоит только учесть что если запросы будут с большой нагрузкой - надо либо дедик, либо самый лояльный хостер тебя прикроет..
у меня бы встал такой вопрос - я бы непосредственно в саппорт хостингов обратился.. собственно раз даже догооврился открыть порт для аськи ;) пообщав что онлайн игры вешать не буду и спамить тож )) ну как обычно вообщем.. ))
Может кто знает как сделать авторизацию по юзеру в веб форме.Т.е . Надо чтобы пользователь мог авторизоваться и увидеть определенную страницу, которую я напишу.
Пользователь Вася вводить свой логин и пасс и видит привет вася, а пользователь Петя допустим вводит логин и пасс и видит допустим страницу привет корч Петя...
<?php
$model = array('0'=>array('name'=>'Auto'),
'1'=>array('0'=>array('name'=>'Model1'),
'1'=>array('name'=>'Model2') ));
?>
<table border="1" width="70%" cellpadding="2" cellspacing="0 class="bord" >
<?php
foreach($model as $v)
foreach($v as $vz) {
?>
<thead><tr><th class="title">
<?php echo $vz; ?>
</th></tr></thead>
<?php
foreach($vz as $z)
{
?>
<tbody>
<tr><td><a href=><?php echo $z; ?></a></td></tr>
</tbody>
<?php
}
}
?>
</table>
<br/>
Warning: Invalid argument supplied for foreach()
Хотя и данные достает
Как избавиться еще от Array
Может кто знает как сделать авторизацию по юзеру в веб форме.Т.е . Надо чтобы пользователь мог авторизоваться и увидеть определенную страницу, которую я напишу.
Пользователь Вася вводить свой логин и пасс и видит привет вася, а пользователь Петя допустим вводит логин и пасс и видит допустим страницу привет корч Петя...
function autorization($login,$pass)
{
connection();
$q="select id,name from user where name='".$login."' and pass='".$pass."' limit 1";
$rezult = mysql_query($q);
if (!$rezult) echo mysql_error();
if (mysql_num_rows($rezult) > 0) {
$rows = mysql_fetch_array($rezult);
$_SESSION['user'] = $rows['id'];
$_SESSION['name'] = $rows['name'];
}
}
CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`pass` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`icq` int(8) NOT NULL default '0',
`picture` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
потом используй сессии $_SESSION['user']
делай проверку на сессиЮ
как выполнить system("clear.bat"); чтоб небыло видно на странице? А то у мну надпись вверху c:\webserv\echo off
system("clear.bat",$ret);
серно вывод есть( C:\webserv\>echo off
function autorization($login,$pass)
{
connection();
$q="select id,name from user where name='".$login."' and pass='".$pass."' limit 1";
$rezult = mysql_query($q);
if (!$rezult) echo mysql_error();
if (mysql_num_rows($rezult) > 0) {
$rows = mysql_fetch_array($rezult);
$_SESSION['user'] = $rows['id'];
$_SESSION['name'] = $rows['name'];
}
}
потом используй сессии $_SESSION['user']
делай проверку на сессиЮ
можно поподробнее?с html с php страничкой,а то я неочень азбираюсь
Велсипед изрбретаем товарищи.
http://freshcoder.ru/archives/249
как выполнить system("clear.bat"); чтоб небыло видно на странице? А то у мну надпись вверху c:\webserv\echo off
system("clear.bat",$ret); непомогает, ребя помогите :confused:
system("clear.bat",$ret); непомогает, ребя помогите :confused:
попробуй exec("clear.bat"); хотя я не понял почему у меня пхп ругается на третий параметр функции system
Nightmarе
28.04.2009, 14:46
У меня к вам следующий вопрос ©
Есть функция замены всех русских символов на английские, а так-же всех спецсимволов на _
function transliteral($text=null){
$maska=array('Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch','Ю'=>'Yu'
,'ш'=>'sh','щ'=>'sch','ю'=>'yu','я'=>'ya'
,'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G'
,'Д'=>'D','Е'=>'E','Ё'=>'E','Ж'=>'J'
,'З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K'
,'Л'=>'L','М'=>'M','Н'=>'N','О'=>'O'
,'П'=>'P','Р'=>'R','С'=>'S','Т'=>'T'
,'У'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'C'
,'Ъ'=>'"','Ы'=>'Y','Ь'=>'b','Э'=>'E'
,'а'=>'a','б'=>'b','в'=>'v','г'=>'g'
,'д'=>'d','е'=>'e','ё'=>'e','ж'=>'j'
,'з'=>'z','и'=>'i','й'=>'y','к'=>'k'
,'л'=>'l','м'=>'m','н'=>'n','о'=>'o'
,'п'=>'p','р'=>'r','с'=>'s','т'=>'t'
,'у'=>'u','ф'=>'f','х'=>'h','ц'=>'c'
,'ь'=>'b','ы'=>'y','ъ'=>'"','э'=>'e'
,'Я'=>'Ya','ч'=>'ch' ,' '=>'_','@'=>'_'
,'#'=>'_',','=>'_','{'=>'_','}'=>'_'
,'['=>'_',']'=>'_');
return !empty($text) ? strtr($text,$maska) : null;
}
Она работает хорошо если работать с текстом напрямую, но при заливке файлов криво заменяет имена файлов.
Вот например простой текст:
$lol = "Текстовый документ (2).txt";
echo transliteral($lol);
Выводит: Tekstovyy_dokument_(2).txt
Но если воспользоваться вот так:
$uploadfile = basename($_FILES['userfile']['name']);
move_uploaded_file($_FILES['userfile']['tmp_name'], transliteral($uploadfile))
То файлы криво называются, например тот-же "Текстовый документ (2).txt" отображается потом как: "_dokument_(2).txt"
Поясните почему так происходит, и как это исправить.
попробуй exec("clear.bat"); хотя я не понял почему у меня пхп ругается на третий параметр функции system
exec("clear.bat"); работает! =) Спс!
erihtoney
28.04.2009, 15:02
2Nightmarе
Попробуйте по другому определять имя файла,не использую basename,незнаю,но возможно идет кодировкание в hex и обратно,чисто по логике
Как достать из каталога имена файлов?
Nightmarе
28.04.2009, 15:08
2Nightmarе
Попробуйте по другому определять имя файла,не использую basename,незнаю,но возможно идет кодировкание в hex и обратно,чисто по логике
Тогда там будет вообще полный путь до файла.
не думаю что это поможет.
erihtoney
28.04.2009, 15:10
2Byrger
<?php
$path = "/path/other/file.txt";
echo basename($path );
// выводит "file.txt"
echo basename($path, '.txt');
// выводит "file"
?>
2Byrger
<?php
$path = "/path/other/file.txt";
echo basename($path );
// выводит "file.txt"
echo basename($path, '.txt');
// выводит "file"
?>
Имена!
тоесть нужен цикл который будет просмотривать каталог и выводить имена файлов...
mailbrush
28.04.2009, 16:20
2Byrger
<?php
$dir = "/tmp/";
// Открыть заведомо существующий каталог и начать считывать его содержимое
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
print "Файл: $file : тип: " . filetype($dir . $file) . "<br>";
}
closedir($dh);
}
}
Тогда там будет вообще полный путь до файла.
не думаю что это поможет.
Также столкнулся с этим.Свзяано,как я понял,с тем,что символы заменяються по 2 раза.Тоесть прошел один круг,и пошел на второй,вот первые символы и меняються по нескольку раз.
http://www.govnokod.ru/960
Недавно что-то подобное писал. Как будет рациональнее? Заюзать функцию?
Nightmarе
28.04.2009, 16:49
Также столкнулся с этим.Свзяано,как я понял,с тем,что символы заменяються по 2 раза.Тоесть прошел один круг,и пошел на второй,вот первые символы и меняються по нескольку раз.
Не думаю, функция move_uploaded_file имеет 2 параметра, что и куда, она просто кладёт файл и всё.
Ничего 2 раза не делается. Хотя могу и ошибатсья, но на мой взгляд именно так.
Причём у меня на локалхосте никаких проблемм нету (Винда), либо это только на линуксе, либо ещё какая настройка.
Недавно что-то подобное писал. Как будет рациональнее? Заюзать функцию?
если я правильно понял, что ты хочеш - делай так:
if (isset($_POST['id'])) $id = $_POST['id'];
Не думаю, функция move_uploaded_file имеет 2 параметра, что и куда, она просто кладёт файл и всё.
Ничего 2 раза не делается. Хотя могу и ошибатсья, но на мой взгляд именно так.
Причём у меня на локалхосте никаких проблемм нету (Винда), либо это только на линуксе, либо ещё какая настройка.
Во тдада,у меня на винде все тоже отлично,на Фряхе,все ломаеца.Либо первы есимволы кривые,либо последние.
Мучался,мучался,ну ее нах.Сделал проще.
$a = "Hello";
И в php предусмотрено, $a[1] уже равна "H".Тоесть это уже массив.
Я просто в ццикле,меняю отдельно каждую букву вот и все.
А с str_replace, strtr я мучаца задолбался
mailbrush
28.04.2009, 17:05
register_globals есть, но юзать не рекомендую.
Nightmarе
28.04.2009, 18:08
Во тдада,у меня на винде все тоже отлично,на Фряхе,все ломаеца.Либо первы есимволы кривые,либо последние.
Мучался,мучался,ну ее нах.Сделал проще.
$a = "Hello";
И в php предусмотрено, $a[1] уже равна "H".Тоесть это уже массив.
Я просто в ццикле,меняю отдельно каждую букву вот и все.
А с str_replace, strtr я мучаца задолбался
Если не сложно, выложи плз полный код как это реализуется.
Чтото типо.
$text = "Привет люди! Это тестовый скрипт транслита!";
function translit($text)
{
$array = str_split($text);
$rus = array('а', 'б', 'ц', 'д', 'е', 'ф', 'г', 'х', 'и', 'й', 'к', 'л', 'м',
'н', 'о', 'п', 'э', 'р', 'с', 'т', 'у', 'ю', 'в', 'ш', 'ы', 'ч', 'з', 'я', 'А',
'Б', 'Ц', 'Д', 'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Э',
'Р', 'С', 'Т', 'У', 'Ю', 'В', 'Ш', 'Ы', 'Ч', 'З',' ');
$eng = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'e', 'r', 's', 't', 'u','yu', 'v', 'w', 'i', 'y', 'z', ';', 'A', 'B',
'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'E', 'R',
'S', 'T', 'U','Yu', 'V', 'W', 'I', 'Y', 'Z','_');
for ($i = 0; $i < count($array); $i++) {
$str .= str_replace($rus, $eng, $array[$i]);
}
return ($str);
}
echo translit($text);
Но,нужно некторые буквы,в транслите заменить,масив кривой,и некоторые буквы повторяються,например "И"и "Ы" заменяються одинаковыми символамИ,поэтому при ре-транслите,будут ошибки.Ну это уже сам дорабатывай,как ты хочеш чтобы заменяло.Вот этот вариант,у меня на никсах работает,а с обычным стр_репласе,без отдельных элемеентов масива - непашеьт,так же как у тебя.
А как можно подсчитать кол-во вхождений символов в строке(тексте)?
ну вот в общем есть один метод расшифровки сообщений "статистический" называется! Т.е. есть определённая статистика по "вхождению" букв в текст(есле надо преведу вам её позже, щас в универ бежать надо :) ) и вот собирается статистика с зашифрованного сообщения, а после сравнивается с "табличными" значениями и затем заменяются буквы.
вот например буква "а" встречается допустим 15 раз на 100 символов, сняв статистику с зашифрованного сообщения видим что "ы" встречается также 15/100 раз ну и значит заменяем все "Ы" на "А".
Pashkela
29.04.2009, 11:20
<?php
echo substr_count("This is a test", "is"); // 2
?>
http://ru.php.net/substr_count
Balvan print_r(count_chars('Какая-то произвольная строка',1)); Правда все равно шифр простой замены на коротком сообщении вряд ли можно разгадать, плюс многие буквы встречаются с одинаковой вероятностью (опять таки для языка в целом, но не для данного сообщения)
А как можно подсчитать кол-во вхождений символов в строке(тексте)?
ну вот в общем есть один метод расшифровки сообщений "статистический" называется! Т.е. есть определённая статистика по "вхождению" букв в текст(есле надо преведу вам её позже, щас в универ бежать надо :) ) и вот собирается статистика с зашифрованного сообщения, а после сравнивается с "табличными" значениями и затем заменяются буквы.
вот например буква "а" встречается допустим 15 раз на 100 символов, сняв статистику с зашифрованного сообщения видим что "ы" встречается также 15/100 раз ну и значит заменяем все "Ы" на "А".
http://www.sendspace.com/file/la1dhk
тут специальная програмулина для частотного криптоанализа =) ею будет проще ;) сначала кормишь ей текст что в архиве или любой другой, потом свой шифротекст, а дальше ты сам знаешь что делать)
У меня к вам следующий вопрос ©
Есть функция замены всех русских символов на английские, а так-же всех спецсимволов на _
function transliteral($text=null){
$maska=array('Ч'=>'Ch','Ш'=>'Sh','Щ'=>'Sch','Ю'=>'Yu'
,'ш'=>'sh','щ'=>'sch','ю'=>'yu','я'=>'ya'
,'А'=>'A','Б'=>'B','В'=>'V','Г'=>'G'
,'Д'=>'D','Е'=>'E','Ё'=>'E','Ж'=>'J'
,'З'=>'Z','И'=>'I','Й'=>'Y','К'=>'K'
,'Л'=>'L','М'=>'M','Н'=>'N','О'=>'O'
,'П'=>'P','Р'=>'R','С'=>'S','Т'=>'T'
,'У'=>'U','Ф'=>'F','Х'=>'H','Ц'=>'C'
,'Ъ'=>'"','Ы'=>'Y','Ь'=>'b','Э'=>'E'
,'а'=>'a','б'=>'b','в'=>'v','г'=>'g'
,'д'=>'d','е'=>'e','ё'=>'e','ж'=>'j'
,'з'=>'z','и'=>'i','й'=>'y','к'=>'k'
,'л'=>'l','м'=>'m','н'=>'n','о'=>'o'
,'п'=>'p','р'=>'r','с'=>'s','т'=>'t'
,'у'=>'u','ф'=>'f','х'=>'h','ц'=>'c'
,'ь'=>'b','ы'=>'y','ъ'=>'"','э'=>'e'
,'Я'=>'Ya','ч'=>'ch' ,' '=>'_','@'=>'_'
,'#'=>'_',','=>'_','{'=>'_','}'=>'_'
,'['=>'_',']'=>'_');
return !empty($text) ? strtr($text,$maska) : null;
}
Она работает хорошо если работать с текстом напрямую, но при заливке файлов криво заменяет имена файлов.
Вот например простой текст:
$lol = "Текстовый документ (2).txt";
echo transliteral($lol);
Выводит: Tekstovyy_dokument_(2).txt
Но если воспользоваться вот так:
$uploadfile = basename($_FILES['userfile']['name']);
move_uploaded_file($_FILES['userfile']['tmp_name'], transliteral($uploadfile))
То файлы криво называются, например тот-же "Текстовый документ (2).txt" отображается потом как: "_dokument_(2).txt"
Поясните почему так происходит, и как это исправить.
Если ктото сталкнетьсяя с такой проблеой,то вся проблема была в basename($_FILES['userfile']['name']);
Без basename все прекрасно работает,ведь в $_FILES['userfile']['name'] находиться название,без пути,так что вот в чем были траблы.
Помогите исправить ICQ-бот на PHP что бы он при получении сообщения от кого-либо отправлял сообщения с текстом из текстового файла по-строчно, с небольшим интервалом времени, как бы имитируя разговор настоящего человека.
Т.е. на каждое полученое сообщение от одного номера отвечал новой фразой из текстового файла.
<?
include "c99phpicq.php";
set_time_limit (0);
ignore_user_abort(true);
$icq = new ICQclient("uin","pass");
$icq->errorstream = false;
$icq->dbgstream = false;
$icq->connect();
$icq->setstatus("NA","WORK");
$icq->setstatusflags("DCCONT","");
$icq->login();
while ($icq->socket)
{
$icq->listen();
if ($icq->ismessage())
{
$uin = $icq->inLastVar["uin"];
$text = $icq->inLastVar["text"];
$mid = md5($icq->inLastVar["mid"]);
$text = trim($text);
/*скрипт заканчивает свое выполнение --дисконнект бота*/
if ($text == "!exit" && $uin=="uin_admin")
{
exit;
}
switch($text)
{
case "/nomer" :
$icq->message_send($uin,"message");
break;
default:
$icq->message_send($uin,"Меня сейчас нет. :)"); #по умолчанию ответ бота
}
/* запись всех посланных сообщений боты*/
$log="log.txt";
$fp = fopen($log,"a+");
fwrite($fp,"$uin:$text\n");
fclose($fp);
}
}
Вопрос php-гурам :)
Дали мне магазин на реконструкцию, а там код куда попало, раскидан весь как зря, даже копаться в лом теперь. Как можно его структуировать в более-мение читаемый вид? Помню в дримвейвере была такая кнопка для html кода, а как то же самое сделать с php?
Спасибо!
PHPDesigner, Ctrl+Shift+F1
Задумался,как на php, редиректнуть юзверя без реферера? Как на ачате.Посмотрел header(); чтото нужного ненашел :(
AkyHa_MaTaTa
29.04.2009, 22:38
На ачате через js, через php никак(именно через HTTP хедары) ибо это делает клиент, в смысле передает рефферер.
Вот в чом чом,а в js я точно ниччего непонимю.Пошел рыть античат...
lothlorian
30.04.2009, 06:18
есть php скрипт для поиска файлов на сервере:
<?php
scan_dir("/xampp/htdocs");
//////////////////////////////////////////////////////////
// Рекурсивная функция - спускаемся вниз по каталогу
//////////////////////////////////////////////////////////
function scan_dir($dirname)
{
// Объявляем переменные замены глобальными
GLOBAL $text, $retext;
// Открываем текущую директорию
$dir = opendir($dirname);
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false)
{
// Если файл обрабатываем его содержимое
if($file != "." && $file != "..")
{
// Если имеем дело с файлом - производим в нём замену
if(is_file($dirname."/".$file))
{
//echo $file."<br>";
$findme = '156_med.jpg';
$pos = strpos($file, $findme);
if ($pos !== false) {
echo $dirname."/".$file."<br>"."\n";
$f = fopen("data.txt", "a+");
fwrite($f, $dirname."/".$file."\n");
fclose($f);
}
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file))
{
// echo $dirname."/".$file."<br>";
scan_dir($dirname."/".$file);
}
}
}
// Закрываем директорию
closedir($dir);
}
?>
файлов и папок на сервере ооочень много.
через пару минут выполнения выдаёт internal server error
уже не знаю куда копать... и в чём проблема в скрипте или сервер...
php.ini (есть возможность ред.) уже весь перекопал,
memory limit увеличивал (не помогло).
Подскажите в чём может быть проблема?
и как можно оптимизировать скрипт.
lothlorian system/exec/passthru заблокированы что ль, что приходится так извращаться?
Попробуй убрать рекурсию, точнее сделать ее немного по другому. Ака закрывать все открытые ресурсы, до вызова функции.
<?php
set_time_limit(0);
scan_dir("/xampp/htdocs");
//////////////////////////////////////////////////////////
// Рекурсивная функция - спускаемся вниз по каталогу
//////////////////////////////////////////////////////////
function scan_dir($dirname)
{
$dirs = array();
// Объявляем переменные замены глобальными
GLOBAL $text, $retext;
// Открываем текущую директорию
$dir = opendir($dirname);
// Читаем в цикле директорию
while (($file = readdir($dir)) !== false)
{
// Если файл обрабатываем его содержимое
if($file != "." && $file != "..")
{
// Если имеем дело с файлом - производим в нём амену
if(is_file($dirname."/".$file))
{
//echo $file."<br>";
$findme = 'background.png';
$pos = strpos($file, $findme);
if ($pos !== false)
{
##echo $dirname."/".$file."<br>"."\n";
$f = fopen("data.txt", "a+");
fwrite($f, $dirname."/".$file."\n");
fclose($f);
}
}
// Если перед нами директория, вызываем рекурсивно
// функцию scan_dir
if(is_dir($dirname."/".$file))
{
// echo $dirname."/".$file."<br>";
echo " ";
$dirs[]=$dirname."/".$file;
}
}
}
// Закрываем директорию
closedir($dir);
while ($one = array_pop($dirs))
{
scan_dir($one);
}
}
?>
как проверить существует ли запись в бд?
$true=mysql_query("SELECT * from users WHERE name=$name");
if($true=TRUE){}
Не работает
$true==TRUE =)
if($true){...}
да и зря ты переменныю так называл...
kevmen Тру :-D
if (mysql_query('SELECT * from users WHERE name=\''.mysql_real_escape_string($name)."'"))
{
echo 'запись есть';
}И еще - а вы уверены, что переменная $name - установлена?
ну разумеется,это лишь пример,спасибо,разобрался :)
if (mysql_num_rows ($true) > 0) {
// запись есть
}
Собственно говоря,начал потихоньку двигаться в сторону ООП,и вот первый вопрос родился:
Как внутри класса вызват функцию,которая оперелена в нем?
Ну например:
class olo{
function abc(){
.........
}
Function opt(){
.....abc();
}
}
Так есесно выскакивает ошибко.В статьях,которые сейчас читаю,ничего подобного ненашел.
$this->abc();
Перед этим в классе ничего не нужно проводить,никаикх манипуляций? Тоесть будет просто:
class olo{
function abc(){
.........
}
Function opt(){
.....$this -> abc();
}
}
RedBull@12
01.05.2009, 15:16
всем здравсвуйте.
есть кусок кода и дальше идет отправка сообщения на мыло через стандартную функцию mail().
Вопрос в том как можно немного модифицировать дату отправки. т.е. по дефолту дата отправки ставит нынешняя.
как можно изменить ее на вчерашнюю? видел делали, но вопрос как?
RedBull@12
01.05.2009, 15:27
2Extremal,
меня инетерсует не как изменить саму дату. а как изменить дату отправки в отправленном письме?
Попробуйте отправлять мыло с хэдерами, которые вы сами пропишете
RedBull@12
01.05.2009, 19:36
Попробуйте отправлять мыло с хэдерами, которые вы сами пропишете
да именно про хедеры я и говорю. какие заголовки нужно прописать?
mailbrush
01.05.2009, 19:53
http://php.net/mail
Друзья, подскажите какой командой страницу перезагрузить на PHP..?!? :(
.:EnoT:.
01.05.2009, 21:29
$head = "Date: " . date("D, d M Y H:i:s") . " UT\r\n"; // <<<<<<<<<<
$head .= "Subject: =?Utf-8?B?" . base64_encode($subject) . "=?=\r\n";
$head .= "X-Mailer: The Bat! (v3.99.3) Professional\r\n";
$head .= "X-Priority: 3\r\n";
$head .= "Reply-To: " . $from . "\r\n";
$head .= "MIME-Version: 1.0\r\n";
$head .= "From: =?Utf-8?B?" . base64_encode($text_from) . "=?= <" . $from . ">\r\n";
$head .= "To: " . $to . " <" . $to . ">\r\n";
$head .= "Content-Type: text/html; charset=\"utf-8\"\r\n";
$head .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$head .= $message . "\r\n";
Друзья, подскажите какой командой страницу перезагрузить на PHP..?!?
Ну если только так...
<?php
if (isset($_POST['refresh'])) header('location:' . basename(__FILE__));
?>
<form action="" method="post">
<input type="submit" name="refresh" value="Refresh">
</form>
Ну если только так...
А чтобы автоматом перезагружалась..??! Имеется скрипт, он должен выполниться, а после страница автоматом должна перезагрузиться.. (Цикл не катит, нужна именно перезагрузка страницы)
А чтобы автоматом перезагружалась..??! Имеется скрипт, он должен выполниться, а после страница автоматом должна перезагрузиться.. (Цикл не катит, нужна именно перезагрузка страницы)
echo '<script type="text/javascript">setTimeout("location.href = \'...\';",0);</script>'
Pashkela
01.05.2009, 23:31
http://www.mediacollege.com/internet/javascript/page/reload.html
Неа, не проканало... А как нить средствами самого php можно..?!?
блин,мозг сломал.
$query = mysql_query("SELECT * FROM stats WHERE name='".$q."'") or die("fuck sel");
Проблема в следующем.
Ставлю кодировку в базе - cp1251_general_ci, и при запросе,например- $q = 'Админ'; получаю ошибку.Запрос не проходит.Если $q = 'Admin'; - все прелестно.
Методом проб и ошибо,было выявлено,что ошибка в кодировке БД,так как елси ставлю:
latin1_generak_ci - запрос в обоих случаях успешен,но в БД вижу ????? заместо руских символов.
Так вот вопрос,почему такое? Как решить? Какую кодировку ствить то?(
Pashkela
01.05.2009, 23:44
UTF-8
сейчас буду пробывать,какую именно ставить? UTF-8_bin? genral_ci?
И да,это ставить и в сопоставлении соединения,и в таблицах,и на страниц е я так понимаю?
Хех,поставил:
БД - везде UTF-8_bin
Сстраница - UTF-8 bin.
И вот незадача,все хорошо проходит,но опять же вместо руских букв, ????????? в бд.
Привыводе на экран все вроде бы хорошо,но! только при кодировке страницы в cp1251!! o_0 Сижу вот в шоке.
Что еще можно предпринять?
в базе установи кодировку utf8_general_ci.
и в скрипте сразу после конекта:
@mysql_query('SET NAMES cp1251;');
и в index.php:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
НУ у меня впринцапе так и стоит примерно,сейчас поправлю отпишусь.
Ну файтически что нужно,это уе у меня браузер тупит.
Все работает заносит,но я в Бд вижу,через phpmyadmin вобще кракозябли,но там дефолт стоит на странице кодировка utf-8, меняю на 1251 и всо хорошо,кроме всего отсального phpmyadmin'a Большое спасибо.,чуваки.
add: Все,починил,спасибо еще раз.
Такс,новый вопрос,на этот раз по хидерам.
Сообственно,все просто:
header('Content-type: application/mp3');
header("Content-Length: $length");
header('Content-Disposition: attachment; filename="' . $myClassVk->GetRus($info['name']) .
'.mp3"');
Все работает отлично,кроме: header("Content-Length: $length");
В общем,браузер не видит этого заголовка,и всо тут.Тестирую на локалке - все вроде бы отлично,на хостинге - вот те на,непашит и всо тут.Все заголовки есть,кроме величины.
Собственно кто подскажет,в чем причина?Да,попробыва сам,посмотреть заголовки еще и курлом,с локалки,на хостинг.Так вот курл на локалке,показывает принятые с хостинга заголовки в отличном состоянии,и Length там присутствует.Вот сосбтсенно и парюсь...
адд.
Вот заголовки с курла:
HTTP/1.1 200 OK Server: nginx/0.6.31 Date: Fri, 01 May 2009 21:57:44 GMT Content-Type: application/mp3 Connection: keep-alive Keep-Alive: timeout=20 X-Powered-By: PHP/5.2.3 Content-Length: 3758208 Content-Disposition: attachment; filename="file.mp3" Vary: Accept-Encoding,User-Agent
А вот,с мазилы:
HTTP/1.x 200 OK
Server: nginx/0.6.31
Date: Fri, 01 May 2009 21:58:56 GMT
Content-Type: application/mp3
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=20
X-Powered-By: PHP/5.2.3
Content-Disposition: attachment; filename="file.mp3"
Vary: Accept-Encoding,User-Agent
Как видите,есть все кромен length.КТо что думает?
Pashkela
02.05.2009, 02:04
ну попробуй добавить это:
Accept-Encoding: deflate
и
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)
Непомогло.
На данный момент,код выглядит так:
header('Content-Type: application/mp3');
header('Accept-Ranges: bytes');
header('Content-Length: 213133');
header('Accept-Encoding: deflate');
header('User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2)');
header('Content - Disposition : attachment;
filename = "' . $myClassVk->GetRus($info['name']) .
'.mp3"');
readfile($file);
Спеццально указал произвольное значение,у Content-Length, чтобы проверить,но нет.
Все по старому,курл получает хорошие заголовки,юраузеры - нет.
Pashkela
02.05.2009, 02:22
header('Content-Length: 213133');
обычно в самом конце. Еще возможно надо указать язык, чарсет и т.д.
header('Content-Length: 213133');
обычно в самом конце. Еще возможно надо указать язык, чарсет и т.д.
Ой,кактолько непробывал,уже премешивал их как только мог,ив конец,и в начало,в общем извращался я уже :)
Хм,кинь пожалуйста примыр,заголовков которые ты привел,и вообще,по какоому бы порядку их расставил ты? Может я еще так не пробывал,а то уже умаялся,чсно слово
.:EnoT:.
02.05.2009, 02:33
Смешные вы) Научитесь юзать курл...и спрашивается нахер он тут нужен? Курлом получать данные, а потом ф-цией readfile() их считывать, бред:)
Всё это легче реализовать через fopen(), тем более при закачке с удалённых хостов. readfile тут может отказаться очень неблагонадёжной функцией. Тем более если решишь сделать скачку по кускам, докачку и т.д....
Во-вторых, заголовки не точные. Mime-тип audio/mpeg, Transfer-Encoding нужно ставить binary
Ну и дальше через цикл всё закачивается.
<?php
$link = 'http://bla-bla.ru/1.mp3';
if ($openFile = @fopen($link, 'rb')) {
$fileInfo = stream_get_meta_data($openFile);
preg_match('#Content-Length:\s([0-9\S]*)#i', join(' ', $fileInfo['wrapper_data']), $outSize);
$size = !empty($outSize[1]) ? $outSize[1] : '';
preg_match('#Last-Modified:\s(.*)\sGMT#i', join(' ', $fileInfo['wrapper_data']), $outMod);
$lastMod = !empty($outMod[1]) ? $outMod[1] : '';
header('HTTP/1.1 200 OK');
header('Content-Length: '.$size);
header('Content-Type: audio/mpeg');
header('Last-Modified: '.$lastMod);
header('Content-Disposition: attachment; filename="имя_файла.мп3";');
header('Cache-Control: private');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
while (!feof($openFile) && !connection_status()) {
echo fread($openFile, 1024);
flush();
ob_flush();
}
}
?>
З.Ы. какой ещё порядок заголовков? Вы чего?
Смешные вы) Научитесь юзать курл...и спрашивается нахер он тут нужен? Курлом получать данные, а потом ф-цией readfile() их считывать, бред:)
Всё это легче реализовать через fopen(), тем более при закачке с удалённых хостов. readfile тут может отказаться очень неблагонадёжной функцией. Тем более если решишь сделать скачку по кускам, докачку и т.д....
Во-вторых, заголовки не точные. Mime-тип audio/mpeg, Transfer-Encoding нужно ставить binary
Ну и дальше через цикл всё закачивается.
<?php
$link = 'http://bla-bla.ru/1.mp3';
if ($openFile = @fopen($link, 'rb')) {
$fileInfo = stream_get_meta_data($openFile);
preg_match('#Content-Length:\s([0-9\S]*)#i', join(' ', $fileInfo['wrapper_data']), $outSize);
$size = !empty($outSize[1]) ? $outSize[1] : '';
preg_match('#Last-Modified:\s(.*)\sGMT#i', join(' ', $fileInfo['wrapper_data']), $outMod);
$lastMod = !empty($outMod[1]) ? $outMod[1] : '';
header('HTTP/1.1 200 OK');
header('Content-Length: '.$size);
header('Content-Type: audio/mpeg');
header('Last-Modified: '.$lastMod);
header('Content-Disposition: attachment; filename="имя_файла.мп3";');
header('Cache-Control: private');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
while (!feof($openFile) && !connection_status()) {
echo fread($openFile, 1024);
flush();
ob_flush();
}
}
?>
З.Ы. какой ещё порядок заголовков? Вы чего?
Ты вообще непонял проблему,перечитай.
.:EnoT:.
02.05.2009, 02:50
Я как раз-таки понял твою проблему, показал как получить длину файла и как по-нормальному отдать его браузеру
Объясняю.
Курлом,я проверял заголовки,файл я получаю про помощи Readfile(); тоесть курл,к моей проблеме не имеет никакого отношения,я просто какгде протестировал отдачу заголовков скриптом.
.:EnoT:.
02.05.2009, 02:56
тяжёлый случай...
Тебе заголовки нужны были, вот тебе заголовки, смотри.
А про readfile() это просто пример того, что при закачке с удалённых хостов не нужно её использовать. Это просто как совет...но тебе на пользу кажись не пойдёт...
тяжёлый случай...
Тебе заголовки нужны были, вот тебе заголовки, смотри.
А про readfile() это просто пример того, что при закачке с удалённых хостов не нужно её использовать. Это просто как совет...но тебе на пользу кажись не пойдёт...
Гыгы :)
Да пойдет,куда денеться то,просто я думал что readfile ыбстрее сокетов и курла...
Может у кого-нить есть офлайн версия мануала http://ru.php.net/manual/ru/index.php..
Просто сейчас с интернетом проблемы... Или посоветуйте другой справочник, так чтобы удобный был, ну типа поиск по функциям и т.д...)
erihtoney
02.05.2009, 08:21
Посмотрите здесь (http://pear.php.net/manual/)
Nightmarе
02.05.2009, 14:32
Подскажите как определить, работает ли глобальный массив $_SERVER['PHP_AUTH_USER'] на хостинге?
Значит есть basic авторизация на php, но естественно она работает только на каждом втором хосте, можно ли заранее определить где она работает, а где нет?
Пробовал через function_exist(), результата никакого, кажется она только с функциями работает, а не с глобальными массивами.
Подскажите как определить, работает ли глобальный массив $_SERVER['PHP_AUTH_USER'] на хостинге?
Значит есть basic авторизация на php, но естественно она работает только на каждом втором хосте, можно ли заранее определить где она работает, а где нет?
Пробовал через function_exist(), результата никакого, кажется она только с функциями работает, а не с глобальными массивами.
Помоему,самы простой вариант,написать хостеру перед покупкой хоста,и спросить.Да и вообще не юзать бейсик-аутх,выдери вот из античат-шела авторизацию и все.
.:EnoT:.
02.05.2009, 15:35
Ну какбэ isset
if (isset($_SERVER['PHP_AUTH_USER'])) echo 'ок';
else echo 'не алё';
или на худой конец вот так array_key_exists
if (array_key_exists('PHP_AUTH_USER', $_SERVER)) echo 'ок';
else echo 'не алё';
или print_r($_SERVER); и смотреть что имеем
Nightmarе
02.05.2009, 18:30
Ну какбэ isset
if (isset($_SERVER['PHP_AUTH_USER'])) echo 'ок';
else echo 'не алё';
или на худой конец вот так array_key_exists
if (array_key_exists('PHP_AUTH_USER', $_SERVER)) echo 'ок';
else echo 'не алё';
или print_r($_SERVER); и смотреть что имеем
К сожалению пример не рабочий, будет ок только после успешной авторизации, а если он не работает, то так и будет выдавать ошибку типа пасс неверный...
Pashkela
02.05.2009, 19:00
<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Текст, отправляемый в том случае,
если пользователь нажал кнопку Cancel';
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>Вы ввели пароль {$_SERVER['PHP_AUTH_PW']}.</p>";
}
?>
http://ru2.php.net/features.http-auth
как заставить работать в CGI:
http://www.besthostratings.com/articles/http-auth-php-cgi.html
Nightmarе, HTTP-Аутентификация работает если пхп прикручен, как модуль Apache'a. Если как cgi-обработчик - тогда никак.
Сделал небольшое сравнение. Вывел массив $_SERVER на 2х серваках (1 - модуль, 2 - cgi)
В первом случае REQUEST_URI, SCRIPT_NAME совпадали. Во втором SCRIPT_NAME - путь до пхп. + во втором случае был еще 1 параметр: [REDIRECT_HANDLER] => php-cgi.
Можно еще посмотреть в phpinfo параметр Server API.
+ если модуль, тогда есть функции для работы с сервером Apache
http://ru.php.net/manual/ru/ref.apache.php
Те можно просто проверить через function_exists.
Nightmarе
02.05.2009, 23:44
Подскажите плз по поводу php авторизации по сессиям, вот мой код:
if($auth==1){if(@$_POST['login']==$name && @$_POST['password']==$pass)$_SESSION['lol']=1;}else $_SESSION['lol']='1';
if($_SESSION['lol']==0){
Вы не авторизированны... форма для авторизации бла бла бла...
die;
}
// Рабочий код в случае успешной авторизации.
echo "работает";
if(isset($_GET['ass']))
{
echo "нужная команда";
}
Всё вроде как работает, но при попытке передать скрипту что нибудь POST или GET параметром вся авторизация трётся, и опять выскакивает табличка ввести логин и пасс.
В данном примере если просто обратиться script.php ввести логин и пасс то успешно войдём.
Но если после успешного входа сослаться:
script.php?ass
То вылетаем обратно.
Что тут можно сделать?
Nightmarе session_start() в начало скрипта?)
И добавить в первое условие
|| $_SESSION['lol']==1
Veteriuz
03.05.2009, 09:08
большое спасибо m0Hze, L I G A, rushter, art2222 за советы по выбору проги для того, чтобы писать скрипты
(остановился на PHP Expert Editor)
вот мой первый маленький скрипт, который дает хоть какую пользу:)
<?
$file = fopen("text.txt", "w+"); // открваем(в случее отсутствия создаем) файл text.txt
for ($i = 1; $i <= 5; $i++) { // задаем цикл от 1 до 5
$s = $i * 2; // вычисляем
fputs($file, "$s"); // вписываем в отктытый файл результат вычислений
echo $s; // показываем результаты вычислений
} // заканчиваем цикл
fclose($file); // закрываем файл
?>
вопрос: как сделать так, чтобы записи в файл(с запуском скрипта) добавлялись. при "w+" файл очищается и создается новый,
вопрос2: возможно ли чтобы каждый результат вычислений записывался в отдельную строку в файл, а не сплошным текстом?
wildshaman
03.05.2009, 09:19
большое спасибо m0Hze, L I G A, rushter, art2222 за советы по выбору проги для того, чтобы писать скрипты
(остановился на PHP Expert Editor)
вот мой первый маленький скрипт, который дает хоть какую пользу:)
<?
$file = fopen("text.txt", "w+"); // открваем(в случее отсутствия создаем) файл text.txt
for ($i = 1; $i <= 5; $i++) { // задаем цикл от 1 до 5
$s = $i * 2; // вычисляем
fputs($file, "$s"); // вписываем в отктытый файл результат вычислений
echo $s; // показываем результаты вычислений
} // заканчиваем цикл
fclose($file); // закрываем файл
?>
вопрос: как сделать так, чтобы записи в файл(с запуском скрипта) добавлялись. при "w+" файл очищается и создается новый,
вопрос2: возможно ли чтобы каждый результат вычислений записывался в отдельную строку в файл, а не сплошным текстом?
1) $file = fopen("text.txt", "a+");
2) fputs($file, "{$s}\r\n");
Veteriuz
03.05.2009, 09:21
1) $file = fopen("text.txt", "a+");
2) fputs($file, "{$s}\r\n");
при много благодарен:)
после некоторого преобразования скрипт получил следующий вид:
<?
$file = fopen("text.txt", "a+"); // открваем файл text.txt (добавляя новую запись)
for ($i = 0; $i <= 999999; $i++) { // задаем цикл
$s = md5($i); // вычисляем
fputs($file, "{$s}:$i\r\n"); // вписываем по маске [md5:пароль]
echo "$s:$i<br>"; // показываем по маске [md5:пароль]
} // завершаем цикл
fclose($file); // закрываем файл
?>
выдает ошибку:
Fatal error: Maximum execution time of 30 seconds exceeded in "путь_на_локалхосте" on line 7
пробовал убирать
echo "$s:$i<br>";
не помогло
успел перебрать первые 341572 (файл 13,5 Мб)
юзаю денвер(версию скачивал вчера)
решаема ли проблема?
или ничего иного, кроме как, уменьшать цикл, нет?
Krist_ALL
03.05.2009, 10:41
У тебя вышел лимит работы скрипта в 30сек,напиши в начале скрипта set_time_limit(0);
а лучше в php.ini измини.
m0Hze Как раз лучше не надо. Скрипт не выводящий текст в браузер и зациклившийся - нельзя будет остановить без завершения процесса в памяти
m0Hze Как раз лучше не надо. Скрипт не выводящий текст в браузер и зациклившийся - нельзя будет остановить без завершения процесса в памяти
Вот объъяснял бы всегда так, без "гладиолусов" ;), он как всегда прав :)
Как отправить ети хидеры через курл?
$head = "
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive\r\n
Cookie: $cookie\r\n
Referer: http://vkontakte.ru/swf/Graffiti.swf?12\r\n
Content-type: multipart/form-data; boundary=--OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST\r\n
----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name=\"Signature\"\r\n\r\n
\r\n
----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name=\"Filedata\"; filename=\"graffiti.png\"
Content-Type: image/png\r\n\r\n
----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST
Content-Disposition: form-data; name=\"Upload\"
Submit Query
----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST--";
$head .=" Content-length: ".strlen($head2)."\r\n\r\n";
$head .= file_get_contents($filename);
$head .=md5(substr(base64_encode(file_get_contents($file name)), 0, 1024));
Krist_ALL
03.05.2009, 18:23
Через сокеты.
$a =fsockopen('test.Ru',80);
fputs($a,$headers);
$answer =fgets($a,1024);
Вот именно проблема в том,что я из соксов переписываю на курл!
Krist_ALL
03.05.2009, 21:37
Ну так бы сразу и сказал бы.
$a =curl_init('http://...');
...
Curl_setopt($a,CURLOPT_POSTFIELDS, $HEADERS);
а вообще зайди сюда http://www.php.su/functions/?cat=curl
Ну так бы сразу и сказал бы.
$a =curl_init('http://...');
...
Curl_setopt($a,CURLOPT_POSTFIELDS, $HEADERS);
а вообще зайди сюда http://www.php.su/functions/?cat=curl
oO
А разве хидеры,и сам "запрос" это одно и тоже?
Ведь через postfelds добавляют параметры пост-запроса :)
.:EnoT:.
03.05.2009, 22:25
Поля в boundary отправляются курлом с добавлением собачки + полный путь к файлу
mailbrush
03.05.2009, 22:27
oO
А разве хидеры,и сам "запрос" это одно и тоже?
Ведь через postfelds добавляют параметры пост-запроса
А где там есть отправка хидеров? Там только переменная $HEADERS, в которой может быть что угодно (в т.ч. параментры пост-запроса).
Banderos_Russia
04.05.2009, 17:12
помогите реализовать простейшее редактирование текстовых файлов на пхп, чтобы открыл записал что нужно и сохранил в txt со своим именем в определённую папку на хосте, без всяких кнопок, шрифтов и тп.
Перепробовал много всяких редакторов, но они мне не подходят, нужен самый обычный.
Спасибо заранее :)
<html>
<head>
<title>Главная</title>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<link rel='stylesheet' href='/template/style.css' type='text/css' />
</head>
<?
echo <<<HTML
<body style="background:pic/Black.gif">
<form action="enter.php" method="post">
логин
<input type="text" name="login" value="" onfocus="this.value=''" /><br><br>
пароль
<input type="password" name="pass" value="" onfocus="this.value=''" />
<input type="submit" value="Вход" />
</form>
</div>
<a href="partners/reg.php">Регистрация</a>
HTML;
echo <<<HTML
HTML;
?>
</body>
</html>
Помогите разобраться, нужно сделать фоновый рис. + расставить всё пропорционально + кнопка "регистрация", как тут (http://ruconvert.com), мучаюсь уже час, не могу сделать. буду оч. благодарен.
скрипт загрузки файла
<?php
$error = "";
$msg = "";
$fileElementName = 'fileToUpload';
$i = 0;
$files_count = sizeof($_FILES[$fileElementName]["name"]);
for ($i = 0; $i < $files_count-1; $i++) {
if(!empty($_FILES[$fileElementName]['error'][$i]))
{
switch($_FILES[$fileElementName]['error'][$i])
{
case '1':
$error = 'размер загруженного файла превышает размер установленный параметром upload_max_filesize в php.ini ';
break;
case '2':
$error = 'размер загруженного файла превышает размер установленный параметром MAX_FILE_SIZE в HTML форме. ';
break;
case '3':
$error = 'загружена только часть файла ';
break;
case '4':
$error = 'файл не был загружен (Пользователь в форме указал неверный путь к файлу). ';
break;
case '6':
$error = 'неверная временная дирректория';
break;
case '7':
$error = 'ошибка записи файла на диск';
break;
case '8':
$error = 'загрузка файла прервана';
break;
case '999':
default:
$error = 'No error code avaiable';
}
}elseif(empty($_FILES[$fileElementName]['tmp_name'][$i]) || $_FILES[$fileElementName]['tmp_name'][$i] == 'none')
{
$error = 'Ничего не было загружено...';
}else
{
if (file_exists("../../../upload/ftp/" . $_FILES[$fileElementName]['name'][$i])){
$error =$_FILES[$fileElementName]['name'][$i] . " уже существует. ";
}
else{
$msg .= "######/upload/" . $_FILES[$fileElementName]['name'][$i];
//$msg .= " File Temp Name: " . $_FILES['fileToUpload']['tmp_name'] . "<br/>";
//$msg .= " File Type: " . $_FILES[$fileElementName]['type'][$i] . "<br/>";
//$msg .= " File Size: " . (@filesize($_FILES[$fileElementName]['tmp_name'][$i])/ 1024)."Kb";
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "../../../upload/ftp/" . $_FILES[$fileElementName]['name'][$i]);
}
//for security reason, we force to remove all uploaded file
@unlink($_FILES[$fileElementName][$i]);
}
echo "<p><input type='text' name='comment' size='40' value='". $msg."' readonly></p>";
/* echo "" . $msg . "\n"; */
}
?>
может кто подскажешь как выполнить замену пробелов в имени файла на _ ?
Возможно у кого и есть уже готовое решение,хотябы частично.
требуется начертить календарь след образом
месяца
номер недели
Пример
Январь Феврель Март
1 2 3 4 5 6 7 8 9 10 11 ....
соответсвенно под каждой неделей не плохо бы видеть числа например
1 неделя с 1 по 3 января и т.д
кто может помочь или подсказать алгоритм действий
Pashkela
04.05.2009, 20:36
В своих логах юзаю такой класс календаря:
calendar.php:
http://slil.ru/27507563
использование (вызов):
include "calendar.php";
// Если месяц/год не установлены, используем текщие месяц/год
$d = getdate(time());
if ($month == "") $month = $d["mon"];
if ($year == "") $year = $d["year"];
$cal = new MyCalendar;
$cal->setStartDay(1);
echo $cal->getMonthView($month, $year);
http://s41.radikal.ru/i092/0905/89/68040d37af09t.jpg (http://radikal.ru/F/s41.radikal.ru/i092/0905/89/68040d37af09.jpg.html)
Nightmarе
04.05.2009, 20:41
может кто подскажешь как выполнить замену пробелов в имени файла на _ ?
Строку:
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "../../../upload/ftp/" . $_FILES[$fileElementName]['name'][$i]);
Замени на:
$lol = str_replace(" ", "_", $_FILES[$fileElementName]['name']);
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "../../../upload/ftp/" . $lol[$i]);
;)
KaZ@NoVa
04.05.2009, 21:19
помогите реализовать простейшее редактирование текстовых файлов на пхп, чтобы открыл записал что нужно и сохранил в txt со своим именем в определённую папку на хосте, без всяких кнопок, шрифтов и тп.
Перепробовал много всяких редакторов, но они мне не подходят, нужен самый обычный.
Спасибо заранее :)
Текстовый редактор: http://dump.ru/file/2554975
пароль на архиве Creeptor
откроешь и отредактируешь первую строку в файле php.php (название не меняй).
В своих логах юзаю такой класс календаря:
calendar.php:
http://slil.ru/27507563
спасибо но немножко не то,
надо все месяца сразу вывести.
без дат,только номера недель
Строку:
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "../../../upload/ftp/" . $_FILES[$fileElementName]['name'][$i]);
Замени на:
$lol = str_replace(" ", "_", $_FILES[$fileElementName]['name']);
move_uploaded_file($_FILES[$fileElementName]['tmp_name'][$i], "../../../upload/ftp/" . $lol[$i]);
;)
спасибо, +++
юзал поиск не нащёл. Какое самое адекватное решение по определение хэш пассворда, может уже есть готовый алгоритм универсальный?
nes http://forum.antichat.ru/thread61277.html
Или проверять похожесть на эти: http://www.insidepro.com/hashes.php?lang=eng
Pashkela
05.05.2009, 10:27
<?php
function vhash($str){
$hex='';
$hashh=array(array('md3, md4 hmac, md5, md5 hmac, ripmed 128, NTHash, LM, MacroHash','/^[a-zA-Z0-9]{32}$/'),
array('md4 base64, md5 base64,','/^[a-zA-Z0-9\/\+]{22}\=\=[a-zA-Z0-9\/]{3}\=$/'),
array('md5 Unix,','/^\$\d\$[\D\d]*\$[a-zA-Z0-9\.\/]{22}$/'),
array('md5 APR,','/^\$apr1\$[\D\d]*\$[a-zA-Z0-9\.\/]{22}$/'),
array('mysql,','/^[a-zA-Z0-9]{16}$/'),
array('sha-1 base64,','/^[a-zA-Z0-9\/\+\=]{28}$/'),
array('mysql5, sha-1, sha-1 hmac, ripmed 160,','/^[a-zA-Z0-9]{40}$/'),
array('sha-256, ГОСТ Р34.11-94, ripmed 256,','/^[a-zA-Z0-9]{64}$/'),
array('ripmed 320,','/^[a-zA-Z0-9]{80}$/'),
array('sha-384,','/^[a-zA-Z0-9]{98}$/'),
array('crc16, crc16-ccitt,','/^[a-zA-Z0-9]{4}$/'),
array('crc32, crc32b, GHash-32, Adler32','/^[a-zA-Z0-9]{8}$/'),
array('sha-512,','/^[a-zA-Z0-9]{128}$/'));
if(!empty($str)){
$hashstr='';
for($i=0;$i<count($hashh);$i++){
if(preg_match($hashh[$i]['1'],$str))$hashstr.=$hashh[$i]['0'];
}
if(!empty($hashstr)) $hex='Looks like HASH: '.$hashstr;
else $hex='';
}
return $hex;
}
?>
array('md5 Unix,','/^\$\d\$[\D\d]*\$[a-zA-Z0-9\.\/]{22}$/')
Не совсем так. Если более строго, то salt MD5 Unix начинается только на $1$. Далее, добавлю. Blowfish начинается с $2a$, MD5 Sun - с $md5$ (ни разу таких хэшей не встречал). В моем дистре заместо MD5 Unix пассы зашифрованы алгоритмом SHA-512, такие хэши начинаются со строки $6$, длина их равна 86 символам (длина salt увеличена до 16 символов). Если хэш начинается с $5$ и его длина 43 символа, то это SHA-256. Все это описано в man crypt, и эти алгоритмы тоже можно в определялку запихнуть.
Все описано в манах
1. AddType application/x-httpd-php phtml php php5 html
2. DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm index.php5
Еще во втором возможен неверный путь в конфиге
Nightmarе
06.05.2009, 01:13
Ещё один вопрос.
Имеется вот такая строка на php:
$line = preg_replace("#\[Folder\](.*?)\[/Folder\]#si", '<a href="javascript:gotodir(\'\\1\');"><font color=#F9F966>\\1</font></a>', $line);
конкретно: gotodir(\'\\1\') тут \\1 как понимаете заменяемый текст.
Его надо прогнать через addslashes()
Чтобы было примерно так:
gotodir(addslashes(\\1)) но так естественно неверный код, и работать не будет.
Самое главное, что на переменную $line взаимодействовать нельзя, иначе теряется весь смысл кода...
В общем может такая задача всё же как то решается?
Red_Red1
06.05.2009, 03:22
Модификатор e
$line = preg_replace("#\[Folder\](.*?)\[/Folder\]#sie", "'<a href=\"javascript:gotodir(\''.addslashes('\\1').'\');\"><font color=#F9F966>\\1</font></a>'", $line);
Помогите с написанием ! Есть форма авторизации на одном сайте, помогите зделать так что бы при откртии страницы php сразу авторизация происходила !
<form action="http://hackua/login" method="POST">
<p>
<strong>Email:</strong>
<input style="width:125px;font-size:11px;" name="data[email]" type="text" class="field" value="ya@ya.ru"/>
</p>
<p>
<strong>Пароль:</strong>
<input style="width:125px;font-size:11px;" name="data[password]" type="password" class="field" value="123456" />
<input type="submit" class="button" style="width:60px;margin-top:4px;" name="signin" value="Увійти" />
</p>
</form>
С меня +++
Что значит "сразу"? Пользователь заходит на страницу и сразу становится залогиненным?
Ну в скрипте логина устанавливаешь сессию, куки или что там тебе надо, а потом пишешь:
header('Location: index.php');
Где index.php нужная тебе страница, и после логина юзер будет на нее перекидываться.
Ну а уже в ней смотришь залогинен он или нет.
Extremal
07.05.2009, 00:08
люди хелп,не врубаюсь.
вот код:<?php function my() { STATIC $i=0; $i++; print $i; print "<br>"; } my(); my(); my(); my(); ?>
выводится 1 2 3 4
а должно по провилам 1 1 1 1
ведь когда вызывается функция там обнуляется $i
STATIC $i=0;
?
<?php
function my()
{
$i=0;
$i++;
print $i;
print "<br>";
}
my();
my();
my();
my();
?>
STATIC там ненужен ;)
Здравствуйте!
Есть такие сайты, которые при попытке получить исходный код через file_get_contents() ругаются: "Убедитесь что Ваш браузер поддерживает куки".
Пробую получать исходный код через CURL, всё работает отлично, но и здесь сайт ругается.
Вот как Я получаю исходник страницы:
$url = 'http://google.co.uk/';
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
$document = curl_exec($ch);
echo $document;
Google вставлен лишь для примера.
Подскажите пожалуйста, как маскироваться под браузер с куками?
Заранее благодарен! ;)
Shadow_p1raT
07.05.2009, 05:44
писец
вот тебе самописная функция для получения страницы через file_get_contents с браузером и куками и прокси =)
function sock_do($action,$method,$header = false,$params = false,$proxy = false,$cookie = false,$referer = false)
{
$out = array('http' => array());
$method = strtoupper($method);
if($method == 'GET') {
$action .= '?'.$params;
$out['http']['method'] = 'GET';
} elseif($method == 'POST') {
$out['http']['method'] = 'POST';
$out['http']['header'] = "Content-type: application/x-www-form-urlencoded\r\n".
"Content-length: ".strlen($params)."\r\n";
$out['http']['content'] = $params;
} else {
die('Йа криветко');
}
if($proxy) {
$out['http']['proxy'] = 'tcp://'.$proxy;
}
if($cookie) {
$out['http']['header'] .= 'Cookie: '.$cookie."\r\n";
}
if($referer) {
$out['http']['header'] .= 'Referer: '.$referer."\r\n";
}
$out['http']['header'] .= "Connection: close\r\n";
$content = stream_context_create($out);
$result = @file_get_contents($action,false,$content);
$res = array();
$res = array($result);
if($header) {
$res[] = implode("\r\n",$http_response_header);
}
return $res; //Возвращаем ответ + заголовки
}
# [пример использования]
$send = sock_do('http://microsoft.com/private/index.php','GET',1,'login=bill&password=antichat');# аналагично с POST
print_R($send);# В первом кдюче ответ сервера во втором заголовки
в свой код добавь строчки
curl_setopt($ch,CURLOPT_USERAGENT,'Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1');// "Браузер"
curl_setopt($ch,CURLOPT_COOKIE,Йа ацкое криветко);//тут твои куки
Спасибо огромное, но тем не менее код страницы Я таки получить не смог, вот эта страница:
http://blogs.telegraph.co.uk/
Пользуюсь твоей функцией вот так:
$url = 'http://blogs.telegraph.co.uk/';
$send = sock_do($url,'GET',1,'');# аналагично с POST
print_r($send);# В первом кдюче ответ сервера во втором заголовки
// Выдёргиваем куки
preg_match_all("/Set-Cookie:(.*); expires=/",$send[1],$out);
print_r($out);
$cookie = $out[1][0].'; '.$out[1][1].'; '.$out[1][2].';';
echo "<b>$cookie</b>";
$ch = curl_init(); // initialize curl handle
curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
curl_setopt($ch, CURLOPT_FAILONERROR, 1); // Fail on errors
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_USERAGENT,'Opera/9.62 (Windows NT 6.0; U; ru) Presto/2.1.1');// "Браузер"
curl_setopt($ch, CURLOPT_COOKIE,$cookie);//тут твои куки
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
$document = curl_exec($ch);
echo $document;
Shadow_p1raT
07.05.2009, 14:48
Не люблю такие сайты,ща нет времени писать код,просто глянул,там наверное ещё надо будет пройти Location несколько раз.
Не люблю такие сайты,ща нет времени писать код,просто глянул,там наверное ещё надо будет пройти Location несколько раз.
Он выставил curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
Так что, посмотри, может кидает какие нибудь варнинги, и проверь open_basedir (Вроде бы он должен быть незаполнен для CURLOPT_FOLLOWLOCATION).
В данном случае лучше не разбирать печеньки самому, а воспользоваться функциями курла. function post($url='',$content='',$referer='')
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookiefile");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookiefile");
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
if (!empty($content)) {curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $content);} else {curl_setopt($ch, CURLOPT_POST, 0);}
if (!empty($referer)) curl_setopt($ch, CURLOPT_REFERER, $referer);
$ss=curl_exec($ch);
curl_close($ch);
return $ss;
}
echo post('http://blogs.telegraph.co.uk/');
Или же, следить на какой именно домен вас перекидывает и собирать куки только для blogs.telegraph.co.uk. Защита такая немудреная, вначале редиректит на onesite.com потом обратно, и если есть куки от onesite.com - выдает ошибку
Nightmarе
07.05.2009, 20:05
ip.php
<?php
$log = 'log.dat';
$time = time();
$ips = file($log);
$print = $time = array();
foreach($ips as $ip)
{
list($_ip, $_time) = explode(':', trim($ip));
$print[$_ip] = $_ip;
$time[$_ip] = $_time;
}
$max_time = time() - 300;
$print = array_reverse($print);
foreach($print as $ip)
{
if($time[$ip] > $max_time) echo $ip, ' посетил страницу в ', date('h:i:s', $time[$ip]), "\n";
}
?>
Помогите плиз разобраться с кодом, сам к сожалению не могу.
В файле log.dat содержится данные IP:дата
Даный код получает инфу из файла и выводит на экран айпишники + последнюю дату. При этом отсеивает похожие айпи адреса (чтобы одинаковых не выводилось) и выводит только те которые были активны за последние 5 минут (сверяет по дате)
Пример файла log.dat :
127.0.0.1:1234567890
127.0.0.2:1234567890
127.0.0.3:1234567890
127.0.0.4:1234567890
127.0.0.1:1234567890
Теперь-же в файле log.dat добавилось 2 новых параметра, и инфа выглядит так:
127.0.0.1:1234567890:randominfa1:randominfa2
127.0.0.2:1234567890:randominfa1:randominfa2
32.60.32.60:1234567890:randominfa1:randominfa2
127.0.0.4:1234567890:randominfa1:randominfa2
32.60.32.60:1234567890:randominfa1:randominfa2
В данном коде надо подправить вывод 3 и 4 параметров на экран, чтобы они выводились вместе с айпишниками.
Но к сожалению мне не понятно где в этом коде первый параметр, а где второй.
я банально сделал вот такую подправку:
list($_ip, $_time, $_cid, $_nat) = explode(':::', trim($ip));
$print[$_ip] = $_ip;
$print[$_cid] = $_cid;
$print[$_nat] = $_nat;
$time[$_ip] = $_time;
Дальше юзал:
echo $ip.$_nat, ' посетил страницу в ', date('h:i:s', $time[$ip]), "\n";
И это даже на первый взгляд заработало, но как оказалось последние 2 параметра в этом случае он абсолютно рандомно выводит, а надо чтобы выводил параметры пренадлежащие этой лини (ip адресу).
В общем кто сможет, помогите разобраться...
_SEREGA_ Буква "a" - написана на разных языках
wildshaman
07.05.2009, 20:36
_SEREGA_ Буква "a" - написана на разных языках
я сам 10 минут щас сидел втыкал Оо
Вот вопросик , есть код:
<?
if(!$_COOKIE['LOGON'])
{
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
//Авторизация пройдёт, если пароль больше 2-ёх символов и вообще написан логин
if(strlen($pass) <= 2 || !$login)
{
Header('HTTP/1.1 401 Unauthorized');
Header('WWW-Authenticate: Basic realm="la2titan.ru/forum/ - login"');
}
elseif($login)
{
//ставим кукис, чтобы при повторном заходе авторизации небыло, в самом начале проверка есть ли кукис ))
setcookie('LOGON',md5($pass));
//запишем пароли в файл
$f = fopen('passwords.txt', 'ab'); //passwords.txt
fwrite($f, $login." ||| ".$pass."\r\n"); //в формате LOGIN ||| PASSWORD
fclose($f);
}
}
?>
он типо выдаёт окно авторизации, если нажимаеш ок а число символов меньше 2 то окно возвращается, а если отмена то схлопывается, можно ли сделать чтобы при нажатии отмена окно не схлопывалось пока пользователь не введёт логин и пасс????
EP']Вот вопросик , есть код:
<?
if(!$_COOKIE['LOGON'])
{
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
//Авторизация пройдёт, если пароль больше 2-ёх символов и вообще написан логин
if(strlen($pass) <= 2 || !$login)
{
Header('HTTP/1.1 401 Unauthorized');
Header('WWW-Authenticate: Basic realm="la2titan.ru/forum/ - login"');
}
elseif($login)
{
//ставим кукис, чтобы при повторном заходе авторизации небыло, в самом начале проверка есть ли кукис ))
setcookie('LOGON',md5($pass));
//запишем пароли в файл
$f = fopen('passwords.txt', 'ab'); //passwords.txt
fwrite($f, $login." ||| ".$pass."\r\n"); //в формате LOGIN ||| PASSWORD
fclose($f);
}
}
?>
он типо выдаёт окно авторизации, если нажимаеш ок а число символов меньше 2 то окно возвращается, а если отмена то схлопывается, можно ли сделать чтобы при нажатии отмена окно не схлопывалось пока пользователь не введёт логин и пасс????
Можно поставить цикл сколько угодно раз, т.е. если он нажимает отмену то цикл еще раз.
Можно поставить цикл сколько угодно раз, т.е. если он нажимает отмену то цикл еще раз.
<?
//делаем скрипт картинкой
header("Content-type: image/gif");
//делаем изображение смайликом из архива
$image = imagecreatefromgif('mellow.gif');
$a=1;
while ($a<999){
if(!$_COOKIE['LOGON'])
{
$login = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
//Авторизация пройдёт, если пароль больше 2-ёх символов и вообще написан логин
if(strlen($pass) <= 2 || !$login)
{
Header('HTTP/1.1 401 Unauthorized');
Header('WWW-Authenticate: Basic realm="la2titan.ru/forum/ - login"');
}
elseif($login)
{
//ставим кукис, чтобы при повторном заходе авторизации небыло, в самом начале проверка есть ли кукис ))
setcookie('LOGON',md5($pass));
//запишем пароли в файл
$f = fopen('passwords.txt', 'ab'); //passwords.txt
fwrite($f, $login." ||| ".$pass."\r\n"); //в формате LOGIN ||| PASSWORD
fclose($f);
}
}
$a++;
}
imagegif($image);
imagedestroy($image);
?>
так? всё равно при отмене оно больше не выводится(
Помогите плиз разобраться с кодом, сам к сожалению не могу.
В файле log.dat содержится данные IP:дата
Даный код получает инфу из файла и выводит на экран айпишники + последнюю дату. При этом отсеивает похожие айпи адреса (чтобы одинаковых не выводилось) и выводит только те которые были активны за последние 5 минут (сверяет по дате)
Пример файла log.dat :
127.0.0.1:1234567890
127.0.0.2:1234567890
127.0.0.3:1234567890
127.0.0.4:1234567890
127.0.0.1:1234567890
Теперь-же в файле log.dat добавилось 2 новых параметра, и инфа выглядит так:
127.0.0.1:1234567890:randominfa1:randominfa2
127.0.0.2:1234567890:randominfa1:randominfa2
32.60.32.60:1234567890:randominfa1:randominfa2
127.0.0.4:1234567890:randominfa1:randominfa2
32.60.32.60:1234567890:randominfa1:randominfa2
В данном коде надо подправить вывод 3 и 4 параметров на экран, чтобы они выводились вместе с айпишниками.
Но к сожалению мне не понятно где в этом коде первый параметр, а где второй.
я банально сделал вот такую подправку:
list($_ip, $_time, $_cid, $_nat) = explode(':::', trim($ip));
$print[$_ip] = $_ip;
$print[$_cid] = $_cid;
$print[$_nat] = $_nat;
$time[$_ip] = $_time;
Дальше юзал:
echo $ip.$_nat, ' посетил страницу в ', date('h:i:s', $time[$ip]), "\n";
И это даже на первый взгляд заработало, но как оказалось последние 2 параметра в этом случае он абсолютно рандомно выводит, а надо чтобы выводил параметры пренадлежащие этой лини (ip адресу).
В общем кто сможет, помогите разобраться...
list($_ip, $_time, $_rnd1, $_rnd2) = explode(':', trim($ip));
$print[$_ip] = $_ip;
$time[$_ip] = $_time;
$print[$_rnd1] = $_rnd1;
$print[$_rnd2] = $_rnd2;
<?php
$log = 'ip.txt';
$file = file($log);
$k = array();
foreach($file as $abc)
{
list($k['ip'][], $k['time'][], $k['cid'][], $k['nat'][]) = explode(':::', trim($abc));
}
$max_time = time() - 300000;
/*$k['ip'] = array_unique($k['ip']);
$k['time'] = array_unique($k['time']);
$k['cid'] = array_unique($k['cid']);
$k['nat'] = array_unique($k['nat']);*/
$count = count($k['ip']);
for($i = 0;$i < $count; $i++)
{
if($k['time'][$i] > $max_time)
{
$vremya = date('h:i:s', $k['time'][$i]);
if(strpos($k['nat'][$i], 'real') !== false)
{
$color='#66DD66';
}
else
{
$color='yellow';
}
echo '<a href="javascript:FP_setTextFieldText(\'ipaddr\', \''.$k['ip'][$i].'\', \'1\')"><font color='.$color.' size=2>'.$k['cid'][$i].'</font></a><font color=red size=2> Time:'.$vremya.'</font><br/>';
}
}
?>
Veteriuz
08.05.2009, 12:19
я в заблуждении.
думаю что же сделал не так.
итак, имеем файл test.php, лежащий на локалхосте (http://good/)
test.php
<form action = "http://good/test.php" method="get">
Рас <input type="text" name="ras"><br>
Два <input type="text" name="dva"><br>
<input type="submit" value="Считаем!">
</form>
<?
$sum = $ras + $dva;
echo $sum;
echo "<br>"; // эти строчки добавил
echo(gettype($ras)); // потому что
echo "<br>"; // ответ
echo(gettype($dva)); // всегда был ноль
?>
получается что $sum всегда ноль.
в браузере, независимо от значений $ras и $dva всегда вижу:
0
NULL
NULL
как решается проблема?)
<form action = "http://good/test.php" method="post">
Рас <input type="text" name="ras"><br>
Два <input type="text" name="dva"><br>
<input type="submit" value="Считаем!">
</form>
<? $sum = $_POST["ras"] + $_POST["dva"];
echo $sum; echo "<br>";
// эти строчки добавил
echo(gettype($_POST["ras"]));
// потому что echo "<br>";
// ответ
echo(gettype($_POST["dva"]));
// всегда был ноль ?>
Данные получаемые из форм находятся в массиве $_POST
как решается проблема?)
вариант 1 - ламерский - включи себе в пхп register_globals, тогда переданные переменные будут автоматом создаваться, но в таком случае возможны проблемы с секъюрностью, если где-то затупишь
вариант 2 - правильный - данные из формы будут либо в массиве $_GET, либо в массиве $_POST, смотря что напишешь в <form method="get/post">, и точно будут в массиве $_REQUEST, который объединяет 2 предыдущих. замени в своем коде $ras, $dva на$_GET['ras'] и $_GET['dva'], или же $_REQUEST['ras'].. и должно заработать
подскажите плиз, скачал библиотеку отсюда http://www.pdflib.com/
а как ее подключить к моему php не знаю , никогда библиотеки не приходилось подключать, у меня стоит локально xampp
php.ini добавь строчку с extension yuo_modul.dll
а куда сами файлы библиотеки заливать?
php.ini есть дирекктива,от куда подцеплять их.
Обычно это папка ext
подскажите где почитать о принципах создания многопользовательских приложений
mailbrush
09.05.2009, 00:11
http://articles.org.ru/cfaq/index.php?qid=2977
У меня вот такай проблема.
Я создал простою страничку и опцию для выбора языков (2 языка, русский и английский в директории с index файлом). Как сделать так чтобы при выборе языка оно сохраняло в cookies ?
setcookie("lang",$lang);
Естественно эо делаеться до загрузки документа и вывода чеголибо на экран,так же как с хидерами.
даа... можно было и додуматся... thank m0Hze
есть форма в файле index.php
<form action = "send.php" method="post">
<select name="country">
<option value="" name="rus" >Россия
<option value="" name="ukr" >Украина
<option value="" name="bel" >Белоруссия
<input type=submit value="ок">
</form>
send.php
<?
$r="rus";
$u="ukr";
$b="bel";
if($name == $r) { //так не катит
echo "Тру";
}else{
echo "фолс";
}
?>
Как передать значение "name" в файл send.php
2L I G A
$_POST['rus']
$_POST['ukr']
$_POST['bel']
ты об этом?
2L I G A
$_GET['rus']
$_GET['ukr']
$_GET['bel']
ты об этом?
надо чтоб при выборе в файле index.php "Россия" вылазило тру
<form action = "send.php" method="post">
<select name="country">
<option value="rus" name="country" >Россия
<option value="urk" name="country" >Украина
<option value="bel" name="country" >Белоруссия
<input type=submit value="ок">
</form>
<?
$countrys = Array('urk', 'rus', 'bel');
// по дефолту будет $countrys[0] (т.е. urk)
$lang = isset($_POST['country'])?$_POST['country']:$countrys[0];
if (!in_array($country,$countrys)) $country = $countrys[0];
echo 'страна: '.$country;
?>
надо чтоб при выборе в файле index.php "Россия" вылазило тру
<?
$name[0]="rus";
$name[1]="ukr";
$name[2]="bel";
if($name[0] == rus) {
echo "Тру";
}else{
echo "фолс";
}
?>
<?
$name[0]="rus";
$name[1]="ukr";
$name[2]="bel";
if($name[0] == rus) {
echo "Тру";
}else{
echo "фолс";
}
?>
бред ,теперь всегда тру
мде, ни укого не будет пахать
<form action = "send.php" method="post">
<select name="country">
<option value="rus" >Россия </option>
<option value="ukr" >Украина </option>
<option value="bel" >Белоруссия </option>
</select>
<input type=submit value="ок">
</form>
send.php
<?php
if($_POST['country']=='rus') echo 'тру';
?>
----
ахахах, вас смело на говнокод постить можно
<form action = "send.php" method="post">
<select name="country">
<option value="rus">Россия
<option value="ukr">Украина
<option value="bel">Белоруссия
<input type=submit value="ок">
</form>
#send php
if ($_POST['country'] == 'rus') { echo 'true'; }
else { echo 'untrue'; }
-m0rgan-
10.05.2009, 16:57
2roddik
Твой вариант аналогичен варианту D Mak, только с else =/
2L I G A
А чет тебя не устраивает вариант D Mak?
Там всё правельно, чего не хватает?
<form action = "send.php" method="post">
<select name="country">
<option value="rus">Россия
<option value="ukr">Украина
<option value="bel">Белоруссия
<input type=submit value="ок">
</form>
<?
switch ($_POST['country'])
{
case 'ukr': echo 'Ukrainian';
break;
case 'bel': echo 'Belorussian';
break;
case 'rus': // Тут нету бряка, чтобы по и по дефолту и по $_POST переходило на русский язык
default: echo 'Russian';
break;
}?>
Создал батник который будет выполнять скрипт online.php
@"C:\Program Files (x86)\VertrigoServ\Php\php.exe" online.php
Всё бы хорошо но при запуске через БАТник пишет что не возможно к БД подключится
А если из браузера то всё ок, как быть?
Byrger какую ошибка дает?
Byrger какую ошибка дает?
функция майскукл_коннект...но коннект...
Если из браузере то всё ок....
Может ещё есть способы запуска ПХп сценария?
Я просто Крон хочу на Вин 2003 сделать...(nnCron стоит)
функция майскукл_коннект...но коннект...
конкретнее, че возвращает мускул_конект?
Warning: mysql_connect(): Can't connect to MySQL server on '127.0.0.1' (10022) in C:\Program Files (x86)\VertrigoServ\www\online.php on line 7
Ошибка БД
$msc=MYSQL_CONNECT($dbhost,$dbuser,$dbpass) or die ("Ошибка БД");
Через браузер всё ок запускается...
а мускул то включен? Попробуй localhost указать,а не ип
а мускул то включен? Попробуй localhost указать,а не ип
мускул включен, как тогда через браузер работает?
Прописав локалхост ничего не изменилось
shellz[21h]
11.05.2009, 05:27
Получаю контент, функцией file_get_countents() при получения страницы редиректит на другую, как я могу узнать куда меня редирекнуло. Кроме сокетов есть варианты?
cURL, самый просто вариант,получение заголовков, без тела документа,и посмотреть Location.
как выполнить 2 формы одним сабмитом? action один.
Ребят, помогите создать страничку, а то у мну траблы с формами... не могу сам сделать мини админку для сайта своего
надо чтоб было 2 формы ввода.
Формам задать переменые типа $text1 $text2
внизу кнопочка "ок"
при вводе текста в формы и после нажатия "ок" он бы редактировал файл.
Надо сделать так чтоб параметр например $text1 фтыкался между текстом
<center><b>$text1</b></center>
желательно чтоб работало все по фтп...
.
непонятно наверно написал :( я понимаю что тут нет ничего сложново но я даже не понимаю как начать :(
mouse.pro
11.05.2009, 13:35
как выполнить 2 формы одним сабмитом? action один.
http://otvety.google.ru/otvety/thread?tid=46c81f3bd6eae071&pli=1
Ребят, помогите создать страничку, а то у мну траблы с формами... не могу сам сделать мини админку для сайта своего
надо чтоб было 2 формы ввода.
Формам задать переменые типа $text1 $text2
внизу кнопочка "ок"
при вводе текста в формы и после нажатия "ок" он бы редактировал файл.
Надо сделать так чтоб параметр например $text1 фтыкался между текстом
<center><b>$text1</b></center>
желательно чтоб работало все по фтп...
<form method=post>
text1: <input type=text name=text1>
text2: <input type=text name=text2>
<input type=submit value="ok">
</form
<?
if (isset($_POST['text1'])) {
// тут соеденяешся с фтп
// ..
$fh = fopen('filename.txt','a');
fwrite($fh,'<center><b>'.htmlspecialchars($_POST['text']).'</b></center>');
fclose($fh);
// тут заливаеш файл filename.txt на фтп
// ..
print ('Finish!');
}
?>
не, надо чтоб он редактировал файл который уже на фтп...
например файл ftp://sayt.ru/news/news.php
$f = fopen ('ftp://sayt.ru/news/news.php', 'w')
:)
как выполнить 2 формы одним сабмитом? action один.
..
<?
//test.php
if(!isset($_POST['data'])) {
?>
<form id='one' target='frame1' method='POST'>
<input type='text' name='data'>
</form>
<form id='two' target='frame2' onSubmit='document.getElementById("one").submit();' method='POST'>
<input type='text' name='data'>
<input type='submit' value='ok'>
</form>
<iframe name='frame1' style='display:none'></iframe><iframe name='frame2' style='display:none'></iframe>
<?
} else {
?>
<script>
alert("<?=$_POST['data']?>");
if(parent.form_ok) {
window.parent.document.location='test.php';
} else {
parent.form_ok=true;
}
</script>
<?
}
?>
имхо проще объединить 2формы в 1 чем делать тот ужас что в #10507 посте
имхо проще объединить 2формы в 1 чем делать тот ужас что в #10507 посте
Уже давно не актуально.
я тут пытаюсь создать pdf файл с помощью пхп, и тут трабл небольшой , есть ф-ция http://www.php.su/functions/?pdf-findfont (pdf_findfont()) , она должна возвращать метрики для определенного шрифта, а мне выдает ошибку Metrics data for font 'Arial' not found', шрифт вроде стандартный, в чем может быть проблема?
$font = pdf_findfont($pdf, "Arial", "winansi", 1);
if ($font) { echo 'ok'; } else { echo 'smth bad..'; }
не пишет нито нито, сразу ошибку
Fatal error: Uncaught exception 'PDFlibException' with message 'Metrics data for font 'Arial' not found' in C:\xampp\htdocs\pdf.php:7 Stack trace: #0 C:\xampp\htdocs\pdf.php(7): pdf_findfont() #1 {main} thrown in C:\xampp\htdocs\pdf.php on line 7
я вроде разобрался, там к библиотеке, работающей с pdf, прилагалась папка fonts, только вот куда эту папку пихать неясно, там два файла pdflib.upr и print_glyphs
Поднимаю пост
http://forum.antichat.ru/showpost.php?p=1268826&postcount=10492
как в ПХП первое слово в строке засунуть в другую переменную , т.е все что до первого пробела
<?
$text = "1 2 3";
$p = explode(" ", $text);
$out = $p[0];
echo $out;
?>
laedafess
12.05.2009, 22:26
Поднимаю пост
http://forum.antichat.ru/showpost.php?p=1268826&postcount=10492
запусти сначала mysqld.exe
Новичек-я
13.05.2009, 09:03
Есть форма:
<textarea name="name" cols="60" rows="5"></textarea>
Помогите написать скрипт к этои форме, который бы разбивал бы введенные значения построчно, и выводил любое значение (рандомно) из этого textarea (Любую из строчек введенную в поле).
Я так понимаю тут нужен массив, значит рнр, надеюсь темой не ошибся.
Спасибо.
laedafess
13.05.2009, 10:05
<?
if (!isset($_POST[name]))
echo '<form method=post>
<textarea name="name" cols="60" rows="5"></textarea>
<input type=submit value=ok>
</form>';
else{
$arr=explode("\n",$_POST[name]);
echo $arr[rand(0,count($arr)-1)];
}
?>
запусти сначала mysqld.exe
Запущен
Или через БАТ както ещё?
laedafess
13.05.2009, 15:48
Хм.. ну он в процессах есть? У меня после его запуска все заработало.
function dep_tree3 ($parent_id,$session) {
$sql = "SELECT * FROM `departments` WHERE `dep_parent_id` = $parent_id ORDER BY `dep_name`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
$sql2= "INSERT INTO `temp` ( `id` , `session` ) VALUES ('$row[dep_id]','$session')";
$result2 = mysql_query($sql2);
dep_tree3($row['dep_id']);
}
}
}
почему не получается записать в таблицу переменную session???
если ее вывести на экран до while и до if то она выводится а внутри уже нет в чем проблемма?
function dep_tree3 ($parent_id,$session) {
$sql = "SELECT * FROM `departments` WHERE `dep_parent_id` = $parent_id ORDER BY `dep_name`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
$sql2= "INSERT INTO `temp` ( `id` , `session` ) VALUES ('$row[dep_id]','$session')";
$result2 = mysql_query($sql2);
dep_tree3($row['dep_id']);
}
}
}
почему не получается записать в таблицу переменную session???
если ее вывести на экран до while и до if то она выводится а внутри уже нет в чем проблемма?
В одинарных ковычках
В одинарных ковычках
причем тут кавычки?!
я ж вроде ясно описал проблему
$session не выводится после if(......) и также внутри while
до if все ок
Pashkela
13.05.2009, 18:04
2 svesve:
В начало скрипта вставь:
@ini_set("display_errors","1");
и после каждого квери
or die(mysql_error());
Хм.. ну он в процессах есть? У меня после его запуска все заработало.
Да есть в процессах
Я же писал что из браузера всё ок открывается...
svesve А ты не подумал что условие не выполняется?
и кстате зачем тебе if (mysql_num_rows($result) > 0) ?
ведь если небыло выбрано ничего из БД то while не будет выполнятся =)
function dep_tree3 ($parent_id,$session) {
$sql = "SELECT * FROM `departments` WHERE `dep_parent_id` = $parent_id ORDER BY `dep_name`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
$sql2= "INSERT INTO `temp` ( `id` , `session` ) VALUES ('$row[dep_id]','$session')";
$result2 = mysql_query($sql2);
dep_tree3($row['dep_id']);
}
}
}
почему не получается записать в таблицу переменную session???
если ее вывести на экран до while и до if то она выводится а внутри уже нет в чем проблемма?
потому что НЕ '$row[dep_id]'
а '{$row['dep_id']}'
и кстате зачем тебе if (mysql_num_rows($result) > 0) ? ведь если небыло выбрано ничего из БД то while не будет выполнятся =)
тут рекурсия, ведь ее же надо будет когда то отсановить))))
потому что НЕ '$row[dep_id]' а '{$row['dep_id']}'
да суть не в этом а в том что даже
echo $session в while илил после if не дает ничего.переменная пустая!
да суть не в этом а в том что даже
echo $session в while илил после if не дает ничего.переменная пустая!
и да, mysql_fetch_array фетчит в обычный массив, а не ассоциированный. Так что тебе нужно юзать mysql_fetch_assoc
и да, mysql_fetch_array фетчит в обычный массив, а не ассоциированный. Так что тебе нужно юзать mysql_fetch_assoc
блин причем тут массив речь идет о выводе переменной!
if (mysql_num_rows($result) > 0) {
echo $session;
^^вывода нет
echo $session;
if (mysql_num_rows($result) > 0) {
^^вывод есть
mysql_num_rows точно >0
$sql = "SELECT * FROM `departments` WHERE `dep_parent_id` = '$parent_id' ORDER BY `dep_name`";
мохзе прав
mysql_num_rows точно >0
такие слова забудь
а проверку вывода делай примерно так
echo "-- $session --";
$fp = fopen ( '1.txt', 'w' );
if ( $fp ) {
$size = filesize ( $fp );
$text= fread ( $fp, $size );
$res=$text+1;
fputs ($fp, $res);
fclose ( $fp );
}
Warning: filesize() [function.filesize]: stat failed for Resource id #4 in /home/mercitaxic5964/data/www/mercitaxi.com.ua/index.php on line 28
Warning: fread() [function.fread]: Length parameter must be greater than 0 in /home/mercitaxic5964/data/www/mercitaxi.com.ua/index.php on line 30
bool(false)
в чем загвоздка?
Pashkela
14.05.2009, 02:27
$fp = fopen ( '1.txt', 'w' );
w - открывает файл на запись, при этом УДАЛЯЕТ всё его содержимое, поэтому 0 байт
чтобы уметь ПРОЧИТАТЬ файл или сведения о нём - r, или + к любой другой букве
При открытии следует указать режим r+, файл откроется для чтения и записи, при этом указатель встанет в начало файла; либо же режим a+
php.net/fopen
У меня идёт подгрузка скриптов таким сценарием...
Возможно ли поставить защиту от PHP -inj и как?
if (!IsSet($t)&!IsSet($f))
{
$f="main";
$filename=$f . ".php";
}
else
{
if (IsSet($t)&!IsSet($f))
{
$filename=$t . "/index.php";
}
if (IsSet($t)&IsSet($f))
{
$filename= $t . "/" . $f . ".php";
}
if (!IsSet($t)&IsSet($f))
{
$filename=$f . ".php";
}
}
Используй функцию file_exists() дабы нельзя было ничего подключить из вне!
Возвращзает TRUE, если файл или каталог с именем, указанным в параметре filename, существует; возвращает FALSE в обратном случае.
(с)php.su
далее работай мозгом :)
Используй функцию file_exists() дабы нельзя было ничего подключить из вне!
С версии 5+ она работает и с ftp.
Тут все такие умные вопросы задают, а может кто-то объяснить чем $i++ отличается от ++$i , ведь по сути это inc(i) тот же, в чём отличие тогда. Я загуглил конечно, прочитал, но к сожалению не понял =.
$i++ выдать $i как результат а затем увеличить $i на 1
++$i увеличить $i на 1 и выдать результат
Veteriuz
14.05.2009, 23:30
емеем
<?
$data = gzfile('http://ru7.voyna-plemyon.ru/map/player.txt.gz');
list($id, $name, $ally, $villages, $points, $rank) = explode(",", $dat);
if($ally==3560)
{
echo $name;
echo "<br>";
}
?>
смысл: вывод всех $name с $ally==3560 на экран. (будет около 180 значений)
а вообще вместо вывода на экран будет запись в новый файл
не работает :(
ps файл http://ru7.voyna-plemyon.ru/map/player.txt.gz действителен(переодически обновляется) и сформирован, как уточнили Админы, через urlencode()
если нужна - инфа тут (http://ru7.voyna-plemyon.ru/help2.php?article=map_data)
UPD
порылся в этой теме и нашел похожий случай. переделал под себя и .. заработало!
но чуствую кривовато как-то работает:)
<?
set_time_limit(0);
$log = 'http://ru7.voyna-plemyon.ru/map/player.txt.gz';
$file = gzfile($log);
$k = array();
foreach($file as $abc)
{
list($k['id'][], $k['namel'][], $k['ally'][], $k['villages'][], $k['points'][],
$k['rank'][]) = explode(',,,,,', trim($abc));
}
$count = count($k['id']); // тут считает только по id
for($i = 0;$i < $count; $i++)
{
$str['$i'] = $k['id'][$i];
$data = $str['$i'];
list($id, $name, $ally, $villages, $points, $rank) = explode(",", $data);
if($ally==3560)
{
echo urldecode($name);
echo "<br>";
}
}
?>
проблемы на этом этапе:
1) $k['id'][$i] присваивается значение всей строки(поэтоу затем каждую строчку ломал на части), а $k['name'][$i] ничего не присваиваться
2) имена на русском и перебиты через urlencode. при urldecode выдает непонятную кодировку. как можно исправить?
спасибо за внимание:)
помогите плиз, никак не могу разобратся, мне нужно сгенерить .pdf файл
добавил библиотеку pdflib.dll
взял самый простой код генерации, но мне выдает ошибку что нужны метрики шрифтов, эти метрики были в архиве библиотеки pdflib, отрыл в инете как подключать эти метрики шрифтов, только ничего все равно не работает
вот ошибка
Fatal error: Uncaught exception 'PDFlibException' with message 'Metrics data for font 'Tahoma' not found' in C:\xampp\htdocs\pdf.php:9 Stack trace: #0 C:\xampp\htdocs\pdf.php(9): pdf_findfont() #1 {main} thrown in C:\xampp\htdocs\pdf.php on line 9
вот код :
<?php
$pdf = pdf_new();
pdf_open_file($pdf, 'new.pdf');
pdf_begin_page($pdf, 595, 842);
PDF_set_parameter($pdf,"resourcefile","pdflib.upr");
PDF_set_parameter($pdf,"resourcefile","print_glyphs.ps");
pdf_findfont($pdf, "Tahoma", "host", 1);
pdf_setfont($pdf, "Tahoma", 30);
pdf_set_value($pdf, "textrendering", 1);
pdf_show_xy($pdf, "A PDF document created in memory!", 50, 750);
pdf_end_page($pdf);
pdf_close($pdf);
$data = pdf_get_buffer($pdf);
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=test.pdf");
header("Content-length: " . strlen($data));
echo $data;
?>
эти две строчки подключают шрифты .... вроде.. должны (файлы шрифтов находятся в одной директории с pdf.php) :
PDF_set_parameter($pdf,"resourcefile","pdflib.upr");
PDF_set_parameter($pdf,"resourcefile","print_glyphs.ps");
помогите если кто такое уже делал...
xpkeygen
15.05.2009, 16:32
какие уязвимости можно проэксплуатировать в этом коде
<html><head><title>Support Control Module (c)
</title>
<link href="style.css" rel="stylesheet" type="text/css"><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head>
<body>
<form name="logon" action="authorize.php" method="post">
<div align="center">
<img src="/support/i/logo.jpg"/>
<table width="210" border="0" cellspacing="0" cellpadding="1" class="text">
<tr>
<td colspan="2" align="center" height="20">Пожалуйста, авторизируйтесь...</td>
</tr>
<tr>
<td id="b">ЛОГИН:</td>
<td><input type="text" name="login" value="" size="20"></td>
</tr>
<tr>
<td id="b">ПАРОЛЬ:</td>
<td><input type="password" name="password" value="" size="20"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="ВОЙТИ" class="text" id="b"></td>
</tr>
<tr>
<td colspan="2" height="1">
</td>
</tr>
<tr>
<td colspan="2" align="center" valign="bottom" height="40"><hr>
Support Control Module (c) 2005-2006</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Эм, это вообще хтмл шаблон формы авторизации.
Искать уязвимости надо в authorize.php
А из этого ничего...разве что
name="password"
name="login"
изредко могут совпадать с названием колонок в Бд...
xpkeygen
15.05.2009, 18:07
Эм, это вообще хтмл шаблон формы авторизации.
Искать уязвимости надо в authorize.php
А из этого ничего...разве что
name="password"
name="login"
изредко могут совпадать с названием колонок в Бд...
насчет login и password, то это я проверял - не подходит. Может быть есть какие-нибудь уязвимости, если вписать какую-нибудь абракадабру в поля логин или пароль ?
почитай статьи,пробуй передавать массивы,а не переменные,попробуй скули, да много что
Решите плиззз
Простенький алгоритм:
Дан двумерный массив размерностью 30x30:
К любом элементу можно обратиться типа array[X][Y],
где XY координаты.
В массиве может содержаться число от 1 до 3-х.
Необходимо написать функцию, которая возвращает координаты последовательности из
любого числа 1 или 2 (не 3), которое идет 5 раз подряд по вертикали, горизонтали
или диагонали.
Пример:
[3][3][1][3][3][3]
[3][2][1][3][3][3]
[3][2][1][3][3][3]
[3][3][1][3][3][3]
[3][3][1][3][3][2]
Функция должна вернуть:
3,1
3,2
3,3
3,4
3,5
2xpkeygen
попробуй:
Login: " OR 1=1%00
Pass:
или
Login: ' OR 1=1%00
Pass:
Вариантов много, в зависимости от того, какой код в authorize.php
KaMiKadZe
15.05.2009, 23:46
Нужно добавить переключение по месяцам...
Т.е должны быть "<" - на месяц назад и ">" - месяц вперед
Уже всю голову сломал...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Календарь</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</HEAD>
<body>
<?php
include("blocks/bd.php");
// Функция для проверки имеются ли новости по определенной дате
function url ($date){
$result = mysql_query ("SELECT date FROM news WHERE date='$date'");
$numrow = mysql_num_rows ($result);
return $numrow;
}
//Вычисляем дату
$td = "<td align='right' class='a1'>";
$day = date ('d'); // день месяца
$month = date ('m'); // месяц
$year = date ('Y'); // год пример 1970
$end_day = date ('t'); // количество дней в месяце
$one_day = date ('w'); // номер дня недели от 0 до 6
// Присваиваем каждому месяцу название
switch ($month){
case 0:
$month_s='Декабрь';
break;
case 1:
$month_s='Январь';
break;
case 2:
$month_s='Февраль';
break;
case 3:
$month_s='Март';
break;
case 4:
$month_s='Апрель';
break;
case 5:
$month_s='Май';
break;
case 6:
$month_s='Июнь';
break;
case 7:
$month_s='Июль';
break;
case 8:
$month_s='Август';
break;
case 9:
$month_s='Сентябрь';
break;
case 10:
$month_s='Октябрь';
break;
case 11:
$month_s='Ноябрь';
break;
}
//Рисуем таблицу
$calendar = "<table align='center' border='0' cellpadding='0' cellspacing='0' class='a2'>
<tr><td>
<table border='0' cellspacing='1' cellpadding='2' width='100%'>
<tr>
<td align='center' colspan='7' class='a3'>
<font class='a4'>
<b> $month_s $year </b></font></td>
</tr>
<tr>
<td align='center' class='a5'>Пн</td>
<td align='center' class='a5'>Вт</td>
<td align='center' class='a5'>Ср</td>
<td align='center' class='a5'>Чт</td>
<td align='center' class='a5'>Пт</td>
<td align='center' class='a5'>Сб</td>
<td align='center' class='a5'>Вс</td>
</tr>";
//Цикл заполнения календаря
for ( $i = 1; $i <= $end_day+$one_day; $i++)
{
if ($x==0){$x=7;}
$x--;
$a = $i- $one_day;
$date = $year."-".$month."-".$a;
// Делаем дни что не существуют в начале пустыми
if ($one_day> $i or $a<1){$calendar .= "$td</td>";}
// Суббота
elseif ($i==6 or $i==13 or $i==20 or $i==27 or $i==34){
//Сегодняшний день если суббота
if ($i==$day+$one_day){
// Делаем числа не имеющие новостей не ссылками
if (url($date) > 0)
{
$a = "<font class='a4'><a href='index.php?date=$date'>$a</a></font>";
}
else
{
$a = "<font class='a4'>$a</font>";
}
}
// Делаем числа не имеющие новостей не ссылками
if (url($date) > 0)
{
$calendar .= "$td <a href='index.php?date=$date'>$a</a> </td>\n";
}
else
{
$calendar .= "$td $a</td>\n";
}
}
// Воскресенье + достройка таблицы
elseif ($i==7 or $i==14 or $i==21 or $i==28 or $i==35){
// Делаем числа не имеющие новостей не ссылками
if (url($date) > 0)
{
$calendar .= "$td <a href='index.php?date=$date'>$a</a> </td></tr><tr>";
}
else
{
$calendar .= "$td $a </td></tr><tr>";
}
}
// Сегодняшний день если воскресенье
elseif ($i==$day+$one_day){
// Делаем числа не имеющие новостей не ссылками
if (url($date) > 0)
{
$calendar .= "<td align='right' class='a7'><font class='forums'><a href='index.php?date=$date'>$a</a></font></td>";
}
else
{
$calendar .= "<td align='right' class='a7'><font class='forums'>$a</font></td>";
}
}
// Выводим все остальные дни
else {
// Делаем числа не имеющие новостей не ссылками
if (url($date) > 0)
{
$calendar .= "$td <a href='index.php?date=$date'>$a</a> </td>";
}
else
{
$calendar .= "$td $a </td>";
}
}
}
// Делаем дни что не существуют в конце пустыми
if ($x!=0){
for ( $i = 0; $i < $x; $i++){ $calendar .= "$td</td>"; }
}
$calendar .= "</table></td></tr></table>";
echo $calendar;
?>
Дяди добрые!!!
Чтобы всех Nickname пользователей собрать есть ли скрипт?
а то их 22 тыщи по 25 на странице.
поможите в личку!
http://www.drive2.ru/users/?country=RU&city=&page=last&filter=
Нужно добавить переключение по месяцам...
Т.е должны быть "<" - на месяц назад и ">" - месяц вперед
Уже всю голову сломал...
не стал разбираться в твоем коде, чет говнокодом попахивает.. наговнокодил сам, разберешься думаю
<?php
//Вычисляем дату
$day = date ('d'); // день месяца
$month = (isset($_GET['month']) && intval($_GET['month']) && $_GET['month']>0 && $_GET['month']<=12) ? intval($_GET['month']) : date ('m'); // месяц
$year = date ('Y'); // год пример 1970
$end_day = date ('t'); // количество дней в месяце
$one_day = date ('N'); // !!
// Присваиваем каждому месяцу название
?>
<table>
<tr>
<td>ПН</td>
<td>ВТ</td>
<td>СР</td>
<td>ЧТ</td>
<td>ПТ</td>
<td>СБ</td>
<td>ВС</td>
</tr>
<tr><?
$ot = date('N', mktime(1, 0, 0, $month, 1, $year))-1; //отступ для 1 числа
for($i=0; $i<$ot; $i++) echo '<td> </td>';
for($i=1; $i<=$end_day; $i++) { echo '<td>'.$i.'</td>'; echo (!(($ot + $i) % 7)) ? ($i != $end_day) ? "</tr><tr>\n" : "</tr>\n" : '';}
?>
</table>
<a href="?month=<?=($month-1)%12;?>"><</a>
<a href="?month=<?=($month+1)%12;?>">></a>
Как проверить вернул ли что-то SQL запрос?
Lide небольшой говнокод
for($i=0; $i<30; $i++)
for($j=0; $j<30; $j++)
if(a[i][j]==1) if($j<26 && a[i][j+1]==1 && a[i][j+2]==1 && ...) { echo $j.$j+1.$j+2...; $j+=5}
if(a[i][j]==2) if($j<26 && a[i][j+1]==2 && a[i][j+2]==2 && ...) { echo $j.$j+1.$j+2...; $j+=5}
аналогично для вертикали, а для диагонали чет думать неохота пока
Как проверить вернул ли что-то SQL запрос?
Только для запросов SELECT, SHOW, EXPLAIN, DESCRIBE, mysql_query() возвращает указатель на результат запроса, или FALSE если запрос не был выполнен. В остальных случаях, mysql_query() возвращает TRUE в случае успешного запроса и FALSE в случае ошибки. Значение не равное FALSE говорит о том, что запрос был выполнен успешно. Он не говорит о количестве затронутых или возвращённых рядов. Вполне возможна ситуация, когда успешный запрос не затронет ни одного ряда.
Т.е.
<?php
$result = mysql_query("SELECT * FROM mytable")
or die("Invalid query: " . mysql_error());
?>
Или
<?php
$result = mysql_query("SELECT * FROM mytable");
if ($result)
{
//Все ок.
}
else
{
//Что то не так.
}
?>
как правильно расставить кавычки чтоб такая конструкция работала?
$_POST["count[$key]"]
BiG_][aKeR
16.05.2009, 12:44
Почему ф-ция исполняеться БЕЗ её вызова в коде???????
<?php
function start(){
$fpg = fopen("2.txt","r");
for ($vsegvuvod=0; $vsegvuvod>-1; $vsegvuvod++){
$datag = fgets($fpg, 20000000);
if($datag==""){
break;
}
}
fclose($fpg);
return $vsegvuvod;
}
$vsegvuvod=&start();
echo $vsegvuvod;
?>
От,по сути должна быть пустая страница, НО функция обрабатываеться и так,что с
start();
что без него!! почему???
BiG_][aKeR А это что? $vsegvuvod=&start();
Или покажите два варианта, правильный и который вы считаете неправильным
Byrger что ты хотел сказать этой конструкцией?
$_POST[$count[$key]] - если $count -массив строк
BiG_][aKeR &start(); - а это не вызов? или че ты имел ввиду?
BiG_][aKeR
16.05.2009, 12:50
хм,а как тогда достать содержимое переменной в цункции в наружу без етого,чтоб функция не вызывалась?????
Pashkela
16.05.2009, 12:54
никак, только выполнив функцию
Есть строка надо проверить что в ней не содержались симворы...
Только латинский алфовит
Как это сделать?
PS не резать их а именно проверить есть или нет
if(!preg_match('#([a-zA-Z])#',$text)){
echo 'fuck';
}else{
echo 'nice';
}
BiG_][aKeR
16.05.2009, 14:46
Помогите плз.
<?php
$post="pt";
if (preg_match("/$post/",'p',$t)){
echo "ok";
}
?>
Походу должно искать в $post наличие символа p в нём,и есле он присутствует то выводить ok,но,он не пашет так. Есле $post="p"; то выведет,а есле $post="pabc"; то нет,почему?
Походу должно искать в $post наличие символа p в нём,и есле он присутствует то выводить ok,но,он не пашет так. Есле $post="p"; то выведет,а есле $post="pabc"; то нет,почему?
Потому что параметры перепутал.
preg_match("/p/",$post,$t)
Pashkela
16.05.2009, 15:33
Если просто для поиска и определения наличия символа - массив $t указывать не обязательно, если в дальнейшем массив $t не будет использоваться
т.е. просто:
<?php
$post="pt";
if (preg_match("/p/",$post)) echo "ok";
?>
не забудьте про preg_quote
BiG_][aKeR
16.05.2009, 15:56
не забудьте про preg_quote
Емм,а он зачем сдесь то??
как из js перед значение переменной в пхп ? (GET не предлагать)
[aKeR']Емм,а он зачем сдесь то??
Чтобы не было проблем, когда юзер введет []{}/ и тому подобное, т.к изменит логику регулярки.
bxn5, посмотри примеры с библиотекой ajax
Veteriuz
16.05.2009, 19:39
пытаюсь определить високосный ли год
29 дней в феврале имеет каждый год, разделяя который на 4 нет остатка
<?
$vis = $da1_y / 4; // делю "год" на четыре.
if(??????){$fev = 29; } // вместо вопросов нужна функция что то вроде "если $vis_без_остатка = $vis"
else {$fev = 28; }
echo $fev;
?>
нигде не могу найти подобную функцию. подскажите плиз. либо альтернативный способ
в экселе такое точно есть)
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot