2012-04-05 3 views
-2

Я действительно искал весь сайт и пытался использовать функцию GD getimagesize, но не надеялся , пожалуйста, я хочу установить минимальную и максимальную ширину и высоту изображения при загрузке. затем показать ошибку; здесь исходный код:Определить максимальную и минимальную ширину изображения при загрузке

<?php 
$page = "user_editprofile_photo"; 
include "header.php"; 
$task = (isset($_POST['task']) ? $_POST['task'] : NULL); 
// CHECK FOR ADMIN ALLOWANCE OF PHOTO 
if(!$user->level_info['level_photo_allow']) 
{ 
    header("Location: user_home.php"); 
    exit(); 
} 
// SET ERROR VARIABLES 
$is_error = 0; 
// DELETE PHOTO 
if($task == "remove") 
{ 
    $user->user_photo_delete(); 
    $user->user_lastupdate(); 
    exit(); 
} 
// UPLOAD PHOTO 
if($task == "upload") 
{ 
    $user->user_photo_upload("photo"); 
    $is_error = $user->is_error; 
    if(!$is_error) 
    { 
    // SAVE LAST UPDATE DATE 
    $user->user_lastupdate(); 
    // DETERMINE SIZE OF THUMBNAIL TO SHOW IN ACTION 
    $photo_width = $misc->photo_size($user->user_photo(), "100", "100", "w"); 
    $photo_height = $misc->photo_size($user->user_photo(), "100", "100", "h"); 

    // INSERT ACTION 
    $action_media = Array(Array('media_link'=>$url->url_create('profile', $user->user_info['user_username']), 'media_path'=>$user->user_photo(), 'media_width'=>$photo_width, 'media_height'=>$photo_height)); 
    $actions->actions_add($user, "editphoto", Array($user->user_info['user_username'], $user->user_displayname), $action_media, 999999999, TRUE, "user", $user->user_info['user_id'], $user->user_info['user_privacy']); 
    } 
} 

// GET TABS TO DISPLAY ON TOP MENU 
$field = new se_field("profile", $user->profile_info); 
$field->cat_list(0, 0, 0, "profilecat_id='{$user->user_info['user_profilecat_id']}'"); 
$cat_array = $field->subcats; 


// ASSIGN VARIABLES AND INCLUDE FOOTER 
$smarty->assign('is_error', $is_error); 
$smarty->assign('cats', $cat_array); 
include "footer.php"; 
?> 

здесь то, что я добавлю:

if($task == "upload") 
$photo=$user->user_photo(); 
{ 
list($img_width, $img_height, $img_type, $attrs)=getimagesize($photo); 
    if($img_width >= 193 && $img_height >= 290) 
    $user->user_photo_upload("photo"); 
    $is_error = $user->is_error; 
    if(!$is_error) 

1-Таким образом:

if($task == "upload")$photo = $user->user_photo(); 
    { $user->user_photo_upload("photo"); 

изображение не будет загружено на все .....

2 таким образом:

if($task == "upload"){ 
$user->user_photo_upload("photo"); 
$photo = $user->user_photo(); 

Без эффекта .. и он загружает даже изображение 16 пикселей. Спасибо Пожалуйста, если вы можете помочь. Я буду так благодарен.

+2

Вы можете попробовать форматировать этот код, чтобы помочь нам помочь! – gosukiwi

+0

Я пробовал, но редактор ... всегда дает мне ошибку, не соответствующую нашим правилам. – Sanshiro

ответ

2

Похоже, что ваш if($task == "upload") не совсем охватывает то, что вы хотите. Если вы посмотрите на код в несколько более удобной для восприятия человеком формате:

<?php 
$task = (isset($_POST['task']) ? $_POST['task'] : NULL); 
$is_error = 0; 
if($task == "remove") 
{ 
    $user->user_photo_delete(); 
    $user->user_lastupdate(); 
    exit(); 

} 
if($task == "upload") $photo = $user->user_photo(); 
{ 
    list($img_width, $img_height, $img_type, $attrs) = getimagesize($photo); 
    if($img_width >= 193 && $img_height >= 290) $user->user_photo_upload("photo"); 
    $is_error = $user->is_error; 
    if(!$is_error) 
    { 
     $user->user_lastupdate(); 
     $photo_width = $misc->photo_size($user->user_photo(), "100", "100", "w"); 
     $photo_height = $misc->photo_size($user->user_photo(), "100", "100", "h"); 
     $action_media = array(array('media_link' => $url->url_create('profile', $user->user_info['user_username']), 'media_path' => $user->user_photo(), 'media_width' => $photo_width, 'media_height' => $photo_height)); 
     $actions->actions_add($user, "editphoto", array($user->user_info['user_username'], $user->user_displayname), $action_media, 999999999, TRUE, "user", $user->user_info['user_id'], $user->user_info['user_privacy']); 

    } 

} 
$field = new se_field("profile", $user->profile_info); 
$field->cat_list(0, 0, 0, "profilecat_id='{$user->user_info['user_profilecat_id']}'"); 
$cat_array = $field->subcats; 
$smarty->assign('is_error', $is_error); 
$smarty->assign('cats', $cat_array); 
include "footer.php"; 
?> 

Вы можете видеть, что $photo = $user->user_photo(); должен, вероятно, пойти вместо фигурные скобки. Он всегда будет выполнять код, начинающийся с list() каждый раз.

Я не знаю, если это проблема, но, похоже, у вас есть правильная идея. Я не знаю, что $photo = $user->user_photo(); возвращается, но файл хранится в $_FILES['image']['tmp_name'] (если ваше имя вход имеет тип и имя файла изображения), и вы можете получить информацию FileSize с getimagesize($_FILES['image']['tmp_name']) как описано на http://www.php.net/manual/en/function.move-uploaded-file.php

Убедитесь, что ваш тэг формы имеет enctype="multipart/form-data" в нем или массив $_FILES будет пустым.