PDA

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


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

b3
16.12.2008, 22:45
Если ты парсиш переменные в двойных ковычках "" необязательно писать конструкцию типа:
$headers = "From:".$from."\r\nReply-To:".$from."\r\n";
пишеш просто:
$headers = "From:$from\r\nReply-To:$from\r\n";
Насчет конфигурации, у меня нестоит вздрочня типа денвера =) И конфиги РНР как на хостингах, приближенно к РНР6
В первой строке твоего кода:
preg_match('#(.+)@#',$who,$m);
переменная $who создасться только тогда когда форма будет заполнена и нажата кнопка отправить форму, и нет проверки на существование и присвоение переменной значения, тоесть:
if(isset($_POST['who'])
Так же юзай конструкцию типа <? КОД ?> если на хостинге будет short_open_tag=off то твой скрипт отобразиться как просто .тхт а ОФФ будет на РНР6 и сейчас на некоторых хостингах. В целом ошибок в скрипте нет, неотправляет мб потому что функция mail() неработает на твоем имба серваке)

m0Hze
16.12.2008, 22:47
хм,может быть...

m0Hze
16.12.2008, 22:53
Нет,скрипт не работает.Так как нет определения запрещенных доменов! Если бы он работал,то он бы реагировал на запрещенные домены,а он их пропускает споскойно.Имена - да блокирует,такие как support@... а домены типо @mm.com не блокирует,хотя должен,Пересмотрите еще раз,может чтото где то,а то я уже задрался мучица Ж(
Функция мейл на серваке работает отменно!

m0Hze
16.12.2008, 23:00
Бумаги хватит?)
php.net

m0Hze
16.12.2008, 23:25
Ну раз никто не знает,то вот так.
Как сделать в switch, чтобы была проверка несколькоих вариантов
Например

switch($test){
case 'test','test2' : $Mess = dgi;
break;
}

Смысл я думаю понятен, как?)

Chaak
16.12.2008, 23:25
Если ты парсиш переменные в двойных ковычках "" необязательно писать конструкцию типа:

пишеш просто:
$headers = "From:$from\r\nReply-To:$from\r\n";
Насчет конфигурации, у меня нестоит вздрочня типа денвера =) И конфиги РНР как на хостингах, приближенно к РНР6
В первой строке твоего кода:
preg_match('#(.+)@#',$who,$m);
переменная $who создасться только тогда когда форма будет заполнена и нажата кнопка отправить форму, и нет проверки на существование и присвоение переменной значения, тоесть:
if(isset($_POST['who'])
Так же юзай конструкцию типа <? КОД ?> если на хостинге будет short_open_tag=off то твой скрипт отобразиться как просто .тхт а ОФФ будет на РНР6 и сейчас на некоторых хостингах. В целом ошибок в скрипте нет, неотправляет мб потому что функция mail() неработает на твоем имба серваке)
Ну, вообще, по правилам надо писать:
<?php
echo "Text: {$text}";
?>

m0Hze
16.12.2008, 23:36
Так,в общем все заработало(кроме определения домена,ну ето ерунда поправлю) шибка была в mail(); там стояла переменная $email заместо $who.
А теперь вопрос.
Письмо дергаеться из файла
$message = file_get_contents("all.txt");
Но в письме находяться переменные.Тоесть например ам есь строка
"Здравствуйте $name."
Так вот, эти переменные не подставляються,а отправляються в таком виде,в котором они были.В общем помогайте ребяты..жду енота,он точно поможет Ж)

prescott
16.12.2008, 23:42
Так,в общем все заработало(кроме определения домена,ну ето ерунда поправлю) шибка была в mail(); там стояла переменная $email заместо $who.
А теперь вопрос.
Письмо дергаеться из файла
$message = file_get_contents("all.txt");
Но в письме находяться переменные.Тоесть например ам есь строка
"Здравствуйте $name."
Так вот, эти переменные не подставляються,а отправляються в таком виде,в котором они были.В общем помогайте ребяты..жду енота,он точно поможет Ж)

$message=str_replace('$name', $name, $message);

- Если переменных немного

preda1or
17.12.2008, 00:34
кроме определения домена,ну ето ерунда поправлю
помог исправить)

ss88
17.12.2008, 03:28
Бумаги хватит?)
php.net
Ух ты какой ))) Не далее, как позавчера кричал, что там все сложно и непонятно )))
Кстати, я придумал, какие ты можешь вывешивать обьявления: "пишу крутые рнр-скрипты чужими руками" )))

optimazer
17.12.2008, 12:44
добавление ведущих нулей к цифрам!!!
КАК?

m0Hze
17.12.2008, 12:47
Ух ты какой ))) Не далее, как позавчера кричал, что там все сложно и непонятно )))
Кстати, я придумал, какие ты можешь вывешивать обьявления: "пишу крутые рнр-скрипты чужими руками" )))

Ога я такой.
ЗЫ.На php.net было не понятно,по тому что прокси была нерусская.Епнул рускую,теперь половина на руском.Промт рулет... Ж)

Chaak
17.12.2008, 12:50
добавление ведущих нулей к цифрам!!!
КАК?
$n = (string)'123';
echo '00000000000'.$n;

optimazer
17.12.2008, 12:54
у меня число в двоичном виде должно быть разрядности 5
если оно меньшей добивать ведущими нулями вот в чем суть

Пишу скриптик для вычисления MDC-4 хэш-функции.

groundhog
17.12.2008, 13:03
optimazer, вот пример:

<?php

printf("%08b", 5);

?>

0 - то, чем будет добиваться число;
8 - до какой длины;
b - спецификатор типа, тут - бинарный;

Pashkela
17.12.2008, 13:04
printf

groundhog
17.12.2008, 13:06
Можно и sprintf если результат должен быть куда-то сохранён...

Rebz
17.12.2008, 15:07
groundhog, ChaaK - кто первый начнет пререкаться - тому бан. Я вас предупредил. Хватит тему засирать.

Malunga
17.12.2008, 18:15
Ребят, подскажите. Есть ли подобие функции print_r, но тока чтобы не выводило результат, а записывало в переменную.
Чтобы например записать в файл такую вот конструкцию:

Array
(
[0] => Array
(
[0] => текст
[1] => текст
)
)

Chaak
17.12.2008, 18:22
Ребят, подскажите. Есть ли подобие функции print_r, но тока чтобы не выводило результат, а записывало в переменную.
Чтобы например записать в файл такую вот конструкцию:

Array
(
[0] => Array
(
[0] => текст
[1] => текст
)
)
Есть кое-что похожее:
<?php

$array = array(array('текст','текст'));
$n = var_export($array);
file_put_contents('var.txt',$n);

?>

Особой разницы не заметишь :)

Gifts
17.12.2008, 18:24
Malunga $out=print_r($array,TRUE);

Malunga
17.12.2008, 18:26
Спасибо огромное!! Очень выручили!! )))
жалко пллюсы ставить не могу :(

PaCo
17.12.2008, 22:11
доброго всем времени суток, такой вопрос, как преобразовать строку которая была преабразована с помошью escape() (JavaScript) на пхпобратно, я говорю про русские, украинские символы, делаю ша вот так :

function charCode($text)
{
$alf=array('А'=>'%u0410','а'=>'%u0430','Б'=>'%u0411','б'=>'%u0431','В'=>'%u0412','в'=>'%u0432','Г'=>'%u0413','г'=>'%u0433','Д'=>'%u0414','д'=>'%u0434','Е'=>'%u0415','е'=>'%u0435','Ё'=>'%u0401','ё'=>'%u0451','Й'=>'%u0419','й'=>'%u0439','Ж'=>'%u0416','ж'=>'%u0436','З'=>'%u0417','з'=>'%u0437','И'=>'%u0418','и'=>'%u0438','К'=>'%u041A','к'=>'%u043A','Л'=>'%u041B','л'=>'%u043B','М'=>'%u041C','м'=>'%u043C','Н'=>'%u041D','н'=>'%u043D','О'=>'%u041E','о'=>'%u043E','П'=>'%u041F','п'=>'%u043F','Р'=>'%u0420','р'=>'%u0440','С'=>'%u0421','с'=>'%u0441','Т'=>'%u0422','т'=>'%u0442','У'=>'%u0423','у'=>'%u0443','Ф'=>'%u0424','ф'=>'%u0444','Х'=>'%u0425','х'=>'%u0445','Ъ'=>'%u042A','ъ'=>'%u044A','Ц'=>'%u0426','ц'=>'%u0446','Ч'=>'%u0427','ч'=>'%u0447','Ь'=>'%u042C','ь'=>'%u044C','Ш'=>'%u0428','ш'=>'%u0448','Щ'=>'%u0429','щ'=>'%u0449','Ы'=>'%u042B','ы'=>'%u044B','Э'=>'%u042D','э'=>'%u044D','Ю'=>'%u042E','ю'=>'%u044E','Я'=>'%u042F','я'=>'%u044F','№'=>'%u2116');
$out=strtr($text,$alf);
return $out;
}


но мне не нравиться, во первых не красиво, во вторых если будет украинский текст то надо еше добавлять и укр массих. Можно же как то по другому.

Pashkela
17.12.2008, 22:16
Можно, особенно если выложить закодированный текст

PaCo
17.12.2008, 22:24
Можно, особенно если выложить закодированный текст
да пожалуста
<script type="text/javascript">
document.write(escape("Можно, особенно если выложить закодированный текст") + "<br />")
</script>
Все нашел, спасибо мне :)
может кому пригодиться

function utf8_urldecode($str,$quotes,$charset){
$str = preg_replace_callback('/%u([0-9a-f]{4})/i',create_function('$arr','return "&#".hexdec($arr[1]).";";'),$str);
return html_entity_decode($str,$quotes,$charset);
}

m0Hze
17.12.2008, 23:47
Cdt моск отказываца думать совсем ку сок кода:

$world = file_get_contents('world.txt');
foreach(file($world) as $list){
$list = str_replace("\n","",$list);
.....}

Вот что получаю:
Warning: Invalid argument supplied for foreach() in D:\WebServer\htdocs\md5\md5.php on line 8
=(
Получаю

Gifts
17.12.2008, 23:56
m0Hze $world = file('world.txt');
foreach($world as $list){
$list = str_replace("\n","",$list);

И если что - str_replace может принимать и массив в качестве переменной, следовательно и вернет массив

astrologer
17.12.2008, 23:59
Cdt моск отказываца думать совсем ку сок кода:

$world = file_get_contents('world.txt');
foreach(file($world) as $list){
$list = str_replace("\n","",$list);
.....}

Вот что получаю:
Warning: Invalid argument supplied for foreach() in D:\WebServer\htdocs\md5\md5.php on line 8
=(
Получаю$data = file('world.txt', FILE_IGNORE_NEW_LINES);

ntldr
18.12.2008, 00:07
foreach(file('world.txt') as $list){
$list = str_replace("\n","",$list);
.....}

Наверное!

FeoЩту
18.12.2008, 00:09
$list = str_replace("\n","",$list); LOL
$list = trim($list);

m0Hze
18.12.2008, 00:32
Чтото странно. Собственно,решил попробывать написть скрипт,брут хешей,но со всеми типами хешей,с солью,мускул и т.д
Взял за основу скрипт от фазы:

<?
set_time_limit(0);
if (!isset($_POST['crack'])) {
echo "<i>World-List</i>: <input type='text' name='list'><br>";
echo "<i>MD5 Hash</i>: <input type='text' name='hash'><br>";
echo "<i>Salt</i>: <input type='text' name='salt'><br>";
echo "<input type='submit' name='submit' value='Crack The Salt!'>";
$list = $_POST['list'];
$hash = $_POST['hash'];
$salt = $_POST['salt'];
}else{

foreach(file($list) as $line){
$line = str_replace("\n","",$line);
$cracked = md5(md5($line).$salt);
if($hash = $cracked){
die("Salt Broken...<br>
[+]Password = $line<br>");

}
}else{
echo "Sorry mate, no payoff today, try another list!";
}
?>

Ладно,то что в нем у меня находит ошибку в последней строке,чтото там с $end.
ноя никогда не работак с foreach. Почитал на php.net что ето за функция,быстро разобрался как действует.И на пробу набросал скрипт, брут обычного md5. Имеенно его кусок я выкладывал.
Но он чтото не катит,даже не то что не кактит,он мне сразу выписывает,причем на всю страницу,много тыщ раз,о том что хеш сбручен.
Я понимаю помоему почиму,ведь обе переменные,используемые для сравнения, $brute = $hash изначально пустые,но там есть и еще несколько ошибок в фореач.Собственно вот.Хотелось бы раз и навсегда уяснить,как происходит сравнение (хорошее),и что сначало нужно обозначить.Собственно сам срипт.
В таком варианте,я вижу тысячи надпесей...

<?
echo '<form method = "POST">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';
$hash = $_POST['hash'];
$world = file('world.txt');
foreach($world as $list){
$brute = md5($list);
if($brute == $hash){
echo "Hash cracked!";
echo "Password $line";
exit();
}else{
echo "Hash то cracked";
}
}
?>

А в таком,я вижу ошибку "Parse error: syntax error, unexpected T_FOREACH in D:\WebServer\htdocs\md5\md5.php on line 8"
Привожу только измененную часть кода:

......
$world = file_get_contents('world.txt');
foreach($world as $list){
$brute = md5($list);
.....

Gifts
18.12.2008, 00:48
m0Hze
http://php.net/file/
http://php.net/file_get_contents/

geforce
18.12.2008, 00:50
нашел ответ на вопрос кому интересно смотрите!

http://forum.antichat.ru/threadnav40896-703-10.html

#7029 ;)

При выводе функцией imagejpeg(); в коде не должн присутствовать html код так как в третьей строчке html документа идёт пояснение о том что страница будет передовать html/text контент! вобщем код выглядит вот так!

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);

$width = 275;
$heigth = 750;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);

imagecopy($im, $im1, 0, 0, 0, 0, 25, 25);
imagecopy($im, $im2, 25, 0, 0, 0, 25, 25);
imagecopy($im, $im3, 0, 25, 0, 0, 25, 25);

imagejpeg($im);
imagedestroy($im);
}
else
{
exit();
}
?>

geforce
18.12.2008, 00:58
Вопрос???

вот скрипт загруски!

<?php

// Подключаемься к базе данных

include ("db.php");

//================Настройки============= //
$maxwidth = "300px"; // максимальная ширина картинок на превью
$fotos_dir = "fotos/"; // Директория для фотографий товаров
$foto_name = $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем
$foto_light_name = time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь
$foto_tag = "<img src=\"$foto_name\" border=\"0\">"; // Готовый тэг для вставки картинки на страницу
$foto_tag_preview = "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"; // Тот же тэг, но для превью

// Текст ошибок
$error_by_mysql = "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>";



// Начало
if(isset($_FILES["myfile"]))
{
$myfile = $_FILES["myfile"]["tmp_name"];
$myfile_name = $_FILES["myfile"]["name"];
$myfile_size = $_FILES["myfile"]["size"];
$myfile_type = $_FILES["myfile"]["type"];
$error_flag = $_FILES["myfile"]["error"];

// Если ошибок не было
if($error_flag == 0)
{


$DOCUMENT_ROOT = $_SERVER['DOCMENT_ROOT'];
$upfile = getcwd()."\\fotos\\" . time()."_".basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name'])
{


//Если не удалось загрузить файл

if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
{
echo "$error_by_file";
exit;
}

}
else
{
echo 'Проблема: возможна атака через загрузку файла. ';
echo $_FILES['myfile']['name'];
exit;
}


// Заносим путь картинки в базу данных
$q = "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')";
$query = mysql_query($q);

// Загрузка с базы


$result = mysql_query("SELECT * FROM foto WHERE name='$foto_light_name'",$db);

if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);
printf ("<img src='%s'/>",$myrow['url']);

$adres = $myrow['url'];
}

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
// Данные успешно внесены в базу данных, выводим сообщение
if ($query == 'true') {
echo "<br /><b>Данные успешно внесены в базу</b>";
}

// В противном случае, выводим ошибку при добавлении в базу данных
else {
echo "$error_by_mysql";

}

}

elseif ($myfile_size == 0) {
echo "Пустая форма!";
}


}
?>
<form action="end.php" method="post" name="end">
<?
// Вывод базы картинок
$result1 = mysql_query("SELECT * FROM data",$db);

if (!$result1)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result1) > 0)

{
$myrow1 = mysql_fetch_array($result1);
do
{
printf ("<br><br><img src='admin/%s'><input name='vibor' type='radio' value='%s'><label>%s</label><br>",$myrow1["url"],$myrow1["id"],$myrow1["name"]);
}
while ($myrow1 = mysql_fetch_array($result1));


}

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<input name="load" type="hidden" value="<? echo $adres; ?>" />
<input name="sub" type="submit" value="далее" />

</form>
как зделать чтобы загружаемая катинка загружалась с шириной 215px и сохроняла пропорции? :confused:

b3
18.12.2008, 01:01
Ладно,то что в нем у меня находит ошибку в последней строке,чтото там с $end.
Ето значит гдето цикл не закрыт, вот пример банального сравнения мд5 с словариком
<?php
$hash = '202cb962ac59075b964b07152d234b70';
$pass = array('12','21','321','123');
for ($i=0, $count=count($pass); $i<$count; $i++) {
if($hash == md5($pass[$i]))
{
echo "hash - $hash == $pass[$i]";die;
}
}
?>

