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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: некорректная запись картинки
 
 автор: Василий   (06.01.2012 в 17:11)   письмо автору
 
 

<?php 
 
// функция превода текста с кириллицы в траскрипт
  
function encodestring($st)
  {
    
// Сначала заменяем "односимвольные" фонемы.
    
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
    
"abvgdeeziyklmnoprstufh'iei");
    
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
    
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
    
// Затем - "многосимвольные".
    
$st=strtr($st
                    array(
                        
"ж"=>"zh""ц"=>"ts""ч"=>"ch""ш"=>"sh"
                        
"щ"=>"shch","ь"=>"""ю"=>"yu""я"=>"ya",
                        
"Ж"=>"ZH""Ц"=>"TS""Ч"=>"CH""Ш"=>"SH"
                        
"Щ"=>"SHCH","Ь"=>"""Ю"=>"YU""Я"=>"YA",
                        
"ї"=>"i""Ї"=>"Yi""є"=>"ie""Є"=>"Ye"
                        
)
             );
    
// Возвращаем результат.
    
return $st;
  }

/**  
 * Функция загрузки файла (аплоадер)  
 * @param  int    $max_file_size    максимальный размер файла в килобайтах  
 * @param  array  $valid_extensions массив допустимых расширений  
 * @param  string $upload_dir       директория загрузки  
 * @return array                    сообщение о ходе выполнения  
 *  
 * @author IT studio IRBIS-team (www.irbis-team.com)  
 * @copyright © 2009 IRBIS-team   
 */  
    
function uploadHandle($max_file_size 100$valid_extensions = array(), $upload_dir '.')  
    {  
      
        
$error null;  
        
$info  null;  
        
$max_file_size *= 1024;  

        if (
$_FILES['userfile']['error'] === UPLOAD_ERR_OK)  
        {  
            
// проверяем расширение файла  
            
$file_extension pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);  
            if (
in_array($file_extension$valid_extensions))  
            {  
                
// проверяем размер файла  
                
if ($_FILES['userfile']['size'] < $max_file_size)  
                {  
                
                
$_FILES['userfile']['name'] = encodestring ($_FILES['userfile']['name']);
                
                
                
$destination ="img/logo_pu/" $_FILES['userfile']['name']; 
      
                    if (
move_uploaded_file($_FILES['userfile']['tmp_name'], $destination))  
                        
$info 'Файл успешно загружен';  
                    else  
                        
$error 'Не удалось загрузить файл';  
                }   
                else  
                    
$error 'Размер файла больше допустимого';  
            }   
            else  
                
$error 'У файла недопустимое расширение';  
        }   
        else  
        {  
            
// массив ошибок  
            
$error_values = array( 

                
UPLOAD_ERR_INI_SIZE   => 
'Размер файла больше разрешенного директивой upload_max_filesize в php.ini',  
                
UPLOAD_ERR_FORM_SIZE  =>
 
'Размер файла превышает указанное значение в MAX_FILE_SIZE',                            
                
UPLOAD_ERR_PARTIAL    => 'Файл был загружен только частично',   
                
UPLOAD_ERR_NO_FILE    => 'Не был выбран файл для загрузки',   
                
UPLOAD_ERR_NO_TMP_DIR => 'Не найдена папка для временных файлов',   
                
UPLOAD_ERR_CANT_WRITE => 'Ошибка записи файла на диск' 

                                  
);  
      
            
$error_code $_FILES['userfile']['error'];  
      
            if (!empty(
$error_values[$error_code]))  
                
$error $error_values[$error_code];  
            else  
                
$error 'Случилось что-то непонятное';  
        }  
      
        return array(
'info' => $info'error' => $error);  
    }  
      
/////////////////////////////////////////////////////////////////////      
    
$extensions = array('jpg''jpeg''png''gif');  
    
$upload_dir 'images';  
      
    
// Запускаем функцию  
    
if(!empty($_POST['upload_submit'])) 
    {      
        
$message uploadHandle(200$extensions$upload_dir);  
    
        
// Выводим сообщение  
        
echo $message['error'] ? "<p class='mistake'>".$message['error']."</p>" 
"<p class='nomistake'>".$message['info']."</p>";  
    } 
?>  

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

  Ответить  
 
 автор: Slo_Nik   (06.01.2012 в 17:21)   письмо автору
 
   для: Василий   (06.01.2012 в 17:11)
 

Повторю Вам последний раз.
Делайте поэтапную проверку данных
Создали переменную - вывод в браузер, проверка
Обработали переменную - вывод в браузер, проверка
Грузите файл - вывод в браузер дампа, проверка.....
и так далее и тому подобное
посмотрите на имя переменной после обработки функцией encodestring()
error_reporting() где ?
И прекращайте плодить однотипные темы. этот вопрос Вы уже подняли в предыдущей, зачем две одинаковые темы?
Из ни откуда скрин браться не может.
Глядя на этот код всё должно работать отлично.
Обратите внимание на директории для загрузки, в двух местах разные данные

  Ответить  
 
 автор: Василий   (06.01.2012 в 17:25)   письмо автору
 
   для: Slo_Nik   (06.01.2012 в 17:21)
 

так берется же скрин. не я же его рисую

  Ответить  
 
 автор: Василий   (06.01.2012 в 17:28)   письмо автору
 
   для: Василий   (06.01.2012 в 17:25)
 

прошу вас наглядно показать как делать
Создали переменную - вывод в браузер, проверка
Обработали переменную - вывод в браузер, проверка
Грузите файл - вывод в браузер дампа, проверка.....

  Ответить  
 
 автор: Василий   (06.01.2012 в 17:37)   письмо автору
 
   для: Василий   (06.01.2012 в 17:28)
 

вот вам

<?php // upload.php
echo <<<_END
<html><head><title>PHP Form Upload</title></head><body>
<form method='post' action='upload.php' enctype='multipart/form-data'>
Select File: <input type='file' name='filename' size='10' />
<input type='submit' value='Upload' />
</form>
_END;

if (
$_FILES)
{
    
$name $_FILES['filename']['name'];
    
move_uploaded_file($_FILES['filename']['tmp_name'], $name);
    echo 
"Uploaded image '$name'<br /><img src='$name' />";
}

echo 
"</body></html>";
?>


сохраните как upload.php
и загрузите файл, написанный кирилицей.
сами все увидите

  Ответить  
 
 автор: Slo_Nik   (06.01.2012 в 17:54)   письмо автору
 
   для: Василий   (06.01.2012 в 17:37)
 

Нет. это Вам надо над этим скриптом сидеть и думать, а мне он на фиг не нужен.

  Ответить  
 
 автор: Slo_Nik   (06.01.2012 в 17:53)   письмо автору
 
   для: Василий   (06.01.2012 в 17:28)
 

[поправлено модератором]

  Ответить  
 
 автор: Василий   (06.01.2012 в 18:13)   письмо автору
 
   для: Slo_Nik   (06.01.2012 в 17:53)
 

а что изменится, если вы узнаете сколько мне лет?
Если не имеет смысла, то зачем спрашивать?
Я Вам конкретные вопросы задаю уже не в первый день и все никак не могу получить ответа

  Ответить  
Rambler's Top100
вверх

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