上传后,我的uploadform页面没有重定向到thank-you.php页面

时间:2012-10-26 06:49:24

标签: php redirect http-redirect output

您好我的uploadform页面在上传后没有重定向到thank-you.php页面。一切都很完美,我不想改变代码,只是标题并没有指示paege去感谢你.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文件庞蒂亚克运动车.jpg文件volkswagen-polo.jpg

请帮助

1 个答案:

答案 0 :(得分: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('Location:thank-you.php');

使用

  

标题('位置:thank-you.php');

这是打印文件名但不执行重定向的原因。在重定向之前的任何输出,它无法完成。据我所知,如果你把错误处理放在8191,你应该能够查看它。 (E_ALL)

此外,您不会转义文件名,用户名等中的任何内容,这会使用户有空间使用时髦字符或SQL注入来破坏您的数据库。

看一下mysql_real_escape_string和最后一个注释。此函数不会转义某些通配符,因此您可能需要在准备好时检查它。 阅读:Sanitizing user input