ЗЫ когда работаеш со словарями из файлов, юзай trim() дабы обрезать символы перевода каретки "\r\n"

ss88
18.12.2008, 01:05
Вопрос???

вот скрипт загруски!

//труляля куча всего веселого
как зделать чтобы загружаемая катинка загружалась с шириной 215px и сохроняла пропорции? :confused:
Не знаю, как другие, а я всегда меняю размеры и пропорции уже на сервере средствами GD2
Код привести или такое не устраивает?
И почему ты так наплевал на переделанную версию этого твоего загрузочного скрипта?

geforce
18.12.2008, 01:09
Не знаю, как другие, а я всегда меняю размеры и пропорции уже на сервере средствами GD2
Код привести или такое не устраивает?
И почему ты так наплевал на переделанную версию этого твоего загрузочного скрипта?

Да я не напливал друг! Ты извения я просто ламал голову над ошибкой которая была в другой странице я нашёл ответ выше описал! Если не трудно могешь мне набросать как ты хотел только так чтоб суть скрипта не менялася!??? ;)

m0Hze
18.12.2008, 01:10
Хм,решил проблему с выводом лишних строк проверкой перемееной в начале скрипта на существование.Но, брут как не хотел идти так и не идет.Все время пишет что Ноу кракед =(
Чтото никак =)

geforce
18.12.2008, 01:19
m0Hze

echo '<form method = "POST">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';

Ты забыл action="" в первой строчке!

ss88
18.12.2008, 01:22
Да я не напливал друг! Ты извения я просто ламал голову над ошибкой которая была в другой странице я нашёл ответ выше описал! Если не трудно могешь мне набросать как ты хотел только так чтоб суть скрипта не менялася!??? ;)

Я тебе щаз опять приведу тот код, что я уже писал, но я оттуда выкинул неиспользуемые вещи...например, я так и не понял, почему ты не проверял успешность добавления, а потом зачем-то еще и делал выборку того, что только что добавил...
<?php
// Подключаемься к базе данных
include ("db.php");
//================Настройки============= //
// максимальная ширина картинок на превью
$maxwidth = "300px";
// Директория для фотографий товаров
$fotos_dir = "fotos/";
// Полное имя файла вместе с путем
$foto_name = $fotos_dir . time() . "_" . $_FILES['myfile']['name'];
// Готовый тэг для вставки картинки на страницу
$foto_tag = "<img src='{$foto_name}' border='0'>";
// Тот же тэг, но для превью
$foto_tag_preview = "<img src='{$foto_name}' border='0' width='{$maxwidth}'>";
// Текст ошибок
$error_by_mysql = "<span style='font: bold 15px tahoma; color: red'>Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style='font: bold 15px tahoma; color: red'>Невозможно загрузить файл в директорию. Возможно её не существует</span>";
// Начало
if (isset($_FILES["myfile"])) {
// Если ошибок не было
if (($_FILES["myfile"]["error"] == 0) && (in_array(strtolower(substr($_FILES['myfile']['name'], - 4)), array(".jpg" , ".gif" , ".png")))) {
$upfile = getcwd() . "/fotos/" . time() . "_" . basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name']){
//Если не удалось загрузить файл
if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
exit($error_by_file);
}
else
exit ("Проблема: возможна атака через загрузку файла хотя проверяется это не так, а, наверное, просто нам подсовывают файл не с тем расширением {$_FILES ['myfile'] ['name']}");
// Заносим путь картинки в базу данных
$query = mysql_query("INSERT INTO foto (url,name) VALUES ('{$foto_name}','{$fotos_dir}{$foto_name}')", $db);
if ($query)
echo "{$foto_tag}Ъ<br /><b>Данные успешно внесены в базу</b>";
else
exit("<p>Ошибка сохранения данных.</p>" . mysql_error());
} else //Если возникла ошибка при передаче или левое расширение файла
exit("Ошибка обработки данных либо вы пытаетесь подсунуть нам свинью");
}
?>
Теперь про изменение размеров
class PictureItem
{
function __construct($FileName)
{
switch(substr($FileName,-4))
{
case ".gif":
{
$this->Res=imagecreatefromgif($FileName);
$this->Ext=($this->Res)?".gif":"";
break;
}
case ".jpg":
{
$this->Res=imagecreatefromjpeg($FileName);
$this->Ext=($this->Res)?".jpg":"";
break;
}
}
if($this->Res)
{
$this->Width=imagesx($this->Res);
$this->Height=imagesy($this->Res);
$this->FileName=$FileName;
}
}
//Изменение размера открытого изображения
//Если указаны оба параметра, то изображение будет принудительно растянуто
//Если задан только первый параметр, то изображение будет пропорционально изменено
function Resize($nWidth,$nHeight=-1)
{
if($this->Width!=-1)
{
$Koef=($nWidth/$this->Width);
if($nHeight==-1)
{
$nHeight=(int)($Koef*$this->Height);
}
$nRes=imagecreatetruecolor($nWidth,$nHeight);
if(!imagecopyresampled($nRes,$this->Res,0,0,0,0,$nWidth,$nHeight,$this->Width,$this->Height))
return FALSE;
$this->Res=$nRes;
$this->Width=$nWidth;
$this->Height=$nHeight;
return TRUE;
}
else
{
return FALSE;
}
}
//------много чего еще было
private $FileName="",$Res,$Ext,$Width=-1,$Height=-1;
}
Это неполный код одного небольшого класса когда-то мною написанного, очень давно, но зато довольно просто, хоть и страшно

ss88
18.12.2008, 01:23
m0Hze

echo '<form method = "POST">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';

Ты забыл action="" в первой строчке!
Если ты предполагаешь обработку результатов тем же скриптом, то остутствующий action и так подразумевает обработчиком самого себя :-Р ))))

Dimaus
18.12.2008, 01:27
Помогите найти ошибки и дороботать код, чтобы ошибок не вылетало, инковские файлы любые, там просто текст:
<?php include("navi.inc"); ?>
<html>
<head>
<title><?php
$a=$_GET['a'];
if($a=="Главная")
{
echo $naving['title']['nav1'];
}
elseif($a=="Контакты")
{
echo $naving['title']['nav2'];
}
elseif($a=="О нас")
{
echo $naving['title']['nav3'];
}
elseif($a=="Галерея")
{
echo $naving['title']['nav4'];
}
elseif($a=="Продукция")
{
echo $naving['title']['nav5'];
}
else
{
echo "Ошибка";
}
?></title>
<meta NAME="description" content="<?php
$a=$_GET['a'];
if($a=="Главная")
{
echo $naving['description']['nav1'];
}
elseif($a=="Контакты")
{
echo $naving['description']['nav2'];
}
elseif($a=="О нас")
{
echo $naving['description']['nav3'];
}
elseif($a=="Галерея")
{
echo $naving['description']['nav4'];
}
elseif($a=="Продукция")
{
echo $naving['description']['nav5'];
}
else
{
echo "Ошибка";
}
?>">
<meta NAME="keywords" content="<?php
$a=$_GET['a'];
if($a=="Главная")
{
echo $naving['keywords']['nav1'];
}
elseif($a=="Контакты")
{
echo $naving['keywords']['nav2'];
}
elseif($a=="О нас")
{
echo $naving['keywords']['nav3'];
}
elseif($a=="Галерея")
{
echo $naving['keywords']['nav4'];
}
elseif($a=="Продукция")
{
echo $naving['keywords']['nav5'];
}
else
{
echo "Ошибка";
}
?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="200" height="79" border="1">
<tr>
<td colspan="3">5</td>
</tr>
<tr>
<td><?php
foreach($naving['menu'] as $val)
{
echo "<tr><td><a href=\"vasa.php?a=$val\">$val</a></td></tr>";
}
?>
</td>
<td width="71" colspan="2">
<?php
$a=$_GET['a'];
if($a=="Главная")
{
echo include("sasha.inc");
}
elseif($a=="Контакты")
{
echo include("foot.inc");
}
elseif($a=="О нас")
{
echo include("sash.inc");
}
elseif($a=="Галерея")
{
echo include("ema.inc");
}
elseif($a=="Продукция")
{
echo include("nav.inc");
}
else
{
echo "Ошибка";
}
?></td>
</tr>
<tr>
<td colspan="3">4</td>

</tr>
</table>

</body>
</html>

Dimaus
18.12.2008, 01:28
navi.inc:
<?php
$naving['title']['nav1'] = "Главная";
$naving['title']['nav2'] = "Контакты";
$naving['title']['nav3'] = "О нас";
$naving['title']['nav4'] = "Галерея";
$naving['title']['nav5'] = "Продукция";

$naving['menu']['nav1'] = "Главная";
$naving['menu']['nav2'] = "Контакты";
$naving['menu']['nav3'] = "О нас";
$naving['menu']['nav4'] = "Галерея";
$naving['menu']['nav5'] = "Продукция";

$naving['description']['nav1'] = "Главная";
$naving['description']['nav2'] = "Контакты";
$naving['description']['nav3'] = "О нас";
$naving['description']['nav4'] = "Галерея";
$naving['description']['nav5'] = "Продукция";

$naving['keywords']['nav1'] = "Главная";
$naving['keywords']['nav2'] = "Контакты";
$naving['keywords']['nav3'] = "О нас";
$naving['keywords']['nav4'] = "Галерея";
$naving['keywords']['nav5'] = "Продукция";

$naving['href']['nav1'] = "Главная";
$naving['href']['nav2'] = "Контакты";
$naving['href']['nav3'] = "О нас";
$naving['href']['nav4'] = "Галерея";
$naving['href']['nav5'] = "Продукция";

$naving['content']['nav1'] = "Главная";
$naving['content']['nav2'] = "Контакты";
$naving['content']['nav3'] = "О нас";
$naving['content']['nav4'] = "Галерея";
$naving['content']['nav5'] = "Продукция";
?>

ss88
18.12.2008, 02:02
Помогите найти ошибки и дороботать код, чтобы ошибок не вылетало, инковские файлы любые, там просто текст:
<?php
include ("navi.inc");
?>
<html>
<head>
<title><?php
switch ($_GET['a'])
{
case "main" :
$title=$naving['title']['nav1'];
$description=$naving['description']['nav1'];
$keywords=$naving['keywords']['nav1'];
$inc="sasha.inc";
break;
case "contacts" :
$title=$naving['title']['nav2'];
$description=$naving['description']['nav2'];
$keywords=$naving['keywords']['nav2'];
$inc="foot.inc";
break;
case "about" :
$title=$naving['title']['nav3'];
$description=$naving['description']['nav3'];
$keywords=$naving['keywords']['nav3'];
$inc="sash.inc";
break;
case "gallery" :
$title=$naving['title']['nav4'];
$description=$naving['description']['nav4'];
$keywords=$naving['keywords']['nav4'];
$inc="ema.inc";
break;
case "products" :
$title=$naving['title']['nav4'];
$description=$naving['description']['nav5'];
$keywords=$naving['keywords']['nav5'];
$inc="nav.inc";
break;
default :
$title="Ошибка";
$description="Ошибка";
$keywords="Ошибка";
$inc=NULL;
}
?></title>
<meta NAME="description"
content="
<?php echo $description; ?>">
<meta NAME="keywords"
content="
<?php echo $keywords; ?>
">
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="200" height="79" border="1">
<tr>
<td colspan="3">5</td>
</tr>
<tr>
<td><?php
foreach ($naving['menu'] as $val) {
echo "<tr><td><a href=\"vasa.php?a=$val\">$val</a></td></tr>";
}
?>
</td>
<td width="71" colspan="2">
<?php if($inc) include($inc); ?></td>
</tr>
<tr>
<td colspan="3">4</td>

</tr>
</table>

</body>
</html>
Ня, трудоголик хренофф )))) Кто тебя надоумил так писать код????? ))))) Вобщем, так правильно работает и не надо юзать русские строки в URI, это не очень здравая идея

geforce
18.12.2008, 02:08
ss88
Я тебе щаз опять приведу тот код, что я уже писал, но я оттуда выкинул неиспользуемые вещи...например, я так и не понял, почему ты не проверял успешность добавления, а потом зачем-то еще и делал выборку того, что только что добавил

Выборка быполняется для того чтобы показать ту картинку которая была загруженна!

Ты можешь интегрировать тот код с уменьшением картинки в мой код сразу ???

Dimaus
18.12.2008, 02:11
Я понимаю, что так не правильно, но нужно именно так, без кейсов...

ss88
18.12.2008, 02:13
ss88
Я тебе щаз опять приведу тот код, что я уже писал, но я оттуда выкинул неиспользуемые вещи...например, я так и не понял, почему ты не проверял успешность добавления, а потом зачем-то еще и делал выборку того, что только что добавил...

Выборка быполняется для того чтобы показать ту картинку которая была загруженна!

Ты можешь интегрировать тот код с уменьшением картинки в мой код сразу ???
Могу, щаз поиграюсь, никуда не девайся... ЧУВАК, ЗАДУМАЙСЯ!!! Какая нах выборка, если у тебя в переменных еще лежат пути к картинке??? Зачем лишний раз трогать БД??? Притом, что это тебе ровным счетом ничего не дает, посмотри внимательно в тот код, что я тебе написал, он делает АБСОЛЮТНО то же самое! Изменения размера щаз добавлю

m0Hze
18.12.2008, 02:13
Господе.Ктонибудь помогите,я уже не знаючто делать с этими ***** 10 строчками кода!
Доведите до ума в этот **** брут, мне только бы чтоб он работал,я б зря не сидел,додалал что хочу,а тоя даж проверить не могу изза него весь скрипт целиком :(

<?
echo '<form method = "POST">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';
$hash = $_POST['hash'];
$world = file('world.txt');
if(isset($_POST['hash'])){
$hash = $_POST['hash'];
}else{
exit();
}
foreach($world as $line){
$line = rtrim($line);
$brute = md5($line);
}
if($brute == $hash){
echo "Hash cracked! Password $line";
die();
}else{
echo "Hash то cracked";
}
?>

Vid0k
18.12.2008, 02:18
<?
echo '<form method = "POST" action="ИМЯ_ТВОЕГО_СКРИПТА">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';
$world = file('world.txt');
if(isset($_POST['hash'])){
$hash = $_POST['hash'];
}
else{
exit();
}
foreach($world as $line){
$line = rtrim($line);
$brute = md5($line);
if($brute == $hash){
echo "Hash cracked! Password $brute";
}
}
?>

Dimaus
18.12.2008, 02:27
Помогите мне пожалуйста! на предыдущей странице!

m0Hze
18.12.2008, 02:30
Я возможно уже совсем сплю сидя,но ничего ты не сделал :/
echo '<form method = "POST" action="ИМЯ_ТВОЕГО_СКРИПТА">'; - зачем?Если скрипт выполняеться внутри....

foreach($world as $line){
$line = rtrim($line);
$brute = md5($line);
if($brute == $hash){
echo "Hash cracked! Password $brute";
}
}
?>

Добаляем:

foreach($world as $line){
$line = rtrim($line);
$brute = md5($line);
if($brute == $hash){

echo "Hash cracked! Password $line";die;
}else{
echo "Not cracked :(";
}

И опятьже ,фореач заставляеть появляться надпись Not cacked много раз.
Не работает.Кто еще может чтото по делу предложить?)
b3 thanks =)

ss88
18.12.2008, 02:34
Ты можешь интегрировать тот код с уменьшением картинки в мой код сразу ???
<?php
// Подключаемься к базе данных
include ("db.php");
//================Настройки============= //
// максимальная ширина картинок на превью
$maxwidth = "300px";
// Директория для фотографий товаров
$fotos_dir = "fotos/";
$resizeWidth=215;
// Полное имя файла вместе с путем
$foto_name = $fotos_dir . time() . "_" . $_FILES['myfile']['name'];
// Готовый тэг для вставки картинки на страницу
$foto_tag = "<img src='{$foto_name}' border='0'>";
// Тот же тэг, но для превью
$foto_tag_preview = "<img src='{$foto_name}' border='0' width='{$maxwidth}'>";
// Текст ошибок
$error_by_mysql = "<span style='font: bold 15px tahoma; color: red'>Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style='font: bold 15px tahoma; color: red'>Невозможно загрузить файл в директорию. Возможно её не существует</span>";
// Начало
if (isset($_FILES["myfile"])) {
// Если ошибок не было
if (($_FILES["myfile"]["error"] == 0) && (in_array(strtolower(substr($_FILES['myfile']['name'], - 4)), array(".jpg" , ".gif" , ".png")))) {
$upfile = getcwd() . "/fotos/" . time() . "_" . basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name']){
//Если не удалось загрузить файл
if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
exit($error_by_file);
else
{//Вызов новой функции для изменения размеров, учти, что теперь только jpg & gif, если хочешь, то добавь png, там все одинково получится
openResizeAndSave($resizeWidth,$upfile);
}
}
else
exit ("Проблема: возможна атака через загрузку файла хотя проверяется это не так, а, наверное, просто нам подсовывают файл не с тем расширением {$_FILES ['myfile'] ['name']}");
// Заносим путь картинки в базу данных
$query = mysql_query("INSERT INTO foto (url,name) VALUES ('{$foto_name}','{$fotos_dir}{$foto_name}')", $db);
if ($query)
echo "{$foto_tag}Ъ<br /><b>Данные успешно внесены в базу</b>";
else
exit("<p>Ошибка сохранения данных.</p>" . mysql_error());
} else //Если возникла ошибка при передаче или левое расширение файла
exit("Ошибка обработки данных либо вы пытаетесь подсунуть нам свинью");
}

