基本的な質問をさせてください。ファイルのアップロードに関して、
s_uploaded_file と file_exists は両方ともファイルが存在するかどうかを確認します。パラメータはすべてパスですが、なぜファイルをアップロードするために is_uploaded_file を使用する必要があるのでしょうか?
-----解決策のアイデア----------------------
はは、これは 1 つです歴史的起源に関わる問題。 is_uploaded_file の使用は完全に自己保護のためです。
php は、アップロードされたファイルを処理するための 2 つのソリューションを提供します
move_uploaded_file
と
is_uploaded_file
コピーまたは名前変更
コピーとrename はどちらもファイル システム関数であり、もちろんファイルのアップロードだけではありません
そのため、copy 関数を使用して Linux ユーザー パスワード ファイル etc/password のコピーを作成できます
php には register_globals スイッチも用意されています。受信変数をグローバル変数テーブルに自動的にインポートするために使用されます (php5.4 以降では使用できません)
このスイッチがオンになっている場合
変数 $file_name, $ が生成されます。 file_tmp、$file_type.... およびその他の変数
と、upload.php?file_tmp=etc/password も $file_tmp 変数
を生成します。その場合、この $file_tmp が type=file によって生成されたかどうかを正確に知る必要があります。 URL パラメータによって生成されるかどうか
もちろん、PHP には保護メカニズムの層もあるので、これは起こりません (これは自分で発見してください)
しかし、コードは常に変更されているため、 、保守的であること 比較的安全です。どこかに危機があるかもしれません