0

PHPコードに問題があります。フォームを使用してmysqlにデータを書き込もうとしています。フォームには、ビデオをローカルに保存し、ビデオのURLをデータベースに保存するビデオアップロードも含まれています。問題は、テストしているときに、「videoname」、「videoupload」、「videodescription」の未定義のインデックスの複数のエラーが発生することです。面白いことに、アップロードするファイルを選択せず​​に他のフィールドに何かを入力すると、データベースに情報が書き込まれ、エラーが発生しません。だから、それはビデオに関連したものです。誰かがそれが何であるかについての考えを持っていますか?ありがとう!フォームのコード:

<form action="videoUpload.php" id="videoUp" method='POST' enctype="multipart/form-data">
        <p>Name:<textarea name="videoname" value="" class="name" ></textarea></p>
        <p>Upload video:<input type="hidden" name="MAX_FILE_SIZE" value="10485760">   <input type="file" name="videoupload"> </p>
        <p>Video Description:<textarea name="videodescription" value="" class="step" ></textarea></p>
        <p><input type="submit" name="videosubmit" value="Submit Video" class="submit" /></p>
    </form>

そしてphp:

 <?php  
    session_start();

    //This is the directory where images will be saved
    $target = "assets/video/";
    $target = $target . basename( $_FILES['videoupload']['name']);

    $name = $_POST['videoname'];
    $description = $_POST['videodescription'];


    $connect = mysql_connect("localhost","root","") or die("Couldn't connect");
    mysql_select_db("fyp") or die("Couldn't find db");

    $queryreg = mysql_query("INSERT INTO videos(VideoName,VideoLocation,VideoDescription) VALUES('$name','$target','$description')");

    //Writes the photo to the server
    if(move_uploaded_file($_FILES['videoupload']['tmp_name'], $target))
    {

        //Tells you if its all ok
        echo "The file  has been uploaded, and your information has been added to the directory";
    }
    else {

    //Gives and error if its not
    echo "Sorry, there was a problem uploading your file.";
}
?>
4

1 に答える 1

3

まず、ファイル アップロードのエラー コードを確認します。

$_FILES['videoupload']['error']

次に、エラー シナリオと成功シナリオのコードを記述します。

未定義のインデックスに関するエラーは、アクセスしようとしている POST 値が定義されていないことを示しています。に何か問題があるはずです<form>。お気に入りのブラウザーまたはFiddlerの開発者ツールを使用して、実際の HTTP 要求を分析し、値が渡されることを確認します。

行がテーブルに挿入されるという事実には、おかしなことは何もありません。実際の値の検証はありません。変数が宣言されているかどうかに関係なく、クエリが実行されます。割り当てられていない変数は、PHP でエラーを引き起こしません。

一般に、コードにはさまざまな場所で検証が欠けています。

  • 入力検証なし
  • の戻り値の検証なしmysql_query()
  • SQL インジェクションにオープン
于 2012-05-24T23:47:58.283 に答える