-1

こんにちは、アップロード後にアップロードフォームのページが thank-you.php ページにリダイレクトされません。すべてが完璧です。コードを変更したくありません。ヘッダーがページに thank-you.php に移動するように指示していないだけです。

データを投稿するコードは次のとおりです。

<?php
$target = "Carpics";
//$target = $target . basename( $_FILES['photo']['name']);

ini_set('display_errors',1);
error_reporting(0);
$conn = mysql_connect("localhost","admin","");
if(!$conn)
{
    echo mysql_error(); 
}
$db = mysql_select_db("upload",$conn);
if($db)
{ echo mysql_error();
    }
    $name = $_POST['name'];
    $address = $_POST['address'];
    $from_date = $_POST['from_date'];
    $to_date = $_POST['to_date'];
    $full_name = $_POST['full_name'];
    $email = $_POST['email'];
    $city = $_POST['city'];
    $tel = $_POST['tel'];
    $town = $_POST['town'];
    $country = $_POST['country'];
    $model = $_POST['model'];
    $displacement = $_POST['displacement'];
    $trans = $_POST['trans'];
    $driver = $_POST['driver'];
    $photopath1 = $target . basename( $_FILES['photo1']['name']);
    $photopath2 = $target . basename( $_FILES['photo2']['name']);
    $photopath3 = $target . basename( $_FILES['photo3']['name']);
    $photopath4 = $target . basename( $_FILES['photo4']['name']);
    for($i=1;$i<5;$i++){ 
        if($i==1){
            $target = $photopath1;
        }elseif($i==2){
            $target = $photopath2;
        }elseif($i==3){
            $target = $photopath3;
        }elseif($i==4){
            $target = $photopath4;
        }   
    $photo = addslashes(file_get_contents($_FILES['photo'.$i]['tmp_name']));
    $image = getimagesize($_FILES['photo'.$i]['tmp_name']);
        $imgtype = $image['mime'];
if(move_uploaded_file($_FILES['photo'.$i]['tmp_name'], $target))
{
echo "The file ". basename( $_FILES['photo'.$i]['name']);
}
else {
echo "Sorry, there was a problem uploading your file.";
}       
    }
    if(!$insert = mysql_query("INSERT INTO data VALUES('','$name','$address','$from_date','$to_date','$full_name','$email','$city','$tel','$town','$country','$model','$displacement','$trans','$driver','$photo', '$photopath1', '$photopath2', '$photopath3', '$photopath4','$imgtype')")); 
      echo header('Location: thank-you.php');   
?>

代わりに、ファイル img5.jpg ファイル img7.jpg ファイル Pontiac sports car.jpg ファイル volkswagen-polo.jpg を表示します。

助けてください

4

1 に答える 1

0

あなたのサンプルを見ている間、私は次のことに気づきました。

if(move_uploaded_file($_FILES['photo'.$i]['tmp_name'], $target))  
{  
echo "The file ". basename( $_FILES['photo'.$i]['name']);  
}
else {  
echo "Sorry, there was a problem uploading your file.";  
}    

これは、リダイレクトを実行しようとする前に発生し、Php.netは次のように述べています。

通常のHTMLタグ、ファイル内の空白行、またはPHPから実際の出力を送信する前に、header()を呼び出す必要があることに注意してください。include、require、関数、または別のファイルアクセス関数を使用してコードを読み取り、header()が呼び出される前に出力されるスペースまたは空の行があることは非常に一般的なエラーです。

したがって、ヘッダー関数を間違った方法で使用することを除いて、それが考えられる原因になります。その前にエコーを置く必要はありません。だから代わりに

echo header('場所:thank-you.php');

使用する

header('場所:thank-you.php');

これが、ファイル名を印刷するがリダイレクトを実行しない原因です。リダイレクト前の出力では、完了できません。私が覚えている限り、8191でエラー処理を行うと、それを表示できるはずです。(E_ALL)

また、ファイル名やユーザー名などに何もエスケープしていないため、ファンキーな文字を使用してデータベースを破損したり、SQLインジェクションを使用したりする余地があります。

mysql_real_escape_stringと最後のメモを見てください。この関数は特定のワイルドカード文字をエスケープしないので、準備ができたらそれもチェックすることをお勧めします。そして、で読んでください:ユーザー入力のサニタイズ

于 2012-10-26T07:10:37.087 に答える