-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();

没有效果..它甚至上传 16px 的图像。谢谢,如果你能帮忙,我将不胜感激。

4

1 回答 1

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'](如果您的输入名称具有类型文件和名称图像),您可以获取文件大小信息,getimagesize($_FILES['image']['tmp_name'])http://www.php.net/manual/en上所述/function.move-uploaded-file.php

确保您的表单标签包含enctype="multipart/form-data"在其中,否则$_FILES数组将为空。

于 2012-04-05T17:55:04.680 回答