function openResizeAndSave($nWidth,$fileName)
{
switch(substr($fileName,-4))
{
case ".gif":
{
$Res=imagecreatefromgif($fileName);
$ext=($Res)?".gif":"";
break;
}
case ".jpg":
{
$Res=imagecreatefromjpeg($fileName);
$ext=($Res)?".jpg":"";
break;
}
default: return FALSE;
}

if($Res)
{
$Width=imagesx($Res);
$Height=imagesy($Res);
}
else
return FALSE;
$Koef=($nWidth/$Width);
$nHeight=(int)($Koef*$Height);
$nRes=imagecreatetruecolor($nWidth,$nHeight);
if(!imagecopyresampled($nRes,$Res,0,0,0,0,$nWidth, $nHeight,$Width,$Height))
return FALSE;
$Res=$nRes;
unlink($fileName);
switch($ext)
{
case ".jpg":
{
if(!imagejpeg($Res,$fileName))
return FALSE;
break;
}
case ".gif":
{
if(!imagegif($Res,$fileName))
return FALSE;
break;
}
default: return FALSE;
}
return TRUE;
}
?>
Держи, только что проверил, все работает отлично

Vid0k
18.12.2008, 02:41
Я возможно уже совсем сплю сидя,но ничего ты не сделал :/
echo '<form method = "POST" action="ИМЯ_ТВОЕГО_СКРИПТА">'; - зачем?Если скрипт выполняеться внутри....
я тебе телепат что ли?!
давай сюда весь скрипт а не кусок выдранный
а надпись Not cracked много раз появляется потому что хеши не совпадают и форич тут не причем

ss88
18.12.2008, 02:41
Я понимаю, что так не правильно, но нужно именно так, без кейсов...
Что за бред??? Чем такое решение может быть продиктовано???
<?php
include ("navi.inc");
?>
<html>
<head>
<title><?php
$a=$_GET['a'];
if($a=="main")
{
$title=$naving['title']['nav1'];
$description=$naving['description']['nav1'];
$keywords=$naving['keywords']['nav1'];
$inc="sasha.inc";
}
elseif($a== "contacts")
{
$title=$naving['title']['nav2'];
$description=$naving['description']['nav2'];
$keywords=$naving['keywords']['nav2'];
$inc="foot.inc";
}
elseif($a== "about")
{
$title=$naving['title']['nav3'];
$description=$naving['description']['nav3'];
$keywords=$naving['keywords']['nav3'];
$inc="sash.inc";
}
elseif($a== "gallery")
{
$title=$naving['title']['nav4'];
$description=$naving['description']['nav4'];
$keywords=$naving['keywords']['nav4'];
$inc="ema.inc";
}
elseif($a== "products")
{
$title=$naving['title']['nav4'];
$description=$naving['description']['nav5'];
$keywords=$naving['keywords']['nav5'];
$inc="nav.inc";
}
else
{
$title="Ошибка";
$description="Ошибка";
$keywords="Ошибка";
$inc=NULL;
}
echo $title;
?></title>
<meta NAME="description"
content="
<?php echo $description; ?>">
<meta NAME="keywords"
content="
<?php echo $keywords; ?>
">
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="200" height="79" border="1">
<tr>
<td colspan="3">5</td>
</tr>
<tr>
<td><?php
foreach ($naving['menu'] as $val) {
echo "<tr><td><a href=\"vasa.php?a=$val\">$val</a></td></tr>";
}
?>
</td>
<td width="71" colspan="2">
<?php if($inc) include($inc); ?></td>
</tr>
<tr>
<td colspan="3">4</td>

</tr>
</table>

</body>
</html>
На тебе без кэйсов

m0Hze
18.12.2008, 02:44
Это и есть весь скрипт,разве не видно?Тупизм.

Vid0k
18.12.2008, 02:58
Это и есть весь скрипт,разве не видно?Тупизм.

<?
echo '<form method = "POST">';
echo '<input type = "text" name = "hash" value = "">';
echo '<input type = "submit" value = "Crack">';
echo '</form>';
$hash = $_POST['hash'];// <----------------------
$world = file('world.txt'); // |
if(isset($_POST['hash'])){ //тупизм здесь есть тоже // |
$hash = $_POST['hash'];//и здесь->смотри выше------|
}else{
exit();
}
foreach($world as $line){
$line = rtrim($line);
$brute = md5($line);
}//<------ тут цикл кончился
if($brute == $hash){//интересно что ты тут сравниваешь если цикл идет выше ?! =)
echo "Hash cracked! Password $line";
die();
}else{
echo "Hash то cracked";
}
?>

тебе дали рабочий скрипт что те еще нужно?
а надпись Not cracked много раз появляется потому что хеши не совпадают и форич тут не причем

life_is_shit
18.12.2008, 03:00
m0Hze по придержал язык бы.

з.ы. я тебе вообще поражаюсь, в одной теме тебе пишут скрипт в другой ты его юзаешь за зелень=\

ss88
18.12.2008, 03:13
Это и есть весь скрипт,разве не видно?Тупизм.
Слышишь, "Тупизм", нихрена себе, 5 страниц уже засрано скриптом в 10 строчек и ты еще кого-то в тупизме обвиняешь??? Офигенный подход к жизни, на, все тут работает, проверено
<?
echo "<form method = 'POST' action='{$_SERVER['REQUEST_URI']}'>
<input type = 'text' name = 'hash' value = ''>
<input type = 'submit' value = 'Crack'>
</form>";
$hash = $_POST['hash'];
$world = file_get_contents('world.txt');
$world=explode("\r",$world);
foreach ($world as $list)
{
$brute = md5($list);
if ($brute == $hash)
{
echo "Сцуко, подходит к $list";
exit();
}
else
{
echo " Не гавно ";
}
}
?>

gisTy
18.12.2008, 03:14
и вообще писать брутер md5 на php это извращение

geforce
18.12.2008, 03:15
ss88
Мне нужен вывод загружаймой картинки!

$result = mysql_query("SELECT * FROM foto WHERE name='$foto_light_name'",$db);

if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result) > 0)

{
$myrow = mysql_fetch_array($result);
printf ("<img src='%s'/>",$myrow['url']);

//$adres = $myrow['url'];
$fileName = $myrow['url'];
}

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
// Данные успешно внесены в базу данных, выводим сообщение
if ($query == 'true') {
echo "<br /><b>Данные успешно внесены в базу</b>";
}

// В противном случае, выводим ошибку при добавлении в базу данных
else {
echo "$error_by_mysql";

}

Мне нужен вывод КАРТИНОК с другой таблицы! Ф ФОРМЕ ЧТОБ МОЖНО БЫЛО ВЫБРАТЬ ТУ КОТОРАЯ НУЖНА!

<form action="end.php" method="post" name="end">
<?
// Вывод базы картинок
$result1 = mysql_query("SELECT * FROM data",$db);

if (!$result1)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}

if (mysql_num_rows($result1) > 0)

{
$myrow1 = mysql_fetch_array($result1);
do
{
printf ("<br><br><img src='admin/%s'><input name='vibor' type='radio' value='%s'><label>%s</label><br>",$myrow1["url"],$myrow1["id"],$myrow1["name"]);
}
while ($myrow1 = mysql_fetch_array($result1));


}

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<input name="load" type="hidden" value="<? echo $adres; ?>" />
<input name="sub" type="submit" value="далее" />

</form>


И всё это идёт туда!

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);

$width = 215;
$heigth = 750;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);

imagecopy($im, $im1, 0, 0, 0, 0, 215, 390);
imagecopy($im, $im2, 0, 410, 0, 0, 215, 20);
imagecopy($im, $im3, 0, 430, 0, 0, 215, 350);

imagejpeg($im);
imagedestroy($im);
}
else
{
exit();
}
?>

ss88
18.12.2008, 03:29
// Заносим путь картинки в базу данных
$q = "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')";
$query = mysql_query($q);

// Загрузка с базы


$result = mysql_query("SELECT * FROM foto WHERE name='$foto_light_name'",$db);
Посмотри на это!!! Ты только что добавил и тянешь зачем-то назад)))
Ладно, вот так, дополнил, иеперь функционал совпадает нувааще )))
<?php
// Подключаемься к базе данных
include ("db.php");
//================Настройки============= //
// максимальная ширина картинок на превью
$maxwidth = "300px";
// Директория для фотографий товаров
$fotos_dir = "fotos/";
$resizeWidth=215;
// Полное имя файла вместе с путем
$foto_name = $fotos_dir . time() . "_" . $_FILES['myfile']['name'];
// Готовый тэг для вставки картинки на страницу
$foto_tag = "<img src='{$foto_name}' border='0'>";
// Тот же тэг, но для превью
$foto_tag_preview = "<img src='{$foto_name}' border='0' width='{$maxwidth}'>";
// Текст ошибок
$error_by_mysql = "<span style='font: bold 15px tahoma; color: red'>Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style='font: bold 15px tahoma; color: red'>Невозможно загрузить файл в директорию. Возможно её не существует</span>";
// Начало
if (isset($_FILES["myfile"])) {
// Если ошибок не было
if (($_FILES["myfile"]["error"] == 0) && (in_array(strtolower(substr($_FILES['myfile']['name'], - 4)), array(".jpg" , ".gif" , ".png")))) {
$upfile = getcwd() . "/fotos/" . time() . "_" . basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name']){
//Если не удалось загрузить файл
if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
exit($error_by_file);
else
{//Вызов новой функции для изменения размеров, учти, что теперь только jpg & gif, если хочешь, то добавь png, там все одинково получится
openResizeAndSave($resizeWidth,$upfile);
}
}
else
exit ("Проблема: возможна атака через загрузку файла хотя проверяется это не так, а, наверное, просто нам подсовывают файл не с тем расширением {$_FILES ['myfile'] ['name']}");
// Заносим путь картинки в базу данных
$query = mysql_query("INSERT INTO foto (url,name) VALUES ('{$foto_name}','{$fotos_dir}{$foto_name}')", $db);
if ($query)
{
echo "{$foto_tag}Ъ<br /><b>Данные успешно внесены в базу</b>";
$adres=$foto_name;
}
else
exit("<p>Ошибка сохранения данных.</p>" . mysql_error());
} else //Если возникла ошибка при передаче или левое расширение файла
exit("Ошибка обработки данных либо вы пытаетесь подсунуть нам свинью");
}
?>
<form action="end.php" method="post" name="end">
<?
// Вывод базы картинок
$result1 = mysql_query("SELECT * FROM data",$db);
if (!$result1)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
do
{
printf ("<br><br><img src='admin/%s'><input name='vibor' type='radio' value='%s'><label>%s</label><br>",$myrow1["url"],$myrow1["id"],$myrow1["name"]);
}
while ($myrow1 = mysql_fetch_array($result1));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<input name="load" type="hidden" value="<? echo $adres; ?>" />
<input name="sub" type="submit" value="далее" />
</form>
<?
function openResizeAndSave($nWidth,$fileName)
{
switch(substr($fileName,-4))
{
case ".gif":
{
$Res=imagecreatefromgif($fileName);
$ext=($Res)?".gif":"";
break;
}
case ".jpg":
{
$Res=imagecreatefromjpeg($fileName);
$ext=($Res)?".jpg":"";
break;
}
default: return FALSE;
}

if($Res)
{
$Width=imagesx($Res);
$Height=imagesy($Res);
}
else
return FALSE;
$Koef=($nWidth/$Width);
$nHeight=(int)($Koef*$Height);
$nRes=imagecreatetruecolor($nWidth,$nHeight);
if(!imagecopyresampled($nRes,$Res,0,0,0,0,$nWidth, $nHeight,$Width,$Height))
return FALSE;
$Res=$nRes;
unlink($fileName);
switch($ext)
{
case ".jpg":
{
if(!imagejpeg($Res,$fileName))
return FALSE;
break;
}
case ".gif":
{
if(!imagegif($Res,$fileName))
return FALSE;
break;
}
default : return FALSE;
}
return TRUE;
}
?>

geforce
18.12.2008, 03:40
ss88

Ещё мне нужна переменая высоты которая отвечает за пропорции ну типа шарина всё время 215, а высота то меняется и мне нужно передовать её в файл end.php и подстовлять её в переменую $heigth

ну типа $heigth = та переменая + 320;

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);

$width = 275;
$heigth = 750; // чтоб при создании картинки не было лишних пикселей
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);

imagecopy($im, $im1, 0, 0, 0, 0, 215, 390);
imagecopy($im, $im2, 0, 410, 0, 0, 215, 20);
imagecopy($im, $im3, 0, 430, 0, 0, 215, 350);

imagejpeg($im);
imagedestroy($im);
}
else
{
exit();
}
?>

ss88
18.12.2008, 03:49
<?php
// Подключаемься к базе данных
include ("db.php");
//================Настройки============= //
// максимальная ширина картинок на превью
$maxwidth = "300px";
// Директория для фотографий товаров
$fotos_dir = "fotos/";
$resizeWidth=215;
// Полное имя файла вместе с путем
$foto_name = $fotos_dir . time() . "_" . $_FILES['myfile']['name'];
// Готовый тэг для вставки картинки на страницу
$foto_tag = "<img src='{$foto_name}' border='0'>";
// Тот же тэг, но для превью
$foto_tag_preview = "<img src='{$foto_name}' border='0' width='{$maxwidth}'>";
// Текст ошибок
$error_by_mysql = "<span style='font: bold 15px tahoma; color: red'>Ошибка при добавлении данных в базу</span>";
$error_by_file = "<span style='font: bold 15px tahoma; color: red'>Невозможно загрузить файл в директорию. Возможно её не существует</span>";
// Начало
if (isset($_FILES["myfile"])) {
// Если ошибок не было
if (($_FILES["myfile"]["error"] == 0) && (in_array(strtolower(substr($_FILES['myfile']['name'], - 4)), array(".jpg" , ".gif" , ".png")))) {
$upfile = getcwd() . "/fotos/" . time() . "_" . basename($_FILES["myfile"]["name"]);
if ($_FILES['myfile']['tmp_name']){
//Если не удалось загрузить файл
if (! move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))
exit($error_by_file);
else
{//Вызов новой функции для изменения размеров, учти, что теперь только jpg & gif, если хочешь, то добавь png, там все одинково получится
//ОНА ВОЗВРАЩАЕТ НОВУЮ КОРРЕКТНУЮ ВЫСОТУ ИЗМЕНЕННОГО ИЗОБРАЖЕНИЯ
if(!($HEIGHT=openResizeAndSave($resizeWidth,$upfil e)))
exit("Ошибка преобразования файла");
}
}
else
exit ("Проблема: возможна атака через загрузку файла хотя проверяется это не так, а, наверное, просто нам подсовывают файл не с тем расширением {$_FILES ['myfile'] ['name']}");
// Заносим путь картинки в базу данных
$query = mysql_query("INSERT INTO foto (url,name) VALUES ('{$foto_name}','{$fotos_dir}{$foto_name}')", $db);
if ($query)
{
echo "{$foto_tag}Ъ<br /><b>Данные успешно внесены в базу</b>";
$adres=$foto_name;
}
else
exit("<p>Ошибка сохранения данных.</p>" . mysql_error());
} else //Если возникла ошибка при передаче или левое расширение файла
exit("Ошибка обработки данных либо вы пытаетесь подсунуть нам свинью");
}
?>
<form action="end.php" method="post" name="end">
<?
// Вывод базы картинок
$result1 = mysql_query("SELECT * FROM data",$db);
if (!$result1)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
do
{
printf ("<br><br><img src='admin/%s'><input name='vibor' type='radio' value='%s'><label>%s</label><br>",$myrow1["url"],$myrow1["id"],$myrow1["name"]);
}
while ($myrow1 = mysql_fetch_array($result1));
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<input name="load" type="hidden" value="<? echo $adres; ?>" />
<input name="sub" type="submit" value="далее" />
</form>
<?
function openResizeAndSave($nWidth,$fileName)
{
switch(substr($fileName,-4))
{
case ".gif":
{
$Res=imagecreatefromgif($fileName);
$ext=($Res)?".gif":"";
break;
}
case ".jpg":
{
$Res=imagecreatefromjpeg($fileName);
$ext=($Res)?".jpg":"";
break;
}
default: return FALSE;
}

if($Res)
{
$Width=imagesx($Res);
$Height=imagesy($Res);
}
else
return FALSE;
$Koef=($nWidth/$Width);
$nHeight=(int)($Koef*$Height);
$nRes=imagecreatetruecolor($nWidth,$nHeight);
if(!imagecopyresampled($nRes,$Res,0,0,0,0,$nWidth, $nHeight,$Width,$Height))
return FALSE;
$Res=$nRes;
unlink($fileName);
switch($ext)
{
case ".jpg":
{
if(!imagejpeg($Res,$fileName))
return FALSE;
break;
}
case ".gif":
{
if(!imagegif($Res,$fileName))
return FALSE;
break;
}
default : return FALSE;
}
return $nHeight;
}
?>
$HEIGHT - высота изображения, передавай куда хочешь. Хотя я не пойму, зачем она тебе нужна??? Если ты при выводе картинки в тэге укажешь только ширину, то высоту оно тебе подберет пропорционально

geforce
18.12.2008, 04:06
ss88
Проблема решина вопрос закрыт ))

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
$mas = getimagesize($adres);
$width = 215;
$heigth = $mas[1]+270;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);

imagecopy($im, $im1, 0, 0, 0, 0, 215, $mas[1]);
imagecopy($im, $im2, 0, $mas[1], 0, 0, 215, 20);
imagecopy($im, $im3, 0, $mas[1]+20, 0, 0, 215, 350);

imagejpeg($im);
imagedestroy($im);
}
else
{
exit();
}
?>

ss88
18.12.2008, 04:13
Позлравляю... но все равно, методы решения задач у тебя какие такие себе... пальцем в небо абы как...
Спокойной ночи

PaCo
18.12.2008, 14:04
доброго всем дня, у меня такой вопрос, вообшем например я ввожу в гугл(яшу,рамблер) например такой запрос :
вася пряников, после клацания на кнопку серч в адресной строке вылазиет поисковый запрос q=%D1%84%D1%8B%D0%B2%D1%84%D1%8B%D0%B2%D1%84%D1%8B %D0%B2
сответсвенно делаю urldecode() даной строки и получаю вот такие символы q=вася РїСЂСЏРЅРёРєРѕРІ, в какие кодировки уже не переводил все равно выходит лабуда, как можно его превести в читабельный вид, уже и в штирлиц закидывал и тот переводит только вторую часть слова, че это за кодировка?

Isis
18.12.2008, 14:10
PaCo, urldecode, cледом iconv (http://php.net/iconv)

PaCo
18.12.2008, 14:22
PaCo, urldecode, cледом iconv (http://php.net/iconv)
Что бы перевести кодировку из одной в другую надо знать начальную кодировку, а я х.з., похожа на KOI-8, но echo iconv("KOI8-U", "windows-1251", urldecode("q=%D0%B2%D0%B0%D1%81%D1%8F+%D0%BF%D1%80%D1%8F%D0%B D%D0%B8%D0%BA%D0%BE%D0%B2")) ; выводит что симврлы не те ты вводишь типа.
Порыскал по форумам, нигде не смогли решить эту траблу, все кричат забей, походу придеться забить.

Jino
18.12.2008, 14:25
Сам осознаю, что вопрос глупый.

Начал изучать PHP, накачал учебников и прочего, пробую самый первый пример из приведенных.
<Html>
<head>
<title>asdfskld</title>
</head>
<body>
<?
if(5<3){
echo("<p>Hello, world!</p>");
?>
<p>Hello!</p>
// эта строка не интерпретируется как код PHP
// и выводится только если блок кода выполняется
<?
echo("<p>Hello, world!</p>");
}
?>
</body>
</Html>

В результате браузер выводит:

Hello, world!

"); ?>

Hello!
// эта строка не интерпретируется как код PHP // и выводится только если блок кода выполняется Hello, world!"); } ?>


Немного не понятно, почему он выводит выделенные символы :confused:

m0Hze
18.12.2008, 14:31
Сам осознаю, что вопрос глупый.

Начал изучать PHP, накачал учебников и прочего, пробую самый первый пример из приведенных.
<Html>
<head>
<title>asdfskld</title>
</head>
<body>
<?
if(5<3){
echo("<p>Hello, world!</p>");
?>
<p>Hello!</p>
// эта строка не интерпретируется как код PHP
// и выводится только если блок кода выполняется
<?
echo("<p>Hello, world!</p>");
}
?>
</body>
</Html>

В результате браузер выводит:

Hello, world!

"); ?>

Hello!
// эта строка не интерпретируется как код PHP // и выводится только если блок кода выполняется Hello, world!"); } ?>


Немного не понятно, почему он выводит выделенные символы :confused:

Может дело в том,что не закончив один код <? ?> ты в нем начинаеш другой? Попробуй так.

<?
if(5<3){
echo("<p>Hello, world!</p>");
echo "<p>Hello!</p>";
// эта строка не интерпретируется как код PHP
// и выводится только если блок кода выполняется
echo("<p>Hello, world!</p>");
}
?>

Темболее,там еще выполняеться оператор if(); и он выводи поэтому тебе ?> как обычный текст.

Pashkela
18.12.2008, 14:33
Что бы перевести кодировку из одной в другую надо знать начальную кодировку, а я х.з., похожа на KOI-8, но echo iconv("KOI8-U", "windows-1251", urldecode("q=%D0%B2%D0%B0%D1%81%D1%8F+%D0%BF%D1%80%D1%8F%D0%B D%D0%B8%D0%BA%D0%BE%D0%B2")) ; выводит что симврлы не те ты вводишь типа.


<?
$q = 'вася пряников';
$s = mb_detect_encoding($q);//Определяем кодировку
$q = iconv($s, 'CP1251//TRANSLIT', $q);//Декодируем
echo $s . "\r\n";
echo $q . "\r\n";
?>

PaCo
18.12.2008, 14:43
<?
$q = 'вася пряников';
$q = iconv('UTF-8', 'CP1251//TRANSLIT', $q);
echo $q;
?>

сенкс, как я понял гуглу можно самому указать кодировку oe=utf-8

semtler
18.12.2008, 15:15
подобный вопрос я уже задавал.. но тот вариант для этого не подходит(((

есть

$key = 'бла бла бла - "ыва ыва ыва" бла бла бла...';

нужно чтобы скрипт заменил эти " кавычки на такие '

то есть чтобы на выходе было вот так

бла бла бла - 'ыва ыва ыва' бла бла бла...

пробовал через str_replace, но почему то не получается :(

Pashkela
18.12.2008, 15:21
<?
$key = 'бла бла бла - "ыва ыва ыва" бла бла бла...';
echo str_replace('"',"'",$key);
?>

semtler
18.12.2008, 15:23
<?
$key = 'бла бла бла - "ыва ыва ыва" бла бла бла...';
echo str_replace('"',"'",$key);
?>

++
блин, вот я тупанул с str_replace... :)

m0nsieur
18.12.2008, 16:15
Как минимум пропустил это - <input type="hidden" name="MAX_FILE_SIZE" value="200000000">
Ниже уже добавлена строка.

eD']Не получается отправить файлы на сервер, код:



<form enctype="multipart/form-data" method="post" action="up.php">
<input type="hidden" name="MAX_FILE_SIZE" value="200000000">
<input name="object" size="51" type="file"/>
<br/>
<input type="submit" value="Upload"/>
</form>

geforce
18.12.2008, 16:59
Подскажите???

Как после создание картинки сохранить её к примеру на сервере в папке аватар???

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
$mas = getimagesize($adres);
$width = 215;
$heigth = $mas[1]+270;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);

imagecopy($im, $im1, 0, 0, 0, 0, 215, $mas[1]);
imagecopy($im, $im2, 0, $mas[1], 0, 0, 215, 20);
imagecopy($im, $im3, 0, $mas[1]+20, 0, 0, 215, 350);

imagejpeg($im);
imagedestroy($im);
}
else
{
exit();
}
?>

ntldr
18.12.2008, 17:15
bool imagejpeg ( resource image [, string filename [, int quality]] )

замени там у себя

imagejpeg($im,"avatar/FILENAME.jpeg");
imagedestroy($im);

geforce
18.12.2008, 17:21
bool imagejpeg ( resource image [, string filename [, int quality]] )

замени там у себя

imagejpeg($im,"avatar/FILENAME.jpeg");
imagedestroy($im);

Это конешно понятно! Но если ты не заметел мне надо сохранить именно $im Я поробовал как ты сказал не работает!

Pashkela
18.12.2008, 17:42
2 geforce:


<?
$im = ImageCreateFromPng("название_картинки.png");
$c1 = ImageColorAllocate($im, 0, 0, 0);
$string = "lolololol";
ImageString($im,3,20,20,$string,$c1);
ImagePng($im);
imageGif($im,"Новое_название_картинки.png");
ImageDestroy($im);
?>

zythar
18.12.2008, 18:44
http://www.tizag.com/phpT/fileupload.php

Isis
18.12.2008, 20:29
[R]eD, возможно не указана или неверно указана временная папка? Или нет прав для записи туда?

m0nsieur
19.12.2008, 00:27
2 Isis у него не указана папка и используется которая по умолчанию, вот его конфиг который он выше приводил.
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =

Naydav
19.12.2008, 00:57
Сообщество, Добрый вечер!

Вопрос:


Есть файл текстовый вида

ClientNo Surname Name Secname Date_birth INN
----------- ---------------------------- -------------------- ---------------------------- ------------------------------------------------------ ----------
154 XXX Борис Федорович 1952-06-23 00:00:00 1916714698
5361 XXX Анжела Дмитрівна 1967-11-21 00:00:00 2479608221
5398 XXX Василь Омелянович 1956-05-27 00:00:00 2060116415

(3 row(s) affected)

AccountMemberNo FondNo ClientNo Date_open Date_close ContractNo Rest1 Rest2
--------------- ------ ----------- ------------------------------------------------------ ------------------------------------------------------ ----------- --------------------- ---------------------
1766 1 154 2005-02-01 00:00:00.000 NULL 2 10692.6800 8264.4285
2998 1 154 2006-09-18 10:52:39.333 NULL 39 57056.2700 44099.0711
5341 2 5361 2008-07-16 00:00:00.000 NULL 45 251.7000 356.3554
5386 3 5398 2008-09-03 17:10:45.610 NULL 196 203.3800 199.6330

(4 row(s) affected)

AccountMemberNo Date_oper Type_operNo Name_oper Summ1 Summ2 Epv
--------------- ------------------------------------------------------ ----------- ---------------------------------------------------------------------------------------------------- --------------------- --------------------- -----------------------------------------------------
1766 2005-02-01 14:43:47.350 2 Відкриття рахунку .0000 .0000 1.0
1766 2005-02-23 15:30:14.730 0 Внесок ІПР від юр.особи 570.0000 570.0000 1.0
1766 2005-03-01 09:05:53.000 14 Нарахування прибутку .0600 .0000 1.0001069482802716
1766 2005-03-23 14:55:30.660 0 Внесок ІПР від юр.особи 570.0000 569.9390 1.0001069482802716
1766 2005-04-01 09:08:21.000 14 Нарахування прибутку 7.1800 .0000 1.0064007049862715
1766 2005-04-20 12:00:48.077 0 Внесок ІПР від юр.особи

Это, как вполне можно понять - дамп базы

Нужно из текстового файла забить в таблицы

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

Все бы неплохо, вот только прислали мне файлы метров под 70(и это не предел), с 300 000 строками

Вопрос не в timelimit, тут никакой памяти не хватит...
Считывать побайтово? Но как получать начальное состояние тогда...

Вообщем варианты может есть?

или придется все-таки через file все делать

Pashkela
19.12.2008, 01:07
Файловый резак, причем с исходниками:

http://old.softerra.ru/softnews/2002/5/6/20594/

ss88
19.12.2008, 01:14
Сообщество, Добрый вечер!
Вообщем варианты может есть?
или придется все-таки через file все делать
А чем тебе не нравится построчное считывание? В соответствии с правилами твоей задачи, считывать по одной строке, проводить ее анализ и выполнять далее какие-то действия... Сомневаюсь, что выйдет гиперсложный алгоритм, тем более, что тебе, вобщем-то, насколько я понял, не надо проверять корректность данных... Так что можно помозговать, рассказывай конкретнее

Naydav
19.12.2008, 01:16
Файловый резак, причем с исходниками:

http://old.softerra.ru/softnews/2002/5/6/20594/

Извини конечно, но зачем мне "Файловый резак"???
Тем боле Windows, я же не фильм на депозит выкладываю
Читаем внимательно вопрос!

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

А чем тебе не нравится построчное считывание? В соответствии с правилами твоей задачи, считывать по одной строке, проводить ее анализ и выполнять далее какие-то действия... Сомневаюсь, что выйдет гиперсложный алгоритм, тем более, что тебе, вобщем-то, насколько я понял, не надо проверять корректность данных... Так что можно помозговать, рассказывай конкретнее

Та алгоритм - не сложный, как я говорил, простой конечный автомат уже сделал, НО
С file все работате нормально на маленьких файлах...
Но большие скорее всего не потянет, вот и спрашиваю, может у кого есть другие идеи,

При 300 000 записей только в одной таблице, а таблицы будет скорее всего 3, нехватка памти, на локалхосте, еще ладно... но на серваке...

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

ss88
19.12.2008, 01:25
ты не понял, я не говорю о том, чтобы затягивать в память такую громадину, это, действительно, было бы глупо, а читать его, ИМХО, нужно построчно и передвигать указатель в файле, таким образом мы уйдем от больших затрат памяти, но получим затраты времени на обращение к ЖД и процессороного времени, но это уже будет совсем не такой критичный к ресурсам алгоритм. А еще лучше будет читать это все порциями...

Pashkela
19.12.2008, 01:27
Извини конечно, но зачем мне "Файловый резак"???


Не знаю, зачем, но я только что за 3 сек порезал дамп весом в 43 мб на 89 частей каждая по 500 кб. Не надо так не надо. Умничай дальше

Naydav
19.12.2008, 01:31
ты не понял, я не говорю о том, чтобы затягивать в память такую громадину, это, действительно, было бы глупо, а читать его, ИМХО, нужно построчно и передвигать указатель в файле, таким образом мы уйдем от больших затрат памяти, но получим затраты времени на обращение к ЖД и процессороного времени, но это уже будет совсем не такой критичный к ресурсам алгоритм

Я не могу считывать его построчно, так как не знаю размер строки...
Может я я не могу понять, что ты хочешь сказать, можно пример?

как реализовать считыванеи построчно? например прочтения 564 000 -ой строки?

Naydav
19.12.2008, 01:34
Не знаю, зачем, но я только что за 3 сек порезал дамп весом в 43 мб на 89 частей каждая по 500 кб. Не надо так не надо. Умничай дальше
Так хоть за 1 сек. 2 Гб обьясни, хотя бы себе, как я могу с моей задачей использовать твой совет? Неужели так трудно вопрос прочитать? вот именно, что "Не знаю, зачем"

ss88
19.12.2008, 01:35
увеличением и запоминанием позиции чтения из файла. fseek(...)

Naydav
19.12.2008, 01:39
увеличением и запоминанием позиции чтения из файла.

Т.е что -то типа
- открыл файл
- считал инфу до переноса строки
- запомнил позицию

но после скажем 300 000 - ой строки,
нам при новом обращении к файлу, нужно будет осчитывать 300 000 переносов строк, пот 300 001, 300 002 и т.д.

ну это еще медленней чем file

Или как запоминать позицыю строки? приведи пример хотя бы на файле в 10 строк

---------
смотрю с fseek
при использовании fseek, нужно ЕЩЕ вычислять размер КАЖДОЙ считанной строки, что бы знать куда потом вернутся + алгоритм считывание новой строки до символа переноса строки( именно не побайтово, а до переноса строки) = еще медленее, вернее вообще хреново...

Чем больше вариантов пробую, тем убеждаюсь - не нужно изобретать велосипед - file()

но вариант был интересный :)

ss88
19.12.2008, 01:41
щаз приведу

Naydav
19.12.2008, 01:54
щаз приведу

Да все же уже, не нужно
я не увидел твой пост после редактирования, отписался выше

ss88
19.12.2008, 01:55
<?php
$currPos=0;
$hFile=fopen("dump.txt","r");
//считывание порции определенного размера
$currentPartOfData=fread($hFile,4096);
$currPos+=4096;
//дочитыване до конца последней строки
do
{
$currPos++;
$currentPartOfData.=$byte=fread($hFile,1);
}
while($byte!='\n')
?>
Сырой и толком непродуманный пример считывания порции из твоего файла, после обработки текущей порции, считывание продолжается оттуда, где мы закончили и читается следующая порция... Нужно учитывать длину файла. Собственно, вот, это будет лучше, чем забить несколько файлов по полгектара в память

Naydav
19.12.2008, 02:01
<?php
$currPos=0;
$hFile=fopen("dump.txt","r");
//считывание порции определенного размера
$currentPartOfData=fread($hFile,4096);
$currPos+=4096;
//дочитыване до конца последней строки
do
{
$currPos++;
$currentPartOfData.=$byte=fread($hFile,1);
}
while($byte!='\n')
?>
Сырой и толком непродуманный пример считывания порции из твоего файла, после обработки текущей порции, считывание продолжается оттуда, где мы закончили и читается следующая порция... Нужно учитывать длину файла. Собственно, вот, это будет лучше, чем забить несколько файлов по полгектара в память

Спасибо, на скорую руку, как я писал уже,
работает медленней чем file, но пища для размышленний есть!!!
еще раз спасибо!

Pashkela
19.12.2008, 02:06
Для долбиков в оправдание моего мега-метода, придуманного налету:)

Разрезаем файл на части указанной выше программой, получаем что-то типо вроде:

sql.0, sql.1 - ну это если на две части. А дальше такой код:


<?
for($i=0;$i<2;$i++) $p[$i]=File("sql." . $i);
print_r ($p);
?>

ss88
19.12.2008, 02:09
Спасибо, на скорую руку, как я писал уже,
работает медленней чем file, но пища для размышленний есть!!!
еще раз спасибо!
Ну дык, конечно же медленнее, вместо того, чтобы одним махом прочитать 300Мб, дергать винт за каждой порцией... Здесь просто нужно еще найти среднепривлекательный размер этих порций, тогда задержка, вызванная работой с диском уменьшится... Я думаю, порции порядка 20-30Мб - вполне приемлемы... Главное, потом сделать более или менее оптимальный алгоритм разбора полученного массива, чтобы он не делал лишних действий и беганий...

ss88
19.12.2008, 02:12
Для долбиков в оправдание моего мега-метода, придуманного налету:)

