|
Познающий
Регистрация: 25.10.2009
Сообщений: 54
Провел на форуме: 62271
Репутация:
9
|
|
Как сделать авторизацию на php на файлах?
Нашёл довольно подходящий скрипт :
PHP код:
<?php
#Файл-база пользователей, права доступа 766
$basemember = "data/base_avatar.dat";
#папка, где лежат картинки, права доступа 777 или 733
$papka_images = 'images';
#максимальный размер файла в байтах
$MAX_SIZE = '100000';
#ширина картинки
$fr_width = '120';
#высота картинки
$fr_height = '120';
// это функция уменьшает картинку
function small_image($path,$w_new,$h_new){
$file = @getimagesize ($path);
$w = $file[0]; $h = $file[1];
if($file[2]=='2'){ $old = @imageCreateFromJpeg($path); }
if($file[2]=='3'){ $old = @imageCreateFromPng($path); }
$new = @imageCreate($w_new, $h_new);
@imageCopyResized($new, $old, 0, 0, 0, 0, $w_new, $h_new, $w, $h);
if($file[2]=='2'){ @imageJpeg($new, $path); }
if($file[2]=='3'){ @imagePng($new, $path); }
@imageDestroy($old);
@imageDestroy($new);
return true;
}
// эта функция добавляет картинку
function add_images($arr){
global $MAX_SIZE,$basemember,$papka_images,$fr_width,$fr_height,$c_name,$c_ppass;
$ffile = $papka_images."/".$arr['file_name']['name'];
if(@file_exists($ffile)) {return print "\n<br><font class='forums'><b>Error:</b></font> файл <b>".$ffile."</b> уже существует...<br>\n";}
$bibl_ext = @dirname($_SERVER['SCRIPT_FILENAME']).'/extensions/php_gd.dll';
if(!extension_loaded('gd') and is_file($bibl_ext)){ dl("extensions/php_gd.dll");}
if(!extension_loaded('gd')){ return print "Нет файла библиотеки ".$bibl_ext;}
if($arr[file_name][name]!=''){
if(preg_match("~[^a-zA-Z0-9_\.-]~",$arr['file_name']['name'])){return print "\n<br><font class='forums'><b>Error:</b></font> недопустимые символы или пробелы в имени: <b>".$arr['file_name']['name']."</b><br>\n"; }
$type_file = $arr[file_name][type];
if(!preg_match("/jpeg|png/i",$type_file)){ return print "\n<br><font class='forums'><b>Error:</b></font> формат <b></b> недопустим...<br>\n";}
$general = @file($base_images);
for ($i = count($general)-1; $i >= 0; $i--) {
list($name_f,$size_f,$data_f)=explode("::", $general[$i]);
if($arr['file_name']['name']==$name_f){return print "\n<br><font class='forums'><b>Error:</b></font> файл <b>".$name_f."</b> уже существует...<br>\n"; }
}
$tmp = str_replace("\\","/",getcwd())."/".$papka_images;
if(@is_writeable($tmp)){
$fname = $tmp.'/'.$arr['file_name']['name'];
if(move_uploaded_file($arr['file_name']['tmp_name'],$fname)){
$type_file = $arr['file_name']['type'];
$name_file = $arr['file_name']['name'];
$size_file = $arr['file_name']['size'];
}
}
else{return print "\n<br><font class='forums'><b>Error:</b></font> на папку <b>".$tmp."</b> нет доступа на запись...<br>\n"; }
}
else{return print "\n<br><font class='forums'><b>Error:</b></font> <b>введите</b> имя файла в форму...<br>\n"; }
if(strlen($name_file)=='0'){return print "\n<br><font class='forums'><b>Error:</b></font> <b>размер</b> файла превышает допустимый ".$MAX_SIZE." байт <br>\n"; }
if(!file_exists($fname)) {return print "\n<br><font class='forums'><b>Error:</b></font> файл <b>".$fname."</b> не найден...<br>\n";}
small_image($fname,$fr_width,$fr_height);
$general = @file($basemember);
$lines = count($general);
$fp = @fopen($basemember, 'w');
for ( $i = 0; $i < $lines; $i++){
list($name_t,$ppass_t,$avatar_t)=explode('::', $general[$i]);
if($c_name==$name_t and $c_ppass==$ppass_t){
if($avatar_t!=''){$avatar_t=$papka_images."/".$avatar_t; @unlink ($avatar_t);}
@fwrite ($fp,"$name_t::$ppass_t::$name_file::\n");
}
else{@fwrite ($fp,$general[$i]);}
}
@fclose ($fp);
return print "<b>\n<br><font class='forums'>Файл:</font> ".$name_file." </b>(".$size_file." байт) успешно загружен<br>\n";
}
// эта функция печатает форму
function print_form(){
global $session_form,$MAX_SIZE,$c_name,$c_ppass,$fr_width,$fr_height,$dont_registr;
$MAX_SIZE_KB = ceil($MAX_SIZE/1000);
$aaa="
<form ENCTYPE='multipart/form-data' ACTION='set.php' METHOD='POST'>
<table border='0' cellpadding='2' cellspacing='2'><tr><td>".$session_form."
<input TYPE='hidden' name='MAX_FILE_SIZE' value='".$MAX_SIZE."'>";
if($dont_registr == 'yes'){
$aaa .= "Логин: <input type='text' name='name' value='".$c_name."'>
<br>Пароль: <input type='password' name='ppass' value='".$c_ppass."'>\n";
}
else{
$aaa .= "<br><input type='file' name='file_name' size='35'>\n";
}
$aaa .= "<input type='submit' value='добавить'>
</td></tr></table>
</form>\n";
return $aaa;
}
//работа с сессией
if(isset($HTTP_GET_VARS)) {foreach($HTTP_GET_VARS as $key => $value ) {$$key=$value;}}
if(isset($HTTP_POST_VARS)){foreach($HTTP_POST_VARS as $key => $value ){$$key=$value;}}
unset($c_ppass,$c_name);
if ( isset ($_COOKIE)) { foreach ($_COOKIE as $key => $value ) {$$key=$value;}}
if ($c_zvet=='' or !isset($c_zvet)){ setcookie('c_zvet','Стандарт',time()+33333333); }
@session_name('SID');
@session_start();
if ( isset ($_SESSION)) { foreach ($_SESSION as $key => $value ){ $$key=$value;}}
if($c_zvet!=''){
@ini_alter('session.use_trans_sid','0');
$SID=@session_id();
@session_destroy();
@setcookie('SID', $SID, time()+33333333);
}
else{
@ini_alter('session.use_cookies','0');
@session_destroy();
@session_id(@md5(@uniqid(@rand())));
$SID=@session_id();
if ( ini_get ('session.use_trans_sid')=='0'){
$session_form .="\n<input type='hidden' name='SID' value='".$SID."'>";
$session_link .="&SID=".$SID;
}
}
@session_register('c_name','c_ppass');
// вставляем верх странички, меняйте его под себя...
include("templates/index_top.htm");
// если кликнули закрыть сессию, можно убрать эту строку
if($sess=='close'){@session_unset(); @session_destroy();}
// если пришли данные из формы...
if($name!='' and $ppass!=''){ $c_name = $name;$c_ppass = $ppass; }
// если прищла картинка из формы
if(isset($HTTP_POST_FILES['file_name']['name'])){add_images($HTTP_POST_FILES); }
// если нет, значит человек регистрируется или авторизируется
elseif($name!='' and $ppass!=''){
$general = @file($basemember);
$lines = count($general);
$fp = @fopen($basemember, 'w');
for ( $i = 0; $i <= $lines; $i++ ){
list($name_t,$ppass_t,$avatar_t)=explode('::', $general[$i]);
if($name==$name_t and $ppass==$ppass_t and $name_t!=''){@fwrite ($fp,$general[$i]); $old='yes'; }
elseif($i==$lines and $old!='yes'){@fwrite ($fp,"$name::$ppass::::\n");}
else{@fwrite ($fp,$general[$i]);}
}
@fclose ($fp);
}
// проверяем есть ли человек в нашей базе, если нет то говорим что $dont_registr = 'yes'
$general = @file($basemember);
$lines = count($general);
for ( $i = 0; $i <= $lines; $i++ ){
list($name_t,$ppass_t,$avatar_t)=explode('::', $general[$i]);
if($c_name==$name_t and $c_ppass==$ppass_t and $name_t!=''){ break; }
if($i==$lines){ $dont_registr = 'yes'; }
}
// если человека в базе нет печатаем форму и предлагаем авторизацию
if($dont_registr == 'yes'){
print "<p align='justify'></p><p align='justify'>Авторизация - регистрация</p>";
print print_form();
}
// если он есть в базе приходим сюда
else{
if($avatar_t!='' and $del!='yes'){
$avatar = "<img src=".$papka_images."/".$avatar_t.">";
$message ="У Вас <font class=forums><b>Есть</b></font> аватар (<b>".$avatar_t."</b>). Вы можете его менять, удалять.";
}
else {$avatar =''; $message ="У Вас <font class=forums><b>Нет</b></font> аватара. Вы можете его добавить.";}
$MAX_SIZE_KB = ceil($MAX_SIZE/1000);
$message .= "<p align='justify'> Допустимы два формата Jpeg и Png - заменяюший формат Gif. Закачивайте файл размером не более <b>".$MAX_SIZE_KB."kб</b>. Размер картинки будет сохранен в рамках ".$fr_width."x".$fr_height." пикселей.<br><br>Для более качественной его передачи, желательно привести вашу картинку к данному размеру ".$fr_width."x".$fr_height." пикселей.</p>\n";
if($avatar_t!='' and $del!='yes'){$message .="<p align='justify'>Для того, чтобы добавить картинку с тем же именем, что уже существует, Вам надо сначала Аватар удалить.<br><br> Для удаления аватара, <a href='set.php?del=yes".$session_link."'>клинете здесь...</a></p>\n"; }
// если пользователь удаляет аватар то мы здесь
if($del=='yes'){
$general = @file($basemember);
$lines = count($general);
$fp = @fopen($basemember, 'w');
for ( $i = 0; $i < $lines; $i++){
list($name_t,$ppass_t,$avatar_t)=explode('::', $general[$i]);
if($c_name==$name_t and $c_ppass==$ppass_t){
if($avatar_t!=''){$avatar_t=$papka_images."/".$avatar_t; @unlink ($avatar_t);}
@fwrite ($fp,"$name_t::$ppass_t::::\n");
}
else{@fwrite ($fp,$general[$i]);}
}
@fclose ($fp);
print "\n<br><b>Аватар</b> удален...<br>\n";
}
print "<table width='600' border='0' cellpadding='5' cellspacing='5'><tr><td valign='top'>$avatar</td><td align='justify'>$message</td></tr></table>\n";
print print_form();
}
// это просто ссылки, типа ваших страничек
print "<a href='set.php?act=registr1'>Кликайте здесь</a>
<a href='set.php?act=registr2'>И тут тоже...</a>
<a href='set.php?sess=close'>Закрыть сессию</a>";
// вставаляем нижний шаблон
include("templates/index_end.htm");
?>
Но мне не надо печенек и даже сессий...Надо просто рег\вход и после входа передать данные в чат: ник,статус, права
Убирал лишнее сам --- после нажатия добавить нифига не происходит(
Последний раз редактировалось N2kroot; 20.12.2009 в 19:21..
|