Помогите с работой с изображениями в среде php

Discussion in 'PHP' started by eregis, 26 Feb 2011.

  1. eregis

    eregis Member

    Joined:
    15 Jul 2010
    Messages:
    104
    Likes Received:
    5
    Reputations:
    -5
    Помогите с работой с изображениями в среде php (проблему решил, модер закрой)

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

    HTML:
    <form action="reg.php?do=edit_account" method="post"><br>
    			<table width="95%" align="center" cellpadding="4" cellspacing="0" border="0" class="gf">
    			<tr><td colspan="2" align="center" class="nav_title">Редактирование профиля</td></tr>
    			<tr><td align="right">Ваше имя:</td><td><input type="text" disabled readonly name="username" value="<? echo $_SESSION["username"]; ?>" size="30"></td></tr>
    			<tr><td align="right">Ваш E-Mail:</td><td><input type="text" name="emaila" value="<?php echo $email ?>" size="30"></td></tr>
    			<tr><td align="right">Показывать данные на стене:</td><td><input type="checkbox" name="info" value="open"> Да</td></tr>
    			<tr><td align="right">Загрузить аватар:</td><td><input type="checkbox" name="upload2">  Да</td></tr>
    			<tr><td align="right">Выберите аватар:</td><td><input type="file" name="userfile"></td></tr>
    			<tr><td>&nbsp;</td><td>Разрешается использовать картинки:<br>- расширением только gif,png,jpg,jpeg<br>- размером менее 30 Кб</td></tr>
    			<tr><td>&nbsp;</td><td><input type="submit" name="ad" value="Изменить данные"></td></tr>
    			</table>
    			</form>
    
    PHP:
    if(isset($_POST['upload2']))
                {
                    
    /*создаем переменные для загруженного файла из глобального массива FILES*/
                
    $userfile $_FILES['userfile']['name'];
                
    $file_size $_FILES['userfile']['size'];
                
    $file_temp $_FILES['userfile']['tmp_name'];
                
    $file_err $_FILES['userfile']['error'];
                
    $path 'avatars/';
                
    // генерация нового имени файла
                
    $randomizer rand(00009999);
                
    $file_name $randomizer.$userfile;
                
    //расчет длины файла
                
    $file_type $userfile;
                
    $file_type_length strlen($file_type) - 3;
                
    $file_type substr($file_type$file_type_length);
                
    $max_file_size="30720";//максимальный размер файла
                
    $fotoksize=round($file_size/10.24)/100;
                
    $fotomax=round($max_file_size/10.24)/100;
                if (
    $fotoksize>$fotomax) {exit("<p>Вы превысили допустимый размер аватара!<BR><B>Максимально допустимый</B> размер аватара: <B>$fotomax </B>Кб.<BR> <B>Вы пытаетесь</B> загрузить изображение: <B>$fotoksize</B> Кб!</p>");}
                
    $size=getimagesize($_FILES['userfile']['tmp_name']);
                if (
    $size[0]>150 or $size[1]>150) {exit("<p>Не допустимые габариты аватара. Допустимо лишь 150 х 150 px!</p>");}
                
    $file_type strtolower($file_type); // преобразуем символы к нижнему регистру
                /*перечисляем поддерживаемые типы файлов*/
                
    $files = array();
                
    $files[] = 'jpeg';
                
    $files[] = 'jpg';
                
    $files[] = 'gif';
                
    $files[] = 'png';
                
    $key array_search($file_type$files);
                
                
    // Проверить на наличие ошибок 
                
    $error_count count($file_error);
                if(
    $error_count 0
                {
                    for(
    $i 0$i <= $error_count; ++$i
                    {
                        echo 
    $_FILES['userfile']['error'][$i];
                    }
                }
                else 
    //если ошибок нет
                
    {
                    if(!empty(
    $userfile))//если поле не пустое
                    
    {    
                            
    /*проверка существования одноименного файла*/
                            
    if (file_exists("$path/$userfile")) {exit("<p class='error'>Файл с таким именем уже существует на сервере! Измените имя на другое!<p>");}
                            else
                            {
                                if(
    move_uploaded_file($file_temp''.$path.'' .$file_name.''))//загружаем файл
                                
    {
                                    echo 
    '<p>Загрузка аватарки успешно завершена!</p>';
                                    echo 
    '<p><b>Информация о загруженном аватаре:</b></p><ul><li>Имя загруженного файла: ' .$userfile'</li><li>Новое имя файла: ' .$file_name'</li><li>Тип файла: ' .$file_type.'</li><li>Размер файла: ' .$file_size'</li><li>Путь к временному файлу: ' .$file_temp'</li><li>Ошибок в файле: ' $file_err'</li></ul>';
                                } 
                                else{ echo 
    '<h3>Ошибка загрузки!</h3>'; }    
                            }
                    }
                    
                
                
                    
    mysql_query("UPDATE users SET email='$emaila', avatar='$file_name' WHERE username='{$_SESSION["username"]}'");
                    echo 
    "<p class='error'>Информация изменена!</p>";
                    echo 
    "<html><head><meta http-equiv='Refresh' content='0; URL=reg.php?do=editaccount'></head></html>";
                }
                }
    Но чтобы я не изменял, всеравно не грузится и в базу ничего не заносится. Помогите разобратся с этой проблемой, или если существуют какие то ещо подобные скрипты дайте ссылочку.
    В гугле нашол только 3 различных примера и не один не работает.

    //Gifts: исправил разметку
     
    #1 eregis, 26 Feb 2011
    Last edited by a moderator: 26 Feb 2011
  2. FindeR

    FindeR Elder - Старейшина

    Joined:
    15 Nov 2006
    Messages:
    623
    Likes Received:
    138
    Reputations:
    20
    Особо не рассматривал код, но беглый осмотр показал, что нужно

    <form action="reg.php?do=edit_account" method="post">

    заменить на

    <form action="reg.php?do=edit_account" enctype="multipart/form-data" method="post">
     
    1 person likes this.
  3. mojaev

    mojaev Member

    Joined:
    3 Jan 2009
    Messages:
    15
    Likes Received:
    22
    Reputations:
    0
    Не поможет...
    Как оно у тебя вообще работало? тут 100500 ошибок...
    Стукни в аську 495811, помогу...
     
    #3 mojaev, 26 Feb 2011
    Last edited: 26 Feb 2011