Разрезаем файл на части указанной выше программой, получаем что-то типо вроде:

sql.0, sql.1 - ну это если на две части. А дальше такой код:


<?
for($i=0;$i<2;$i++) $p[0][$i]=File("sql." . $i);
print_r ($p);
?>

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

Pashkela
19.12.2008, 02:13
2 ss88:

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


$hFile=fopen("dump.txt","r");


если действительно 70мб


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


тоже самое, что и с последовательными строками в массиве. Мозги включайте уже, да. Может мне вам вообще еще 10 000$ подарить?:)

Naydav
19.12.2008, 02:15
Для долбиков в оправдание моего мега-метода, придуманного налету:)

Разрезаем файл на части указанной выше программой, получаем что-то типо вроде:

sql.0, sql.1 - ну это если на две части. А дальше такой код:


<?
for($i=0;$i<2;$i++) $p[0][$i]=File("sql." . $i);
print_r ($p);
?>


Послушай, мало что, что ты не можешь прочесть то, что я писал выше (хотя я раза три просил тебе сделать), ты начинаешь еще и хамить!!!


Для долбиков
Naydav писал:
Файл есстественно, можно было и вручную по таблицам разбить, в том то и вопрос, что система должна быть автоматизирована (по нажатию кнопочки), не мне обновлять, а заказчику...

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

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

о скажи а для телефона этой проги нету случайно?

Pashkela
19.12.2008, 02:21
2 Naydav:

Файловый резак, причем с исходниками:
http://old.softerra.ru/softnews/2002/5/6/20594/

Веселитесь дальше:)

ss88
19.12.2008, 02:27
2 ss88:

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


$hFile=fopen("dump.txt","r");


если действительно 70мб



тоже самое, что и с последовательными строками в массиве. Мозги включайте уже, да. Может мне вам вообще еще 10 000$ подарить?:)
Чувак, ты зря корчишь тут мегагуру и оскорбляешь присутствующих.
Насчет, "заткнется", скажу тебе только то, что тебе бы мозги иногда включать, перед тем, как что-то писать, потому что открывается только хэндл, и пофиг, сколько весит файл, ты заронил в мне сомнение, я только что проверил
$hFile=fopen("ZendStudioForEclipse-6_1_0.tar.gz","r");
echo "AllRight";
fclose($hFile);
Работает это без всяких задержек(студия весит 350Мб), что доказывать, вобщем-то, и не стояло. А хамство применяется немного в других местах.
Насчет "долбиков"... чтение порции с дочитыванием займет, конечно, чуть бульше времени, чем чтение файла целиком, но сколько потом займет времени и как усложнит алгоритм согласование между порезанными частями? Или ты еще и резать их предлагаешь по правилам?

Pashkela
19.12.2008, 02:29
Да не вопрос, оставляю вас наедине, девочки:)) Читайте хоть гигабайтнгые файлы таким макаром:)

Naydav
19.12.2008, 02:31
2 Naydav:



Веселитесь дальше:)

Программа Cutter предназначена для разделения файла на части. Это, к примеру, может понадобиться для переноса с помощью дискет (т.н. floppy-net :-) файла, размер которого больше емкости одной дискеты, на другой компьютер. до 2Гб.
В новой версии (2.1) (02.05.2002)

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

неужели непонятно, о чем я написал постом выше... ???
Все извини, но я не хочу тратить свое время, ты все рано ответишь
2 Naydav:



Веселитесь дальше:)
[QUOTE]
и дашь совсем левую ссылку

пс А при чем сдесь fopen к размеру файла(косвенное отношение)???? повеселил

Pashkela
19.12.2008, 02:34
Файловый резак, причем с исходниками:
http://old.softerra.ru/softnews/2002/5/6/20594/

Красненькое видишь? Нет? Ты дальтоник?

Ссылка рабочая, сам скачал, порезал свой дамп весом в 43 мб на части и спокойно всё загнал в массив - алгоритм выше.

ЗЫЖ Вот тупицы оба-два:)

Naydav
19.12.2008, 02:37
Файловый резак, причем с исходниками:
http://old.softerra.ru/softnews/2002/5/6/20594/

Красненькое видишь? Нет? Ты дальтоник?

Ссылка рабочая, сам скачал, порезал свой дамп весом в 43 мб на части и спокойно всё загнал в массив - алгоритм выше.

ЗЫЖ Вот тупицы оба-два:)

смотрю в книгу - вижу фигу, ну прочти еще раз

http://forum.antichat.ru/showpost.php?p=1002163&postcount=7153

пс Не было ни единого разрыва!!! :)

Pashkela
19.12.2008, 02:43
2 Naydav:

Ты реально тупой, извини. Хоть бы для начала попробовал бы сделать - запустить прогу, порезать, понять принцип работы, увидеть, что там есть даже .bat файл, который всё это склеит обратно, что там есть исходники, которые можно почитать, изучить и понять алгоритм - нет, сразу аврал, "Мне не то предлагают, чо за нахер!!!". С таким подходом иди коз доить, а не совета спрашивай, уважаемый

ЗЫЖ Задание твоё я 100 000 раз прочитал, и там, кроме того, что тебе прислали дамп весом неимоверным, и тебе надо загнать всё его в содержимое в массив, желательно посредством file(), а потом вставлять в таблицы и прочее (не важно дальше что, на самом деле) - так вот, именно эту задачу я и решил, а все твои последующие "банки, хренанки и прочее "хамство" - просто лол ходячий. Больше не слова.

Naydav
19.12.2008, 02:51
2 Naydav:

Ты реально тупой, извини. Хоть бы для начала попробовал бы сделать - запустить прогу, порезать, понять принцип работы, увидеть, что там есть даже .bat файл, который всё это склеит обратно, что там есть исходники, которые можно почитать, изучить и понять алгоритм - нет, сразу аврал, "Мне не то предлагают, чо за нахер!!!". С таким подходом иди коз доить, а не совета спрашивай, уважаемый

ЗЫЖ Задание твоё я 100 000 раз прочитал, и там, кроме того, что тебе прислали дамп весом неимоверным, и тебе надо загнать всё его в содержимое в массив, желательно посредством file(), а потом вставлять в таблицы и прочее (не важно дальше что, на самом деле) - так вот, именно эту задачу я и решил, а все твои последующие "банки, хренанки и прочее "хамство" - просто лол ходячий. Больше не слова.

Я тебе сразу ответил, что порезать файл по таблицам я могу и вручную, БЕЗ ВСЯКИХ ПРОГ
и в шестой раз
http://forum.antichat.ru/showpost.php?p=1002163&postcount=7153
указываю на причину, почему это не подходит
но я понял, что с тобой это бесполезно

Почему в каждом твоем обращении(долбики, девочки, тупицы, дальтоник, тупой, лол) - присутствует оскорбление?
Это у тебя такая модель поведения или уровень развития?
пс
Надеюсь к утру тут почистят :)

Pashkela
19.12.2008, 02:52
Ну ладно, извини, просто эмоции так и прут. Почему тебе такой метод не подойдет, я так и не понял. Наверное тупой таки я. Peace.

ss88
19.12.2008, 04:42
Я тебе сразу ответил, что порезать файл по таблицам я могу и вручную, БЕЗ ВСЯКИХ ПРОГ
и в шестой раз
....
Вобщем, чего я наисследовал. Привожу два скрипта, 1-й создает файл забитый одинаковыми строками (чтобы было над чем работать), 2-й его последовательно читает порциами по 1Мб, если раскоментируете работу с БД, то еще и заносить в базу будет.
makefile.php
<?php
//через $_GET['s'] задается размер файла в Мб
set_time_limit(0);
ignore_user_abort(TRUE);
$floodString="1766 1 154 2005-02-01 00:00:00.000 NULL 2 10692.6800 8264.4285 *";
$hFile=fopen("dump.txt","w");
if(is_numeric($_GET['s']))
$size=$_GET['s']*1024*1024;
else
$size=70*1024*1024;
$size=$size/strlen($floodString);
for($i=0;$i<$size;$i++)
fwrite($hFile,$floodString);
fclose($hFile);
echo "Файл успешно создан";
?>
testing.php
<?php
$startTime=time();//приблизительный замер времени начала
//$db=mysql_connect("localhost","root","");
//mysql_select_db("achat",$db);
//убираем лимит по времени и аборты от пользователя
set_time_limit(0);
ignore_user_abort(TRUE);
$currPos=0;//текущая позиция в байтах
$hFile=fopen("dump.txt","rt");
$partSize=1048576;//одна порция = 1Мб
$currPos=0;//текущая позиция в байтах, считая от начала файла
$fileSize=filesize("dump.txt");//размер файла
echo "<b>Размер исходного файла:</b> ".($fileSize/1048576)."Mb<br/>";
//дочитыване до конца последней строки
while($currPos<$fileSize)
{//если осталось в файле меньше,чем на порцию
if($currPos+$partSize>$fileSize)
$partSize=$fileSize-$currPos;
//считывание порции определенного размера
$currentPartOfData=fread($hFile,$partSize);
$currPos+=$partSize;
/* если последний символ не разделитель строк, то нужно дочитать порцию до разделителя*/
if($currentPartOfData{strlen($currentPartOfData)-1}!='*')
do
{
$currPos++;
$currentPartOfData.=$byte=fread($hFile,1);
}
while($byte!='*');
/*НАГРУЗКА - разбить порцию на массив*/
$currentPartOfData=explode("*",$currentPartOfData);
/*занесение значений в базу данных*/
//foreach ($currentPartOfData as $string)
//mysql_query("INSERT INTO gruz (str) VALUES('{$string}');",$db);
echo "<br/><b>Обработано: </b>".($currPos/1048576)."Mb";
}
fclose($hFile);
//mysql_close($db);
echo "<br/><b>Время затраченное на операцию: </b>".(time()-$startTime)." seconds";
?>
Прошу всех, кому не лень, потестить эти вещи, благо - телодвижений для этого сильно много не нужно.
Вобщем, что получается, файл размером 120Мб обрабатывается без занесения в базу 2-3с. (комп. у меня совсем неважняцкий, а жаль, но надо будет это поправить :) ). Если еще и заносить эти 120Мб в базу, то обходится это уже в 76секунд. Как видишь, спор о быстродействии чтения из файла исчерпывается, теперь уже встает вопрос об оптимизации работы с базой, но это не было самоцелью.
Так что не нужно дамп бить на части, тем-более, что чтение+explod'ы даже 1Гб дампа (такого у тебя уж точно не будет) заняло всего 9секунд.
Потесть у себя на компе, это, конечно, только кусок моего быдлокода, но все же вопрос актуальный и интересный.

imajo.ati
19.12.2008, 10:53
вопрос:
функция exec или system запускает файл и ждёт пока он полностью не выполнится.
есть ли функция, которая не будет ждать выполнения и позволит продолжить работу?

Namelles One
19.12.2008, 11:04
Запускать файл - это сильно...

Запускай с помощью нее, но - с отвязкой от консоли (хотя, конечно, в PHP происходящее сложно назвать консолью), то есть - с амперсандом ( & ) после команды.

imajo.ati
19.12.2008, 11:07
Запускать файл - это сильно...

Запускай с помощью нее, но - с отвязкой от консоли (хотя, конечно, в PHP происходящее сложно назвать консолью), то есть - с амперсандом ( & ) после команды.

запустил с амперсандом

по-прежнему ждёт выполнения файла и не продолжает работу скрипта

exec('php d:/dev.php &');

oRb
19.12.2008, 11:18
запустил с амперсандом

по-прежнему ждёт выполнения файла и не продолжает работу скрипта

exec('php d:/dev.php &');
Так это винда, а не линукс. Здесь такое не прокатит.

Namelles One
19.12.2008, 11:44
ОМФГ.

Ну откуда мне знатЬ, что ты под Виндой сидишь.

Резонный вопрос - у тебя и так исполняется php код. Зачем из php кода вызывать исполнение php кода - не проще ли вставить? Хотя, тебе, судя по всему - потоков в php не хватает, читай про реализации псевдомногопоточности, по слухам оч клевых вещей люди на основе оной добиваются.

groundhog
19.12.2008, 11:56
Неймлесс прав, в винде нормально не демонизируешь скрипт и не оторвёшься от консоли... Если нужна многопоточность вот тут есть интересная её реализация, правда крайне экспериментальная...

http://github.com/danhen/php_threads/tree/master

imajo.ati
19.12.2008, 13:39
многопоточность в ПХП мне не нужна.
мне нужно 2 параллельно работающих скрипта в многопоточной операционной системе.

т.е. 2 раза запустить php.exe с параметром. но не вручную а с помощью кода на пхп

если невозможно - очень жаль, я в унынии(

ss88
19.12.2008, 14:08
makefile.php
<?php
//через $_GET['s'] задается размер файла в Мб
set_time_limit(0);
ignore_user_abort(TRUE);
$floodString="1766 1 154 2005-02-01 00:00:00.000 NULL 2 10692.6800 8264.4285 *";
$hFile=fopen("dump.txt","w");
if(is_numeric($_GET['s']))
$size=$_GET['s']*1024*1024;
else
$size=70*1024*1024;
$size=$size/strlen($floodString);
for($i=0;$i<$size;$i++)
fwrite($hFile,$floodString);
fclose($hFile);
echo "Файл успешно создан";
?>
testing.php
<?php
$startTime=time();//приблизительный замер времени начала
//$db=mysql_connect("localhost","root","");
//mysql_select_db("achat",$db);
//убираем лимит по времени и аборты от пользователя
set_time_limit(0);
ignore_user_abort(TRUE);
$currPos=0;//текущая позиция в байтах
$hFile=fopen("dump.txt","rt");
$partSize=1048576;//одна порция = 1Мб
$currPos=0;//текущая позиция в байтах, считая от начала файла
$fileSize=filesize("dump.txt");//размер файла
echo "<b>Размер исходного файла:</b> ".($fileSize/1048576)."Mb<br/>";
//дочитыване до конца последней строки
while($currPos<$fileSize)
{//если осталось в файле меньше,чем на порцию
if($currPos+$partSize>$fileSize)
$partSize=$fileSize-$currPos;
//считывание порции определенного размера
$currentPartOfData=fread($hFile,$partSize);
$currPos+=$partSize;
/* если последний символ не разделитель строк, то нужно дочитать порцию до разделителя*/
if($currentPartOfData{strlen($currentPartOfData)-1}!='*')
do
{
$currPos++;
$currentPartOfData.=$byte=fread($hFile,1);
}
while($byte!='*');
/*НАГРУЗКА - разбить порцию на массив*/
$currentPartOfData=explode("*",$currentPartOfData);
/*занесение значений в базу данных*/
//foreach ($currentPartOfData as $string)
//mysql_query("INSERT INTO gruz (str) VALUES('{$string}');",$db);
echo "<br/><b>Обработано: </b>".($currPos/1048576)."Mb";
}
fclose($hFile);
//mysql_close($db);
echo "<br/><b>Время затраченное на операцию: </b>".(time()-$startTime)." seconds";
?>

Обработка файла размером 300Мб с занесением в БД 4,915,500 записей заняло 377секунд. Неплохой результат, учитывая то, что размер порции не слишком большой. Здесь есть риск вызвать Fatal Error выделения памяти при больших порциях.
Я думаю, для подобных операций, которые, я думаю, выполняются нечасто, такой подход вполне приемлим.

Gifts
19.12.2008, 14:20
ss88, Naydav Омг, что за ужос вы пишете в час ночи?) Для больших файлов Бог давно придумал fgets и stream_get_line. fgets для построчного чтения, стрим - для любого разделителя

<pre><?php
$startTime=microtime(true);
set_time_limit(0);
$ss=0;

$hFile=fopen("dump2.txt","r");
$fileSize=filesize("dump2.txt");
echo "<b>Размер исходного файла:</b> ".($fileSize/1048576)."Mb<br/>";

while($buf=fgets($hFile,4096))
//while($buf=stream_get_line($hFile,4096,"*"))
{
$tmp=$buf;
$ss++;
}
fclose($hFile);
echo "Предпоследняя строка: ".$tmp."\r\n".'Количество прочитанных строк '.$ss."\r\n";
echo "<br/><b>Время затраченное на операцию: </b>".(microtime(true)-$startTime)." seconds";
?>

