Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2009, 22:02   #11
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Хорошо

В общем , немного переделал для себя , и вот что получилось )
PHP код:
<?php
session_start
();
$login $_SESSION["username"];
$file $_GET['file'];
if (empty(
$file)){$error1 "<li>&nbsp&nbspНе указано имя файла.&nbsp&nbsp<br>" ;}
if (!
file_exists('files/'.$file)) 
{
$error2 "<li>&nbsp;&nbspФайла <font color=#00ff00>".$file."</font> не существует.&nbsp&nbsp<br>";}
if (!isset(
$_SESSION["username"]) or empty($_SESSION[username])) {$error3 "<li>&nbsp&nbspНеобходима <a href=index.php>авторизация</a>.&nbsp&nbsp<br>";}
if (
$_SESSION['level'] < 2) {$error4 "<li>&nbsp&nbspНе хватает прав ".$login."&nbsp&nbsp<br>";}

if (!empty(
$error1) or !empty($error2) or !empty($error3) or !empty($error4))
{
$error "<ul><font color=#ff0000>При запросе файла возникли следующие ошибки :</font>&nbsp&nbsp<font color=#b8a16f>".$error1."".$error2."".$error3."".$error4."</font></ul>";}
if ((empty(
$error)) ){
header('Content-type: text/plain');    
header('Content-Disposition: attachment; filename="'.$file.'"');
echo 
file_get_contents('files/'.$file);}
else {
?>
<!doctype html public "-//w3c//dtd html 3.2//en">
<html>
<head>
<title>Получить файл</title>
</head>
<body bgcolor="#000000" text="#808080" link="#ff8040" vlink="ff8000" alink="#ff0000">
<center>
<!-- HERE -->
<table  width="*" border="0" cellspacing="1" cellpadding="0" bordercolor="634225">
    <tr >
        <!-- Строка 1 ; столбец 1 -->
        <td background="pt6.gif">
  <b><font color=#faa73d>&nbsp; Ошибка !</font></b>
        </td>
    </tr >
    <tr>
        <!-- Строка 2 ; столбец 1 -->
        <td bgcolor="644419">
<?
echo $error;
?> 

        </td>
    </tr>
    <tr>
        <!-- Строка 3 ; столбец 1 -->
        <td height="12" background="pt6.gif"><img src="pointer.gif" width="1" height="1" alt=""></td>
    </tr>
</table>
</center>
</body>

</html>

<?
}
?>
Может чтонибудь не так , или есть слабые стороны) А вродебы работает )

Пришла светлая мысль , нужно ещё к ссылке для авторизации прибавлять страничку с которой пришли , и при удачном log-in'е перенаправлять обратно ) Только вот какбы это сделать удобнее) получается если пользователь указал рабочую ссылку но сессия ещё не была открыта в текущем сеансе , то он будет перенаправлен на страничку ввода логина/пароля и при том же удачном log-in'е пользователю будет выдан файл "напрямую" )

Последний раз редактировалось Lime; 31.05.2009 в 22:11.
Lime вне форума Ответить с цитированием
Старый 31.05.2009, 22:10   #12
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Рекомендации:
Код:
($_SESSION["username"]) or empty($_SESSION[username]))
сделать все под один стандарт, например $_SESSION['username']

Код:
$error1."".$error2."".$error3."".$error4
не обязательно пустые строки, можно сделать так:
Код:
$error1.$error2.$error3.$error4
ну это так...мелочи
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 22:16   #13
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос

Цитата:
Сообщение от iankov Посмотреть сообщение
Рекомендации:
Код:
($_SESSION["username"]) or empty($_SESSION[username]))
сделать все под один стандарт, например $_SESSION['username']

Код:
$error1."".$error2."".$error3."".$error4
не обязательно пустые строки, можно сделать так:
Код:
$error1.$error2.$error3.$error4
ну это так...мелочи
Спасибо На счёт стрингов я просто не знал как будет правильно соединить только переменные ) сделал чтобы работало ) Со вчера изучаю php
Также как и "..." и '...' , не понял пока ещё различий (( По этому пишу то что быстрее набирается в конкретных случаях , а что лучше ?
Lime вне форума Ответить с цитированием
Старый 31.05.2009, 22:16   #14
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

$_SERVER['HTTP_REFERER']
вот эта глобальная переменная содержит страничку, с которой мы пришли.
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 22:19   #15
iankov
Форумчанин
 
Регистрация: 04.01.2009
Сообщений: 188
По умолчанию

Все что находится в двойных кавычках, парсится php интерпретатором, т.е.
$i = 'da da da';
echo "$i"; выведет da da da
А в одинарных кавычках не парсит, т.е. код
$i = 'da da da';
echo '$i'; выведет $i
iankov вне форума Ответить с цитированием
Старый 31.05.2009, 22:22   #16
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Вопрос

Цитата:
Сообщение от iankov Посмотреть сообщение
$_SERVER['HTTP_REFERER']
вот эта глобальная переменная содержит страничку, с которой мы пришли.
А если мы пришли с другово сайта ? на login.php ? Мне бы узнать сраничку со скриптом getfile.php + данные GET запроса вписать в ссылку к mysite.ru/login.php?do=redirect&adress=mysite .ru/getfile.php?file=1.txt

чтобы login.php перенаправил меня на mysite.ru/getfile.php?file=1.txt
Из расчёта на перспективу , редирект будет не на единственную страничку, а на других страницах требующих авторизации будут аналогичные ссылки с возвратом

С парсингом понятно , спасибо , буду знать

Последний раз редактировалось Lime; 31.05.2009 в 22:26.
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить доступ к файлу yngwie Win Api 1 08.04.2009 14:11
Огран. доступ к файлу Манжосов Денис :) Помощь студентам 6 15.07.2008 11:33
Общий доступ к файлу с макросам в Эксель grenles Microsoft Office Excel 11 30.06.2008 16:38
Закрыть доступ к файлу *.db Антон Шестаков БД в Delphi 6 05.01.2008 09:28
Закрыть доступ для всех процессов к файлу Sanek_ntsk Общие вопросы Delphi 6 04.12.2007 16:26