【问题标题】:My uploadform page is not redirecting to the thank-you.php page after upload上传后,我的uploadform 页面未重定向到thank-you.php 页面
【发布时间】:2012-10-16 10:27:05
【问题描述】:

嗨,我的上传表单页面在上传后没有重定向到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文件庞蒂亚克跑车.jpg文件volkswagen-polo.jpg

请帮忙

【问题讨论】:

    标签: php redirect http-redirect output


    【解决方案1】:

    我在查看您的示例时注意到以下内容。

    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() 之前输出空格或空行是非常常见的错误。

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

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

    使用

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

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

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

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

    【讨论】:

    • @shopiwilber 很高兴为您提供帮助。请接受它作为您问题的答案。干杯。
    猜你喜欢
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 2012-05-20
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    相关资源
    最近更新 更多