ss88
19.12.2008, 14:49
ss88, Naydav Омг, что за ужос вы пишете в час ночи?) Для больших файлов Бог давно придумал fgets и stream_get_line. fgets для построчного чтения, стрим - для любого разделителя
изменил кое-что, но твой вариант со взятием каждой строки отдельно - это для больших файлов, конечно, самое оно, я не подумавши только что запустил такой вариант, уже минут 10 чиргыкает 100Мб...
Но кое-что я таки поменял, за что тебе спасиобо ;)
<?php
$startTime=microtime(TRUE);//приблизительный замер времени начала
$db=mysql_connect("localhost","root","");
mysql_select_db("achat",$db);
//убираем лимит по времени и аборты от пользователя
set_time_limit(0);
ignore_user_abort(TRUE);
$currPos=0;//текущая позиция в байтах
$delimiter='*';
$hFile=fopen("dump.txt","rt");
$partSize=51200;//одна порция = 50Кб
$currPos=0;//текущая позиция в байтах, считая от начала файла
$fileSize=filesize("dump.txt");//размер файла
echo "<b>Размер исходного файла:</b> ".($fileSize/1048576)."Mb ({$fileSize}Bytes)<br/>";
//дочитыване до конца последней строки
while(!feof($hFile))
{//если осталось в файле меньше,чем на порцию
if($currPos+$partSize>$fileSize)
$partSize=$fileSize-$currPos;
//считывание порции определенного размера
$currentPartOfData=fread($hFile,$partSize);
$currPos+=$partSize;
/* если последний символ не разделитель строк, то нужно дочитать порцию до разделителя*/
if($currentPartOfData{strlen($currentPartOfData)-1}!=$delimiter)
{
$currentPartOfData.=$tmp=stream_get_line($hFile,$p artSize,$delimiter);
$currPos+=strlen($tmp)-1;
}
/*НАГРУЗКА - разбить порцию на массив*/
$currentPartOfData=explode($delimiter,$currentPart OfData);
/*занесение значений в базу данных*/
foreach ($currentPartOfData as $string)
mysql_query("INSERT INTO gruz (str) VALUES('{$string}');",$db);
echo "#";
}
echo $currentPartOfData[count($currentPartOfData)-1]."<br/>";
fclose($hFile);
mysql_close($db);
echo "<br/>endPos={$currPos}<br/><b>Время затраченное на операцию: </b>".(microtime(TRUE)-$startTime)." seconds";
?>

кстати, теперь, когда окончание строки выдирается stream_get_line работает с такой же скоростью. А вот все таки вариант с построчным выдиранием - это не то ))) запусти такое у себя, когда файл из строк символов по 200-300, а сам файл метров 100-200, мне пришлось рестартить апач, чтобы эта медленная садистская вакханалия прекратилась. )))
Вобщем-то, закономерно, что, при уменьшении размера порции, увеличится время выполнения, но и нужно задуматься перед тем, как ставить ее больше одного Мб. Хотя наибольшего быстродействия чтение/разбиение я добился при размере порции 50Кб. 20Мб без занесения в БД обрабатывается 0,2с. Так что, уже стало ясно, по крайней мере мне, что при средних размерав дампов в 40-100Мб, операция их чтения/обработки/занесения в БД совсем даже и не критичны в таком контексте выполнения.

#Wolf#
19.12.2008, 16:33
мааленький вопрос. :-[
есть хеши с "мусором" вида 2008-08-18(43):3557d8eff41195a6e33efb18d356a3e5:::0
нужен только хеш
<?php
$op="filet.xt";
$file=file_get_contents($op) or die ("Cannot open file");
$exp=explode(":",$file);
echo $exp[1];
?>
запутался с циклом =\
и вообще оптимален ли такой вариант? или есть лучше

ss88
19.12.2008, 16:40
если размер файла превысит допустимые размеры на выделение памяти для переменных, то получишь
Fatal error: Allowed memory size of хххххх bytes exhausted (tried to allocate ххххх bytes)

b3
19.12.2008, 17:22
#Wolf#,
есть хеши с "мусором" вида 2008-08-18(43):3557d8eff41195a6e33efb18d356a3e5:::0
нужен только хеш

<?php
$str = '2008-08-18(43):3557d8eff41195a6e33efb18d356a3e5::';
preg_match('#[0-9a-f]{32}#i',$str, $matches);
print_r($matches);
echo $matches[0];
?>

Это вопрос по части регулярок, задаються сюда)
http://forum.antichat.ru/thread92492.html

$p01nt
19.12.2008, 17:40
Как из TEXTAREA все данные перекинуть массив (условие что каждый новый элемент с "\n");

Т.е. Есть TEXTAREA:
Первый
Второй
Должно быть
$mas[0]=Первый
$mas[1]=Второй.

Пробую так:
==========бла бла бла==========
<TEXTAREA name=all cols=45 rows=15></TEXTAREA><br>
==========бла бла бла==========
$array=array(split("\n",$_POST['all']));
==========бла бла бла==========

GreenBear
19.12.2008, 17:44
$array = explode("\n", $_POST['all']);

MaTpOc
19.12.2008, 19:12
Где можно скачать норм учебник по пхп с 0, так чтоб без лишнего и одним архивом?

life_is_shit
19.12.2008, 19:18
http://www.php.net/download-docs.php
удачи=)

Mixon
19.12.2008, 21:54
Может мой вопрос не сильно по теме,но как можно имитировать POST в ссылке,вопше делают так например

http://blablabla.ru/index.php&post=on

ето передается как бы в POST запросе переменная post со значением on вот только далекооо не всегда так выходит...подскажите плз...

Pashkela
19.12.2008, 21:56
форму свою делаешь локальную на сайте с автосабмитом и даешь ссылку на неё тому, кому надо (хоть себе):)

Mixon
19.12.2008, 22:00
Дык,насчет автосабмита я нашел только 1н скрипт,и он тупой не нажимает на клавишу а лишь через заданое время делает клавишу со ссылкой которая подана в POST запросе и на нее уже жмет,тупость короче,дай тогда норм етот скрипт,да и вопше,я в основе задал другой вопрос,как конкретно впихнуть ето в ссылку,ну и етот скрипт не помешает))

Pashkela
19.12.2008, 22:02
<form NAME="xss" method='post' action='http://blablabla.ru/index.php&post=on'>
<input type='hidden' name='name' value='"><script>alert(document.cookie)</script>'>
<input type='submit'>
</form>
<script>
document.xss.submit();
</script>

MaTpOc
19.12.2008, 22:05
http://www.php.net/download-docs.php
удачи=)

мне бы попроще и на русском :)

Pashkela
19.12.2008, 22:08
http://ru2.php.net/manual/ru/index.php

[dei]
19.12.2008, 22:23
Где можно скачать норм учебник по пхп с 0, так чтоб без лишнего и одним архивом?
http://softtime.ru/info/bookphp.php?down=bookphp.zip

rushter
19.12.2008, 23:47
php.su

#Wolf#
20.12.2008, 01:05
#Wolf#,


<?php
$str = '2008-08-18(43):3557d8eff41195a6e33efb18d356a3e5::';
preg_match('#[0-9a-f]{32}#i',$str, $matches);
print_r($matches);
echo $matches[0];
?>

Это вопрос по части регулярок, задаються сюда)
http://forum.antichat.ru/thread92492.html
не универсально. а если мускульные хеши?
и список очень большой с хешкрекинга

Gifts
20.12.2008, 01:15
#Wolf# $str = '2008-08-18(43):3557d8eff41195a6e33efb18d356a3e5::';
preg_match('#^[^:]+:([^:]+):#m',$str, $matches);
print_r($matches);
echo $matches[1];

.:EnoT:.
20.12.2008, 01:32
Для тех кто в бронепоезде, напоминаю что для регулярок есть спец. тема!

Mixon
20.12.2008, 01:40
<form NAME="xss" method='post' action='http://blablabla.ru/index.php&post=on'>
<input type='hidden' name='name' value='"><script>alert(document.cookie)</script>'>
<input type='submit'>
</form>
<script>
document.xss.submit();
</script>



И опять же он ЛИШЬ переходит по етой ссылке http://blablabla.ru/index.php&post=on НЕ ОТПРАВЛЯЯ ДЕННЫЕ С СТАРНИЦЫ!!!

[dei]
20.12.2008, 01:45
И опять же он ЛИШЬ переходит по етой ссылке http://blablabla.ru/index.php&post=on НЕ ОТПРАВЛЯЯ ДЕННЫЕ С СТАРНИЦЫ!!!

Ты вообще понимаешь как работает метод POST ?

Mixon
20.12.2008, 11:02
Да

KaZ@NoVa
20.12.2008, 11:05
Просто надо знать волшебное слово, все делается без особых проблем. Благо классов уже понаписанно достаточно.
Так что 3 строки - и вы в посте

Mixon
20.12.2008, 11:27
Не очень понял о чём ты говоришь,ты вопше ето к кому пишешь?

m0Hze
20.12.2008, 12:35
Вот напримере хешкрекинга.Пробую выдернуть хеши.

<?
$f = file_get_contents('https://hashcracking.info/index.php?6');
preg_match_all('#<tr><td class="style7">([^:]+?)</td></tr>#',$f,$pock);
echo($pock);
?>

Получаю Array

rushter
20.12.2008, 12:39
array = массив
echo($pock[1]);

Doom123
20.12.2008, 12:41
rushter $pock[1] тоже массив т.к это preg_match_all
делай print_r($pock);

m0Hze
20.12.2008, 12:45
Неработает.Говорюже пробывал и так и так.

Mixon
20.12.2008, 12:59
Может мой вопрос не сильно по теме,но как можно имитировать POST в ссылке,вопше делают так например

http://blablabla.ru/index.php&post=on

ето передается как бы в POST запросе переменная post со значением on вот только далекооо не всегда так выходит...подскажите плз...

никто незнает чтоли?(((

b3
20.12.2008, 13:08
m0Hze

у меня file_get_contents() с https неочень хотел работать.

<?php
set_time_limit(0);
$url = "https://hashcracking.info/index.php?4";
$ref = "https://hashcracking.info/index.php";
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$res = curl_exec($ch);
preg_match_all('#[0-9a-f]{32}#i', $res, $matches);
print_r($matches);
?>

[dei]
20.12.2008, 13:32
1) Почитай сначала про многомерные массивы http://ua.php.net/manual/ru/language.types.array.php
2) http://ua.php.net/manual/ru/book.curl.php

FeoЩту
20.12.2008, 13:38
1) Почиму при замене print_r($matches); на echo $matshes
Я получаю Array?print_r() выводит информацию о переменной в удобочитаемом виде.
echo — Выводит одну или более строк

Какбе вывсести все ето без массива как в print_r а одним столбиком. foreach($arr as $val) { echo $val.'<br />'; }

