Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Имя файла..

Сообщения:  [1-2] 

 
 автор: cheops   (10.12.2006 в 12:33)   письмо автору
 
   для: CRazych   (10.12.2006 в 01:45)
 

Такие длинные посты лучше прикреплять в виде файла к сообщению.

   
 
 автор: CRazych   (10.12.2006 в 01:45)   письмо автору
 
 

Тут представлен довольно длинный скрипт. Так что если Каму нудно этот пост даже не читайте. Проблема пустяковая, но требует просмотра всего скрипта.

Скрипт выполняет обработку каталога на вывод файлов (далее на закачку в данный каталог файлов) с авторизацией. Так же реализована скачка файлов.

Теперь проблема. При скачивании имя файла неправильно ставится. Нужно его преобразовать в имя файла которое действительно скачивает пользователь.



это тут

            if (is_file($path.$get_file))
            {

                    header("Content-Disposition: attachment; filename=$get_file");
                    $x = fread(fopen($path.$get_file,"rb"), filesize($path.$get_file));
                    echo $x;
                    die();
            }







Сам скрипт

<?php

session_start
();

//конфиг к базе
include "conf.php";
// если сесии нету
if(empty($_SESSION['login']))
{
     
//принимаем данные от формы
    
if ($_POST['login'] & $_POST['pwd'])
    {
        
$_SESSION['login'] = $_POST['login'];
        
$_SESSION['pwd'] = $_POST['pwd'];
    }
    else
    {
        include 
"login.php";
    }
}

//если сессия есть

$login=$_SESSION['login'];
$password=MD5($_SESSION['pwd']);

//проверяем на правельность логин и пароль
        
$link=mysql_connect($mysql_host,$mysql_user,$mysql_pwd) or die("Не магу приконектиться к базе данных"mysql_error());
        
mysql_select_db($mysql_bd$link);
        
$sql "SELECT * FROM users WHERE Login = '$login' AND Passwd = '$password'";
        
$result=mysql_query($sql) or die("Неправельный запрос " mysql_error());
        if (
mysql_num_rows($result) === 1)
        
//если он правельный
            
{
                
//записывает в переменную $path  значение Поля Role из базы с этим юзером
                
$row mysql_fetch_assoc($result);
                
mysql_close($link);
                
$path=$row['Role'];

                function 
treeDir ($path)
                    {
                         if (
substr($path strlen($path) - 1) != '/') {$path .= '/';}
                         
$dirlist = array();
                         if ( 
$handle opendir($path))
                         {
                              while (
false !== ($file readdir($handle )))
                                  {
                                       if (
$file != '..' && $file != '.')
                                           {
                                                if (
is_dir($path.$file)) {$arrDir[] = $file;}
                                             if (
is_file($path.$file)) {$arrFile[] = $file;}
                                           }
                                  }
                             
closedir $handle ) ;
                         }
                        return Array(
'Dir' => $arrDir'File' => $arrFile);
                    }


            if (isset(
$_GET['f']) && !empty($_GET['f']))
            {
                if (
ereg("^([0-9a-zA-ZА-Яа-я]+/?)+(\.[a-zA-Z0-9]{1,3})*$"$_GET['f']))
                {
                    
$get_file $_GET['f'];
                }
                else
                {
                    
$error[] = 'Не верное имя директории';
                }
            }
            else
            {
                
$get_file '';
            }
            
//создание папки
            
if ($_REQUEST['action'] == 'addDir' && !empty($_POST['title']))
            {
                if (
ereg("^[0-9a-zA-Zа-яА-Я_\(\) ]+$"$_POST['title']))
                {
                    if (
file_exists($path.$get_file.'/'.$_POST['title']))
                    {
                        
$error[] = 'Папка с именем &laquo;'.$_POST['title'].'&raquo; уже существует.';
                    }
                    else
                    {
                        
mkdir($path.$get_file.'/'.$_POST['title'], 0777);
                    }
                }
                else
                {
                    
$error[] = 'Не верно задано имя папки.';
                }
            }
            
//конец создания папки
            //принятие файла из формы
            /*
            if ($_REQUEST['action'] == 'addFile' && !empty($_POST['file']))
            {
                if (ereg("^[0-9a-zA-Zа-яА-Я_\(\) ]+$", $_POST['file']))
                {
                    if (file_exists($path.$get_file.'/'.$_POST['file']))
                    {
                        $error[] = 'Фаил с именем &laquo;'.$_POST['file'].'&raquo; уже существует.';
                    }
                    else
                    {
                        mkdir($path.$get_file.'/'.$_POST['title'], 0777);
                    }
                }
                else
                {
                    $error[] = 'Не верно задано имя папки.';
                }
            }
            */


            
if (is_file($path.$get_file))
            {

                    
header("Content-Disposition: attachment; filename=$get_file");
                    
$x fread(fopen($path.$get_file,"rb"), filesize($path.$get_file));
                    echo 
$x;
                    die();
            }
            else
                {
                    
$arrDir treeDir($path.$get_file);

                }

            
?>

            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml">
                <head>
                    <link rel="STYLESHEET" type="text/css" href="style.css">
                     <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
                        <title>Система обмена файлами</title>
                 </head>
                     <body>
<?
    
if (count($error))
        foreach (
$error as $_err)
        {
?>
    <span style="color: #f00;"><?= $_err?></span><br />
<?
        
}
?>

                        <h3 align="center">Обзор папок директории</h3>
                        <div align="left"><a href="help/help.dir.php" target="blank">Справка</a></div>
        <!--Добавление и удаление файлов   -->

                                <?php include "addfiles.php" ?>
                <fieldset>
                    <legend>Просмотр файлов и папок</legend>
                    <table>


            <?php
            
if (!empty($get_file))
            {
            
?>
                <tr>
                    <td><img src="img/1.gif"></td>
                     <td><?php echo '<a href="?f='.urlencode(substr($get_file0strrpos($get_file'/'))).'">На уровень выше</a><br />' ?> </td>
                 </tr>
            <?php
            
}
            
//отображаем папки
            
if (count($arrDir['Dir']))
            {
                foreach (
$arrDir['Dir'] as $_dir)
                {
                
?>
                <tr>
                    <td><img src="img/1.gif"></td>
                     <td><?php echo '<a href="?f='.urlencode($get_file.(substr($get_file, -1) <> '/' && !empty($get_file)  ? '/' '').$_dir).'">'.$_dir.'</a><br />' ?> </td>
                 </tr>
                <?php
                
}
            }
            else
            {
                
?>

                <tr>
                    <td><img src="img/5.gif"></td>
                    <td>Нет папок для отображения</td>
                </tr>
            <?php
            
}

            if (
count($arrDir['File']))
            {
                foreach (
$arrDir['File'] as $_file)
                {
                    
?>
                <tr>
                    <td><img src="img/6.gif"></td>
                    <td><?php echo '<a href="?f='.urlencode($get_file.(substr($get_file, -1) <> '/' && !empty($get_file)  ? '/' '').$_file).'" >'.$_file.'</a><br />'?></td>
                </tr>
                    <?php
                
}
            }
            else
            {
                
?>
                <tr>
                    <td><img src="img/5.gif"></td>
                    <td>Нет файлов для отображения</td>
                </tr>
            <?php
            
}
            
?>
            </table>
            </fieldset>
            <?php

        
}
       else
       {
               if (
$_POST['login'] & $_POST['pwd'])
                   {
                       print 
"<h1 class='accesdin'>Неправельный логин или пароль </h1>";
                       
session_destroy();
                       include 
"login.php";
                }
       }

?>

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования