-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声明以下内容:

请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。

所以这可能是一个原因,除了你也以错误的方式使用了 header 函数。您不必在它前面放置回声。所以而不是

echo header('位置:thank-you.php');

利用

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

这就是它打印出文件名但不执行重定向的原因。重定向之前的任何输出都无法完成。据我记得,如果您将错误处理放在 8191 上,您应该可以查看它。(E_ALL)

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

看看mysql_real_escape_string和最后一个注释。这个函数不会转义某些通配符,所以当你准备好时,你可能也想检查一下。并阅读:清理用户输入

于 2012-10-26T07:10:37.087 回答