m0Hze
20.12.2008, 14:40
Вообщем чтото странное =)
Решил тот код,что мне помогли написать на редидущей странице,немного модернизировать...
И вот что получилось:
<?
echo('<center><form method = "POST"><input type = "radio" name "system" value = "md5">MD5
<input type = "radio" name "system" value = "mysql">MySQL
<input type = "radio" name "system" value = "mysql5">MySQL5 and SHA-1
<input type = "submit" value = "Грабим!"></center></form>');
switch($_POST['system']){
case 'md5' : {
$hash = "#[0-9a-f]{32}#i";
$url = "https://hashcracking.info/index.php?4";
}break;
case 'mysql' : {
$hash = "#[0-9a-f]{16}#i";
$url = "https://hashcracking.info/index.php?3";
}break;
case 'mysql5' : {
$hash = "#[0-9a-f]{40}#i";
$url = "https://hashcracking.info/index.php?5";
}break;
default : exit();
break;
}
$da = $url;
set_time_limit(99999);
$ref = "https://hashcracking.info/index.php";
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4";
$ch = curl_init($da);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$res = curl_exec($ch);
preg_match_all("$hash", $res, $matches);
foreach($matches[0] as $val) { echo $val.'<br />'; }
?>

При нажатии на кнопку,можно сказать сраница обновляеца.Но ницего не происходит.Вроде ошибок явных в коде нет,но чтото не так.Возможно переменым все время присваеваеться значение default? Переписывал всю системыу на "if" теже результаты =(

Chaak
20.12.2008, 14:47
Вообщем чтото странное =)
Решил тот код,что мне помогли написать на редидущей странице,немного модернизировать...
И вот что получилось:
<?
echo('<center><form method = "POST"><input type = "radio" name "system" value = "md5">MD5
<input type = "radio" name "system" value = "mysql">MySQL
<input type = "radio" name "system" value = "mysql5">MySQL5 and SHA-1
<input type = "submit" value = "Грабим!"></center></form>');
switch($_POST['system']){
case 'md5' : {
$hash = "#[0-9a-f]{32}#i";
$url = "https://hashcracking.info/index.php?4";
}break;
case 'mysql' : {
$hash = "#[0-9a-f]{16}#i";
$url = "https://hashcracking.info/index.php?3";
}break;
case 'mysql5' : {
$hash = "#[0-9a-f]{40}#i";
$url = "https://hashcracking.info/index.php?5";
}break;
default : exit();
break;
}
$da = $url;
set_time_limit(99999);
$ref = "https://hashcracking.info/index.php";
$ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4";
$ch = curl_init($da);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_REFERER, $ref);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$res = curl_exec($ch);
preg_match_all("$hash", $res, $matches);
foreach($matches[0] as $val) { echo $val.'<br />'; }
?>

При нажатии на кнопку,можно сказать сраница обновляеца.Но ницего не происходит.Вроде ошибок явных в коде нет,но чтото не так.Возможно переменым все время присваеваеться значение default? Переписывал всю системыу на "if" теже результаты =(
name "system"
Надо name="system"

case 'mysql5' : {
$hash = "#[0-9a-f]{40}#i";
$url = "https://hashcracking.info/index.php?5";
}break;
Извращение, фигурные скобки не обязательны

m0Hze
20.12.2008, 14:49
name "system"
Надо name="system"

case 'mysql5' : {
$hash = "#[0-9a-f]{40}#i";
$url = "https://hashcracking.info/index.php?5";
}break;
Извращение, фигурные скобки не обязательны

Точно,забыл кавычке :j с скобками мне спокойнее....

MaTpOc
20.12.2008, 20:24
что за пхп4, пхп5, чем они отличаются?

[dei]
20.12.2008, 20:29
Тут все написано
http://ru.wikipedia.org/wiki/PHP

.:EnoT:.
20.12.2008, 20:31
что за пхп4, пхп5, чем они отличаются?
Ну как..новые версии новые возможности..добавлены новые функции, некоторые удалены, пофичены баги. Но главным я думаю для php5 стало расширение ООП.

Shaitan-Devil
21.12.2008, 01:28
Есть сайт.Он выдает инфу после того как нажимаешь на кнопку ЖабаСкрипт

<form id="searchform" name="searchform" action="/" onsubmit="return onSearch(event);"><label for="q">Type search term</label><label for="go"> Search </label><span class="sc"><input class="q" id="q" name="q" value="" maxlength="32" onfocus="return onFocus(event);" onkeydown="onFocus();" onblur="onFocus();" onkeyup="onFocus();" onchange="onFocus();"><input id="s" name="s" value="md5" type="hidden"><input name="go" id="go" class="go" src="/images/search_go_g1.gif" value="Search" align="middle" type="image"></span></form>

Как это можно имитировать на курле?

rushter
21.12.2008, 01:30
сайт в студию
посмотри в http пакетах запросы

!{ra!{e/\/
21.12.2008, 01:34
юзай Naviscope и узнай какие пакеты отсылаются на сервер.

spamoney
21.12.2008, 14:11
Всем привет! Есть такой вопрос, возможно немного не по теме, но не знал куда запостить:

Такая проблема, если я у себя на сайте указываю ссылку на какой-либо документ в формате pdf, то при переходе по этой ссылке документ начинает грузится прямо в окне браузера, у некоторых пользователей не установлен плагин для браузера Adobe acrobat, поэтому, как сделать средствами php, либо еще как-то так, что бы при скачке пользователем файла с разрешением pdf (допустим www.site.ru/document.pdf) ему выдовалось стандартное/обычное окошко (как при скачке zip, rar и др файлов) сохранения файла на его компьютер?

P.S

Пробывал в .htaccess добавлять:
AddType application/pdf .pdf
но это проблему не решило..(

d_x
21.12.2008, 14:54
Средствами php так:

header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="файл.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');

//потом просто выдаём содержимое файла в браузер.


В апаче можно так попробовать:

AddType application/octet-stream .pdf

или

AddType application/octet-stream *.pdf


Первый способ должен 100% работать, второй может игнорироваться браузерами некоторыми.

MafiaBoy3
21.12.2008, 14:57
Как сделать подгрузку полей ввода, как например при регистрации на Вконтакте?

То есть по мере заполнения полей и выбора списков - добавлять ещё поля ввода.

d_x
21.12.2008, 15:02
С помощью AJAX. Более подробного ответа не будет, это зависит от конкретной задачи.

spamoney
21.12.2008, 16:23
Средствами php так:

header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="файл.pdf"');
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');

//потом просто выдаём содержимое файла в браузер.



Спасибо, сделал так:


$filename = "testfile.pdf";
$file_dir ="upload/$filename";
if (file_exists($file_dir)) {
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename='.$filename.'');
header('Content-Transfer-Encoding: binary');
header('Content-Type: application/octet-stream');
$handle = fopen($file_dir, "r");
$contents = fread($handle, filesize($file_dir));
fclose($handle);
echo $contents;
}


И еще такой вопрос не возрастет ли нагрузка на сервер если я буду отдавать файлы pdf таким образом (средний размер файла 3-6 Mb)??

Kaimi
21.12.2008, 16:27
Возрастет, поэтому лучше попробуй вариант с AddType

d_x
21.12.2008, 16:42
Можно выдавать большие файлы кусками в браузер, чтобы не хранить очень много данных в переменной $contents:


...

$handle = fopen($file_dir, "r");
while(!feof($handle))
{
echo fread($handle,1024);
flush();
@ob_flush();
}
fclose($handle);


Я таким образом скачивал 100+ мб.

InfernoNet
21.12.2008, 17:12
Написал скрипт отправки сообщения на e-mail (обратная связь в общем). Но вот сообщения доходят не сразу же после отправки, а иногда с задержкой в 10-15 минут. Использую отправку/прием сообщений сервиса mail.ru. Это проблема со стороны сервера mail.ru или со стороны моего хостинга?

GreenBear
21.12.2008, 17:14
на мыло ру иногда и через час приходят

InfernoNet
21.12.2008, 17:26
Есть у меня форма textarea, при ее заполнение например текстом:
Привет
Я
Ухожу
От сюда
Приходит на e-mail Привет Я Ухожу От сюда
Как сделать, чтоб enter=<br>?

GreenBear
21.12.2008, 17:27
или в content-type: plain/text, или $text = nl2br($text);

Pashkela
21.12.2008, 17:55
Есть у меня форма textarea, при ее заполнение например текстом:

Приходит на e-mail
Как сделать, чтоб enter=<br>?


<?
$mess='
1
2
3
4';

$to = '321@yandex.ru';
$ot = '123@mail.ru';
$subj = 'Test';
mail($to, $subj, "$mess\r\n", "From: ".$ot);

echo 'Done';
?>

FeoЩту
21.12.2008, 19:50
Приходит на e-mail
Как сделать, чтоб enter=<br>
$message = str_replace("\n", '<br />', $message);

d_x
21.12.2008, 19:57
Чем Вам nl2br не понравилось? GreenBear же написал выше.
Тем более, если использовать html-теги в теле e-mail'а, то следует отправить заголовок
Content-type: text/html; charset=кодировка.

ss88
21.12.2008, 19:59
форму свою делаешь локальную на сайте с автосабмитом и даешь ссылку на неё тому, кому надо (хоть себе):)
Да, ты специалист по чрезжопным методам

print_r() выводит информацию о переменной в удобочитаемом виде.
echo — Выводит одну или более строк

foreach($arr as $val) { echo $val.'<br />'; }
Чувак, RTFM, не учи, если сам еще не разобрался! print_r предназначена для вывода МАССИВОВ любой вложенности
Как сделать подгрузку полей ввода, как например при регистрации на Вконтакте?

То есть по мере заполнения полей и выбора списков - добавлять ещё поля ввода.
Вопрос явно не по теме, посмотри в темы про верстку и про АДЖАХ

ss88
21.12.2008, 20:01
$message = str_replace("\n", '<br />', $message);
Почему ты не учитываешь, что \n - это окончание строки по традициям UNIX, в Windows строка заканчивается \r\n, например.
Работать-то оно будет, но, в случае Винды, у тебя будет телипаться еще один символ!

Pashkela
21.12.2008, 20:04
Чем Вам nl2br не понравилось? GreenBear же написал выше.
Тем более, если использовать html-теги в теле e-mail'а, то следует отправить заголовок
Content-type: text/html; charset=кодировка.

Мой вариант самый простой и без предварительной какой-либо обработки сообщения и вставки тегов и заголовков всяческих. Советую проверить

Doom123
21.12.2008, 20:06
ss88 http://il2.php.net/manual/ru/function.print-r.php

print_r() выводит информацию о переменной в удобочитаемом виде.

© php.net


Смысл употребления RTFM буквально таков: «Да прочитай же, в конце концов, это долбаное руководство и перестань задавать глупые вопросы»

© wikipedia.org

159932
21.12.2008, 20:08
Почему ты не учитываешь, что \n - это окончание строки по традициям UNIX, в Windows строка заканчивается \r\n, например.
Работать-то оно будет, но, в случае Винды, у тебя будет телипаться еще один символ!
ну проверяй тогда на наличие \r .. бред .. тебе мешает +1символ??

groundhog
21.12.2008, 20:16
Делайте trim от строки, и никаких пробельных символов телепаться не будет ни в начале, ни в конце...

FeoЩту
21.12.2008, 22:28
Почему ты не учитываешь, что \n - это окончание строки по традициям UNIX, в Windows строка заканчивается \r\n, например.
Работать-то оно будет, но, в случае Винды, у тебя будет телипаться еще один символ!думаешь на яндексе или на мейле винда стоит? это раз. два - этот символ невидимый ;) три - у тебя сервер на винде?

InfernoNet
21.12.2008, 22:31
думаешь на яндексе или на мейле винда стоит?
А тут разве зависит от сервера на котором мыло зарегено? Мне казалось, что зависит от сервера с которого посылается запрос (хостинг).

FeoЩту
21.12.2008, 22:35
А тут разве зависит от сервера на котором мыло зарегено? Мне казалось, что зависит от сервера с которого посылается запрос (хостинг).
если сервер с виндой - отошлётся \r\n, а принимающий серв, хоть он на никсах, хоть на винде воспримет всё ок.

InfernoNet
21.12.2008, 22:40
если сервер с виндой - отошлётся \r\n, а принимающий серв, хоть он на никсах, хоть на винде воспримет всё ок.
Когда я только начал изучать работоспособность php с функцией mail(), то мне запомнилась фраза "Если сообщение не отправляется, попробуйте использовать символ \n вместо \r\n."
Такая неоднозначность взоникает из-за того, что некоторые программы для работы с почтой автоматически конвертируют \n в \r\n.

ss88
21.12.2008, 22:44
думаешь на яндексе или на мейле винда стоит? это раз. два - этот символ невидимый ;) три - у тебя сервер на винде?
Связка AMP на винде - это, конечно, извращение, у меня вся работа связанная с веб-разработкой происходит под Debian Etch. Хоть символ и невидимый, но он есть (читать как "бывает" :) )... Это из разряда "Видишь суслика? Нет? А он есть..."
если сервер с виндой - отошлётся \r\n, а принимающий серв, хоть он на никсах, хоть на винде воспримет всё ок.
Шота я не совсем понял, каким образом сервер относится к тому, что отсылается браузером в POST?

geforce
22.12.2008, 00:10
Вопрос???

есть код

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
$mas = getimagesize($adres);

$width = 215;
$heigth = $mas[1]+270;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);
$name = "avat".$myrow1['name'];
imagecopy($im, $im2, 0, $mas[1], 0, 0, 215, 20);
imagecopy($im, $im1, 0, 0, 0, 0, 215, $mas[1]);
imagecopy($im, $im3, 0, $mas[1]+20, 0, 0, 215, 350);
imagejpeg($im,"avatar/$name");
}
else
{
exit();
}
?>

Почему функция imagejpeg($im,"avatar/$name");
не отоброжает картинку в браузере но сохроняет??
на какую функцию её можно поменять чтобы она только сохроняла?(без вывода в браузер??? )

Ru}{eeZ
22.12.2008, 00:19
>>>не отоброжает картинку в браузере но сохроняет??
на какую функцию её можно поменять чтобы она только сохроняла?(без вывода в браузер??? )

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

[dei]
22.12.2008, 00:25
Почему функция imagejpeg($im,"avatar/$name");
не отоброжает картинку в браузере но сохроняет??
на какую функцию её можно поменять чтобы она только сохроняла?(без вывода в браузер??? )
ты противоречишь самому себе
читай http://php.net/imagejpeg

ss88
22.12.2008, 00:36
Вопрос???

Почему функция imagejpeg($im,"avatar/$name");
не отоброжает картинку в браузере но сохроняет??
на какую функцию её можно поменять чтобы она только сохроняла?(без вывода в браузер??? )

Да потому что эта функция будет выводить изображение в выходной поток браузера только в случае НЕ ЗАДАННОГО ВТОРОГО ПАРАМЕТРА.
Ты передаешь MIME-тип image/jpeg, значит, ты хочешь чтобы картинка вывелась в браузер, тогда не указывай имя файла и все. Я так и не понял, зачем ты его указываешь, если ты передаешь РЕСУРС???

+один личный вопрос. ruseller.com - это твой сайт? если да, то...... как минимум, некоторые из платных обучающих курсов вызывают ОЧЕНЬ большое подозрение.... :cool:

geforce
22.12.2008, 00:42
']ты противоречишь самому себе
читай http://php.net/imagejpeg

)))) ещё раз для вас!

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

функция imagejpeg(); не выводит картинку потому что она сохроняется на сервере а imagejpeg подгружает картинку с темпа в котором его уже нету!

мне нужна функция за место imagejpeg() которая не будет выводить а будет просто сохранять и всё???? :confused:

geforce
22.12.2008, 00:44
Да потому что эта функция будет выводить изображение в выходной поток браузера только в случае НЕ ЗАДАННОГО ВТОРОГО ПАРАМЕТРА.
Ты передаешь MIME-тип image/jpeg, значит, ты хочешь чтобы картинка вывелась в браузер, тогда не указывай имя файла и все. Я так и не понял, зачем ты его указываешь, если ты передаешь РЕСУРС???

+один личный вопрос. ruseller.com - это твой сайт? если да, то...... как минимум, некоторые из платных обучающих курсов вызывают ОЧЕНЬ большое подозрение.... :cool:

не это сайт моего препода в москве у которого я учился (((=

ss88
22.12.2008, 00:53
)))) ещё раз для вас!

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

функция imagejpeg(); не выводит картинку потому что она сохроняется на сервере а imagejpeg подгружает картинку с темпа в котором его уже нету!

мне нужна функция за место imagejpeg() которая не будет выводить а будет просто сохранять и всё???? :confused:
ТЫ ВЗРЫВАЕШЬ МОЙ ПЬЯНЫЙ МОСК, ТЫ ЖЕ ТОЛЬКО ЧТО ЖАЛОВАЛСЯ НА ТО, ЧТО НЕ ВЫВОДИТСЯ, ТЕПЕРЬ ГОВОРИШЬ, НЕ СОХРАНЯЕТСЯ.... Я ФШОКЕ...

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

Pashkela
22.12.2008, 00:54
<?
$im = ImageCreateFromPng("dss.png");
$c1 = ImageColorAllocate($im, 0, 0, 0);
$string = "lolololol";
ImageString($im,3,20,20,$string,$c1);
ImagePng($im);
imageGif($im,"dss100.png");
ImageDestroy($im);
?>

geforce
22.12.2008, 01:03
ТЫ ВЗРЫВАЕШЬ МОЙ ПЬЯНЫЙ МОСК, ТЫ ЖЕ ТОЛЬКО ЧТО ЖАЛОВАЛСЯ НА ТО, ЧТО НЕ ВЫВОДИТСЯ, ТЕПЕРЬ ГОВОРИШЬ, НЕ СОХРАНЯЕТСЯ.... Я ФШОКЕ...

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


Да нет мне надо просто сохронить! imagejpeg()
выводит пустую картинку как будто она не загрузилась как это убрать? мне не надо ничего выводить, мне надо тока сохронить! возможно это зделать ето через upload ???

geforce
22.12.2008, 01:14
<?
$im = ImageCreateFromPng("dss.png");
$c1 = ImageColorAllocate($im, 0, 0, 0);
$string = "lolololol";
ImageString($im,3,20,20,$string,$c1);
ImagePng($im);//выводит а мне это не надо!
imageGif($im,"dss100.png");//аналогично
ImageDestroy($im);
?>


так что не потходит!

Pashkela
22.12.2008, 01:23
так что не потходит!


А у меня подходит. И прекрасно подходит. Хеадер удали нафинг, чтобы браузер правильно понимал, что это скрипт php, а не эмуляция картинки

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

ntldr
22.12.2008, 01:28
А у меня подходит. И прекрасно подходит. Хеадер удали нафинг, чтобы браузер правильно понимал, что это скрипт php, а не эмуляция картинки

И вообще, прежде чем кричать, возьми чисто мой скрипт (без своих гениальных попыток сразу вставить в свой), и попробуй запустить (проверить тсказать). Ну только имя картинки свою вставь, которая есть (вместо dss.png)
хедер удалять не надо...
хедер сообщает браузеру что это не "эмуляция картинки" а что следующая последовательность байтов это не текст или еще чо а картинка

geforce
22.12.2008, 01:30
А у меня подходит. И прекрасно подходит. Хеадер удали нафинг, чтобы браузер правильно понимал, что это скрипт php, а не эмуляция картинки

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

умник нафига мне твой скрипт вот мой!!!

<?php include("db.php");
header('Content-type: image/jpeg');
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
$mas = getimagesize($adres);

$width = 215;
$heigth = $mas[1]+270;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);
$name = "avat".$myrow1['name'];
imagecopy($im, $im2, 0, $mas[1], 0, 0, 215, 20);
imagecopy($im, $im1, 0, 0, 0, 0, 215, $mas[1]);
imagecopy($im, $im3, 0, $mas[1]+20, 0, 0, 215, 350);
imagejpeg($im,"avatar/$name");
}
else
{
exit();
}
?>

100% работает! только мне надо конец поменять!

ntldr
22.12.2008, 01:33
не понятно чего ты от своего скрипта хочешь?

Pashkela
22.12.2008, 01:34
хедер удалять не надо...
хедер сообщает браузеру что это не "эмуляция картинки" а что следующая последовательность байтов это не текст или еще чо а картинка

И нафига это надо, если ему не надо вывод в браузер? Или надо? Перечитал его вопрос, сам опух, ыыыыыы

[dei]
22.12.2008, 01:35
похоже я понял че он хочет

<?php include("db.php");
if (isset($_POST['vibor'])) { $vibor = $_POST['vibor'];}
if (isset($_POST['load'])) { $adres = $_POST['load'];}
$result1 = mysql_query("SELECT * FROM data WHERE id='$vibor'",$db);
if (!$result1)
{
exit(mysql_error());
}
if (mysql_num_rows($result1) > 0)
{
$myrow1 = mysql_fetch_array($result1);
$mas = getimagesize($adres);

$width = 215;
$heigth = $mas[1]+270;
$adres1 = "admin/".$myrow1['url'];
$im = imagecreatetruecolor($width, $heigth);

$im1 = imagecreatefromjpeg($adres);
$im2 = imagecreatefromjpeg('logo.jpg');
$im3 = imagecreatefromjpeg($adres1);
$name = "avat".$myrow1['name'];
imagecopy($im, $im2, 0, $mas[1], 0, 0, 215, 20);
imagecopy($im, $im1, 0, 0, 0, 0, 215, $mas[1]);
imagecopy($im, $im3, 0, $mas[1]+20, 0, 0, 215, 350);
imagejpeg($im,"avatar/$name");
}
else
{
exit();
}
?>

ss88
22.12.2008, 01:39
умник нафига мне твой скрипт вот мой!!!

<?//фигня на постном масле
?>

100% работает! только мне надо конец поменять!
ты уж если спрашиваешь совета, то хоть не дерзи тем, кто отвечает на твои вопросы, это, по меньшей мере, некультурно.
Если хочешь знать, то скрипты твои во много раз хуже, чем у того же Пашкелы, который, как я вижу, любит минимализм в коде, но у него он хотя бы в порядке и делает то, что задумывалось...
Вобщем, если спрашиваешь, то слушай, ответ или не спрашивай вообще

geforce
22.12.2008, 01:39
не понятно чего ты от своего скрипта хочешь?

нужно чтоб картинка сохронялась без imagejpeg !как это зделать???

geforce
22.12.2008, 01:45
ты уж если спрашиваешь совета, то хоть не дерзи тем, кто отвечает на твои вопросы, это, по меньшей мере, некультурно.
Если хочешь знать, то скрипты твои во много раз хуже, чем у того же Пашкелы, который, как я вижу, любит минимализм в коде, но у него он хотя бы в порядке и делает то, что задумывалось...
Вобщем, если спрашиваешь, то слушай, ответ или не спрашивай вообще

ты чё вобще офигел! Я ему пишу одно а он мне другое вобще! вот я и ответил! а ты чё вобще по жизни тоже за его касяки отвечаешь??? я php за 3 месяца выучил и всего до конца не знаю и на антике по более тебя сидел так чё мне терь из за таких как ты со всеми кипишевать! я ему ответил точка всё! так что не влазь в разговор!

ntldr
22.12.2008, 01:46
нужно чтоб картинка сохронялась без imagejpeg !как это зделать???
наверное никак..

