-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'](入力名のタイプがファイルで名前が画像の場合)に保存され、 http:getimagesize($_FILES['image']['tmp_name']) //www.php.net/manual/enに記載されているようにファイルサイズ情報を取得できます/function.move-uploaded-file.php

フォームタグが含まれていることを確認してください。そうしないとenctype="multipart/form-data"$_FILES配列が空になります。

于 2012-04-05T17:55:04.680 に答える