0

私はphpの初心者で、助けが必要です。サーバーに何かをアップロードするアップロード スクリプトがあります。したがって、ファイルをアップロードした後、メッセージyour file was uploadが表示され、このメッセージを HTML アップロード ページ (メイン ページ) に投稿する必要があり、コードは次のようになります。

     if(empty($errors)===true){
            move_uploaded_file($file_tmp,"upload/".$file_name);
            echo "Your file was upload!"; <- I want this line to be printed in other page //
        }else{
            print_r($errors);
        }
} 

編集: そして、この2つで私を助けてくれれば、私のスクリプトにエラーが見つかりました:

$file_name=$_FILES['file']['name'];
$file_tmp =$_FILES['file']['tmp_name'];
$file_type=$_FILES['file']['type'];   
$file_ext=strtolower(end(explode('.',$_FILES['file']['name'])));

$extensions = array("rar","zip","jpeg","jpg","png","gif");
if(in_array($file_ext,$extensions)=== false){
$error[]= "Extension not allowed, please choose a RAR or ZIP file or if you upload an image use JPEG, JPG, PNG or GIF format.</br> Thank you!"; 
}

これはファイルのアップロードを制限するための私のコードですが、制限はかかりません。理由を教えてください。

私が十分に明確であることを願っています。ありがとうございました !

4

2 に答える 2

1

以下の方法でスクリプトを変更できます。

... if(empty($errors)===true){
            move_uploaded_file($file_tmp,"upload/".$file_name);
            header("Location: otherpage.php?msg=success");            
        }else{

            header("Location: otherpage.php?msg=failure");  
            print_r($errors);
        }
} ...

otherpage.php では、

if(isset($_GET['msg']) && $_GET['msg'] == 'success') {

        echo "File uploaded sucessfully";

     }

編集:

print_r($errors) を書きました。$errors は配列であると想定しています。その場合、json_encode($errors) を使用して、この変数を URL に渡すことができます。以下を参照してください。

$err = json_encode($errors);
$urlEncode = urlencode($err);
//now pass this to the url like this
header("Location: otherpage.php?msg=failure&err=".$urlEncode);  

//in otherpage.php, you have to decode it.
if(isset($_GET['err'])) {

    $errDecode = urldecode($_GET['err']);
    $err = json_decode($errDecode);
    print_r($err); //prints the error
}

拡張子:

あなたのスクリプトは正しいようです。以下の方法で試してみてください。

$extensions = array("rar","zip","jpeg","jpg","png","gif");
  if(!in_array($file_ext,$extensions)){
  $error[]= "your error statement"; 
}
于 2013-05-17T03:59:53.807 に答える
0

別のページではなく、表示したいページにエコーを配置します。フォーム送信の一部としてエコー文字列を送信することもできますが、これはおそらくこのケースには適していません。ただし、次のページに何を印刷するかを設定できますが、事前に設定してください。

于 2013-05-17T04:07:39.127 に答える