а чем тебе не нравится imagejpeg?

[dei]
22.12.2008, 01:51
geforce, смотри мой пост выше!

Pashkela
22.12.2008, 01:56
2 [dei]:

твой вариант тоже вряд ли сработает, где ImageDestroy($im); ???

d_x
22.12.2008, 02:00
Зачем imagedestroy?
When the script stop PHP will automatic destory ANY
resources, this goes for aswell for images, thus in the
case the user clicks the stop button, php will automatic
clear the resource.

thus imagedestroy is used to clear the memory BEFORE
the script ends. this is usefull to keep memory usage
DURING the script to an acceptable level.

ss88
22.12.2008, 02:35
ты чё вобще офигел! Я ему пишу одно а он мне другое вобще! вот я и ответил! а ты чё вобще по жизни тоже за его касяки отвечаешь??? я php за 3 месяца выучил и всего до конца не знаю и на антике по более тебя сидел так чё мне терь из за таких как ты со всеми кипишевать! я ему ответил точка всё! так что не влазь в разговор!
не знаю насчет "косяков", но он привел законченный пример работы с ресурсом, в данном случае изображением, что еще нужно, чтобы допереть до того, о чем ты спрашивал? Хотя, по-моему, так толком никто и не понял, о чем. Пускай, он иногда приводит неоптимальные примеры или отвечает не лучше тебя (а то и похуже), когда его вариант оказывается неподходящим или неоптимальным, но, во всяком случае, он не ленится писать эти варианты.
И что с того, что ты на форуме сидел больше меня??? Вообще РАЗРЫВНОЙ аргумент, не лучше, чем "я раньше купил эту книжку, пох**, что я ее не читал".
Насчет кипишевать я шота недопонял, ты бы просто свои вопросы четко задавал ("правильно поставленный вопрос - это 50% ответа").
"Не влазь в разговор", форум - это не приватная беседа в 99% случаев, на то он и форум, что здесь высказываются все.

heretic1990
22.12.2008, 15:59
нужен скрипт по переводу текста с русской раскладки клавиатуры на английскую, и наоборот

m0Hze
22.12.2008, 16:10
В общем есть 2 скрипта.Один с формой,для клиента,второй обработчик.Мне нужно их состыковать так, чтобы action = "" было пусто,тоесть без ссылки на обработчик,но в тоже время,чтоб все ето находилось в 2 файлах.Если ето будет выглядеть так,ето будет работать?
<Формо>

include('обработчик.php')
print <<<HERE
<form method = "POST">
<input type = "text" name = "login">
<input type = "password" name = "password">
<input type = "submit">
</form>
HERE;
echo $result;

(Это пример,так что тут наверно полно ошибок,смамое главное сам метод..)
<обработчик.php>

$login = $_POST('login');
$pass = $_POST('password');
И тут какаято функция...
$result = (ресультат выполнения функции.)

1) Рабочий ли ето метод,и возможно ли так сделать.ТОесть чтобы переменная из инклудного документа, принимала значение формы.
2) Можно ли потом сделать обратную оперцию.После того как обработчик все сделат,пускай он выведет $result, смогу ли я,использовать ету переменную в <Форме>???
Вопрос возможно не совсем коректно построен,но если что я постараюсь объяснить поподробнее.

m0Hze
22.12.2008, 16:16
нужен скрипт по переводу текста с русской раскладки клавиатуры на английскую, и наоборот
Погугли,когда то сам такой находил.Ищи чтото вроде Скрипт транслита. Ну чтото вроде.Либо извращенство, писать код,и указывать чтобы каждая буква заменялась соответствующей.И наоборот.Но ето изврат,если всебуквы в ручную.Должен быть способ и попроще...

groundhog
22.12.2008, 16:17
да возможно, только error_reporting в 0 поставь, чтобы он не кричал при отрисовке формы варнингами, что переменная не установлена.

rushter
22.12.2008, 16:21
нужен скрипт по переводу текста с русской раскладки клавиатуры на английскую, и наоборот
<?
function rustolat($tr)
{
$rus = array("а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л",
"м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы",
"ь", "э", "ю", "я");

$rus_lat = array("a", "b", "v", "g", "d", "e", "e", "zh", "z", "i", "i", "k",
"l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "h", "c", "ch", "sh", "sh",
"'", "y", "'", "e", "yu", "ya");
$trl = strtolower($tr);
return str_replace($rus, $rus_lat, $trl);
}
echo rustolat("Превед");
?>
писал когда только начал узучать php,так что не пинайте.

159932
22.12.2008, 16:25
2 heretic1990 если тебе не конкретно под пыху, а для сайта итд, то советуюю заюзать жабо-версию.. пример тут - http://translit.ru/

2 rushter
думаю удобнее будет с ассоциативным массивом .. типо 'm' = > 'м'

heretic1990
22.12.2008, 16:28
rushter Спасибо, подгоню под себя))

m0Hze
22.12.2008, 17:06
Хм,кто подскажет.Почимуто после добавления инклуда,появляеться просто белая страница :(
Воть код:

<?
include('mail.php');
echo '
<center>
<form method = "POST">
Email:<br><input type = "text"
name = "login">
<br>
Password:<center><input type = "password"
name = "password"></center>
<br>
<input type = "submit">
</form>';
//echo file_get_contents('mail.log');
?>

Чет ту код каряво встал,ну думаю разобраца можно ;)

159932
22.12.2008, 17:14
а что в mail.php ?? можт в конце скрипта там exit стоит :D

groundhog
22.12.2008, 17:16
А файл вообще инклудится? Читается?

m0Hze
22.12.2008, 17:21
Да в том то и дело что не чтоит :)
Собственно скрипт от предатора,чекер мыл на валидность.А вот и сам скрипт:

http://depositfiles.com/files/crvdcpihl
Я его немного передала(в архиве оригинал)чтоб он переменные логин и пасс ббрал из формы,а в остальном я его не трогал.
Там похоже проверка на существование переменных :)

159932
22.12.2008, 17:21
А файл вообще инклудится? Читается?
а енто тут причём ? еси даже не инклудится, то выдаст ошибку макс.

159932
22.12.2008, 17:25
Да в том то и дело что не чтоит :)
Собственно скрипт от предатора,чекер мыл на валидность.А вот и сам скрипт:

http://depositfiles.com/files/crvdcpihl
Я его немного передала(в архиве оригинал)чтоб он переменные логин и пасс ббрал из формы,а в остальном я его не трогал.
Там похоже проверка на существование переменных :)
во первых, мог у автора спросить .. а во вторых, ты в mail.php заглядывал ???
энто чо такое ?
if(mail_check($login,$password))
{
global $error,$server_reply;
$result="OK";
echo $result;
mail_check_log($result);
} else {
$result="FAIL: $error";
if(strlen($server_reply)>1) { $result.=", SERVER REPLY: '$server_reply'";}
echo $result;
mail_check_log($result);
}
конечно буит сначала чекатся ..

m0Hze
22.12.2008, 17:30
Автора нет в асе,я б спросил,не первый день с ним связан.Скрипт толком не рассмотрел.Просто смутило вот ето: if(mail_check..
C самописными функциями дела еще не имел,и побоялся удалять,мало ли :)
Убрал етот код,проблема не решилась.Просматриваю скрипт,исчу :) В общем можно по идее его совсем уменьшеть просто,и переписать под свои нужды,если никто не смогет помочь,так и придеца поступить :D

159932
22.12.2008, 17:39
удалив это кусок, ты там оставил одни ф-ии без вызовоу оных ..
что значит проблемма не решилась ??

Просто смутило вот ето: if(mail_check..
C самописными функциями дела еще не имел,и побоялся удалять,мало лиэнто вызов ф-ии а не функция ..

ты вообще код хоть немного читать умеешь то? я чтото не осознал :D

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

m0Hze
22.12.2008, 17:42
Ех,опять до ночи не спать :(
Я в его коде до завтра буду разбираа,для мня он слишком сложный,будем нарабатывать опыть :)

m0Hze
22.12.2008, 18:03
Я сломал моск.Решил попробывать воть так.Объединил скрипт и формы в один файл.
Форма:

<html>
<head>
<title> Chek </title>
</head>
<body>
<form method = "POST">
<input type = "text"
name = "login">
<br>
<input type = "text"
name = "password">
<br>
<input type = "submit">
</form>
</body>
</html>

И ниже идет сам скрипт который я выше давал.Переменным $login and $password даю значения:

.....
$login = $_POST('login');
$password = $_POST('password');
.....

И ничерта не работает :) Но если пропишу значения у переных точное,тоесть мыло и пасс,то все норм,чекает.А вот так откзываеться.Чтот я совсем спать хочу,моск не работает.Опять наверно бональная ошибка в синтаксисе у меня :(

groundhog
22.12.2008, 18:05
m0Hze, а ты смотрел вообще в логи? Что там появляется при вызове твоего скрипта? Убери error_reporting(0) посмотри какие ошибки валятся... Просто если у тебя выключен репорт ошибок, то любая ошибка, которая прерывает действие скрипта его прервёт, но ты не будешь лицезреть никаких сообщений - только белый экран...

oRb
22.12.2008, 18:05
Я сломал моск.Решил попробывать воть так.Объединил скрипт и формы в один файл.
Форма:

<html>
<head>
<title> Chek </title>
</head>
<body>
<form method = "POST">
<input type = "text"
name = "login">
<br>
<input type = "text"
name = "password">
<br>
<input type = "submit">
</form>
</body>
</html>

И ниже идет сам скрипт который я выше давал.Переменным $login and $password даю значения:

.....
$login = $_POST('login');
$password = $_POST('password');
.....

И ничерта не работает :) Но если пропишу значения у переных точное,тоесть мыло и пасс,то все норм,чекает.А вот так откзываеться.Чтот я совсем спать хочу,моск не работает.Опять наверно бональная ошибка в синтаксисе у меня :(
Надо

.....
$login = $_POST['login'];
$password = $_POST['password'];
.....

m0Hze
22.12.2008, 18:13
Точно,я ж сказал.2 сутки за компом сказываються! спс друган!

DTW
22.12.2008, 22:19
function keypass($pass , $num )
{


$xc = md5($pass) ."\n";
$zs = mt_srand(time()* $num * microtime() ) ;
$de = crypt($x , $zs)."\n";
return $de;

}

echo keypass("megapass" ,"1284756");




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

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

Nightmarе
22.12.2008, 22:35
Дайте плиз php код шифровка\дешифровка текста с открытым ключём. Какой попроще

oRb
22.12.2008, 22:39
Дайте плиз php код шифровка\дешифровка текста с открытым ключём. Какой попроще
http://ru2.php.net/manual/ru/mcrypt.examples.php

FeoЩту
22.12.2008, 22:44
Дайте плиз php код шифровка\дешифровка текста с открытым ключём. Какой попроще
http://ua2.php.net/manual/ru/function.base64-encode.php

Isis
22.12.2008, 23:05
Nightmare, http://ru.wikipedia.org/wiki/RC4
http://ru2.php.net/manual/ru/ref.mcrypt.php

astrologer
23.12.2008, 00:03
Nightmare, http://ru.wikipedia.org/wiki/RC4
http://ru2.php.net/manual/ru/ref.mcrypt.php Дааа, RC4 только с открытым ключом и использовать

Namelles One
23.12.2008, 11:49
ОМФГ, Исис, ты хоть знаешь, что такое открытый ключ? =\\\

http://ru.wikipedia.org/wiki/RSA
http://www.phpclasses.org/browse/package/4121.html

Byrger
23.12.2008, 18:24
Я написал админку для сайта, как её можно запаролить?
Если не трудно дайте примеры

iddqd
23.12.2008, 18:27
http://www.softtime.ru/article/index.php?id_article=27

Chaak
23.12.2008, 18:28
Я написал админку для сайта, как её можно запаролить?
Если не трудно дайте примеры
Если ты ее написал то в чем проблема то? Не написать простую логинку? :)


<?php
if($_GET['pass'] != '1234')
{
header('Location: index.php');
exit('Тебе тут нечего делать :-p');
}

//код админки
?>
Как ты понял пароль передаётся гетом

Byrger
23.12.2008, 18:44
Так отлично а если у меня админку загружать отдельным скриптом...
Допустим:

<?php
if($_GET['pass'] != '1234')
{
header('Location: index.php');
exit('Тебе тут нечего делать :-p');
}else{
require_once("adminka.php");
}
?>

То как поставить проверку скрипту adminka.php
Чтоб нельзя было в него просто зайти...

GreenBear
23.12.2008, 18:49
ну так сделай
else {
define('IN', true);
require...
}
в самом файле if(!defined('IN')){exit;} - как стандарт

Byrger
23.12.2008, 19:06
ну так сделай
else {
define('IN', true);
require...
}
в самом файле if(!defined('IN')){exit;} - как стандарт
Этот способ мне не подойдёт...мне нужно чтоб именно станица adminka.php открывалась...
Там ссылок много...когда по ним щёлкаешь всё сбрасывается...
Может в Куки пасс записать просто?

GreenBear
23.12.2008, 19:19
да тут логики со 2 класса хватит. как хочешь так и делай.

Chaak
23.12.2008, 19:20
Этот способ мне не подойдёт...мне нужно чтоб именно станица adminka.php открывалась...
Там ссылок много...когда по ним щёлкаешь всё сбрасывается...
Может в Куки пасс записать просто?
Ну можно, я предпочитаю сессии:

secure.php:
<?php
@session_start();
if(@$_SESSION['pass'] != '1234')
{
if(isset($_POST['submit']))
{
$_SESSION['pass'] = $_POST['pass'];
header('Location: '.$_SERVER['PHP_SELF']);
}
else
{
?>
<form method='post'><input name='pass'><input name='submit' type='submit'></form>
<?php
}
die();
}
?>

А в файлы куда надо вставить защиту пишешь в самое начало файла:
include('secure.php');

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

P.S код не тестил, писал в браузере

Zircool
23.12.2008, 23:14
Код файла login.php


<?php
define("LOGIN", "demo");
define("PASSWORD", "demo");
define("MODE", TRUE); // TRUE - сравнивать логин и пароль без учёта регистра, FALSE - с учётом
if(isset($_POST['log']) && isset($_POST['passwd']) && is_logined(MODE)) {
setcookie('login', $_POST['log'], time()+31536000);
setcookie('passwd', $_POST['passwd'], time()+31536000);
}
function is_logined($register) {
if($register == false) {
if(($_COOKIE['login'] == LOGIN && $_COOKIE['passwd'] == PASSWORD) || ($_POST['log'] == LOGIN && $_POST['passwd'] == PASSWORD)) {
return true;
}
} else if($register == true) {
if((strcasecmp($_COOKIE['login'],LOGIN)==0&&strcasecmp($_COOKIE['passwd'],PASSWORD)==0) || (strcasecmp($_POST['log'],LOGIN)==0&&strcasecmp($_POST['passwd'],PASSWORD)==0)) {
return true;
}
}
return false;
}
$form=<<<FORM
<html>
<head>
<title>Авторизация</title>
<style>
body
{
padding-left:350px;
font-family:tahoma, verdana, arial;
font-size:11px;
text-align:center;
color:#000000;
}
table
{
border:1px solid #D1D1E1;
margin:50px;
padding:10px;
}
tr
{

text-align:center;
}
input
{
text-align:center;
pargin:2px 0;
padding-right:10px;
padding-left:20px;
border:1px solid #D1D1E1;
background:#ffffff;
padding:2px;
}
</style>
</head>
<body>

<table>
<form method="post">
<tr>
<td>
<br/>
&nbsp; &nbsp; &nbsp; Login:<input type="text" title="Введите Login" name="log" />
<br/>
<br />
Password:<input type="password" title="Введите пароль" name="passwd" />
<br/>
<br />
<center><input type="submit" name="sub" value="&nbsp;&nbsp; &nbsp; &nbsp; Login &nbsp; &nbsp; &nbsp;&nbsp;" /></center>
<br/>
</td>
</tr>
</form>
</table>

</body>
</html>
FORM;

if(is_logined(MODE)) {
require_once('info.php');// страница для которой надо открыть доступ
} else
{
echo $form;
}
?>




Для открытия доступа к другим страницам, вначале страницы пропиши


<?php
require_once('login.php');
if(!is_logined(MODE)) {
exit();
}

?>

.:EnoT:.
23.12.2008, 23:41
господа, имхо вы занимаетесь выковыриванием соплей из жопы.
пример с константами, который привёл GreenBear помоему самый адекватный.
Или ещё как вариант защитить паролем через .htaccess
AuthName "PREVED MEDVED"
AuthType Basic
AuthUserFile /www/.htpasswd
require valid-user

и соответственно файл .htpasswd с логинами и паролями.

Byrger
24.12.2008, 12:23
Фаил .htpasswd я создал и занёс пароли через прогу
Но почемуто пароль не подходит...
Писал так:
C:\adenki.ru\htpasswd.exe -mc .htpasswd user
там вводил пароль :123456

В фойле получилось такое:
user:$apr1$Q/2.....$xkh4ilfOTuG4z7Ym0Jkda1

iddqd
24.12.2008, 12:26
http://www.ifstudio.org/seo/crypt.php