1

次の問題があります。名前、住所、メールアドレスを検証するコードは機能しますが、画像を検証するコードは機能せず、その理由がわかりません。いつものように「画像を選択」を印刷します

テストを行い、「print $ photo」で画像の一時的な名前を印刷するように行を設定しましたが、何も印刷されません。

form.php

<form id="formregister" name="formregister" action="register.php" method="post">
    <input id="name" name="name" type="text"/>
    <input id="address" name="address"  type="text"/>
    <input id="email" name="email" type="email" />
    <input id="photouser" name="imguser" type="file"/>
    <input id="bregister" name="bregister" type="submit" value="Registrer"/>
</form>

register.php

..............
$name = $_POST['name'];
$address = $_POST['address'];
$email = $_POST['email'];
$photo = $_FILES['imguser']['tmp_name'];
$errors = array();

    if(!isset($photo)) {
        $errors[] = "Select an image";
    } else {
        $fototemp = addslashes(file_get_contents($_FILES['imguser']['tmp_name']));
        $fotoname = addslashes($_FILES['imguser']['name']);
        $fotosize = getimagesize($_FILES['imguser']['tmp_name']);
        if ($fotosize == false) {
            $errors[] = "Invalid format";
        }
    } 
//Code to validate the other fields (name, address, email)
....................
4

1 に答える 1

4

enctypeフォームにファイルをアップロードするための適切なものがありません。そのはずenctype='multipart/form-data'

<form id="formregister" name="formregister" action="register.php" method="post" enctype='multipart/form-data'>

tmp_name未定義のインデックス通知を回避するために、二次キーに直接アクセスするのではなく、最初に設定されているかどうかをテストします。

if (isset($_FILES['imguser']) {
  $photo = $_FILES['imguser']['tmp_name'];
}
于 2012-06-16T22:27:17.817 に答える