Активировать заголовки после завершения php-запроса - PullRequest
0 голосов
/ 31 марта 2012

В настоящее время я работаю над сайтом, на котором пользователи могут загружать изображения размером до 10 Мб.Когда пользователи нажимают кнопку загрузки, файл сохраняется в каталоге на сервере, а затем страница перенаправляется с помощью заголовка.Обратите внимание, что я также поставил ob start () в начале скрипта.У меня проблема в том, что перенаправление заголовка активируется до завершения запроса, поэтому пользователи выходят из системы, или возникает внутренняя ошибка сервера.То же самое происходит, когда вы удаляете большой файл.Я попытался удалить перенаправление и его нормально, так что я уверен, что это проблема.Есть ли способ получить перенаправление заголовка только после завершения php-запроса (загрузки изображений)?

Спасибо!

Редактировать: Пример кода

if (empty($errors)) {

  // Get the filename minus the file extension:
$filename = substr($image["name"], 0, strrpos($image["name"], "."));
// Append the appropriate extension
$filename .= $validMimes[$image['type']];
$location = "/home/shoplft/users/$user_id/$foldername/$filename";  
  move_uploaded_file($tmp_name, $location);




  if($secondcategory=="0") {


     mysql_query("INSERT INTO products (users_user_id, name, brand, city, country, store, website, price, keywords, productlocation, filename) VALUES ('$user_id', '$productname', '$productbrand', '$city', '$country', '$store', '$website', '$price', '$tagwords', '$location', '$filename')") or die('Invalid query: ' . mysql_error());

     $pic_id = mysql_insert_id();

     mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$firstcategory')");

     if(!empty($price)) {

        mysql_query("INSERT INTO svalues (products_products_id, products_users_user_id, svalue) VALUES ('$pic_id', '$user_id', '$price') ");

     }




  }



  else {

  mysql_query("INSERT INTO products (users_user_id, name, brand, city, country, store,   website, price, keywords, productlocation, filename) VALUES ('$user_id', '$productname', '$productbrand', '$city', '$country', '$store', '$website', '$price', '$tagwords', '$location', '$filename')") or die('Invalid query: ' . mysql_error());

  $pic_id = mysql_insert_id();

 mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$firstcategory')");
 mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$secondcategory')");

  if(!empty($price)) {

        mysql_query("INSERT INTO svalues (products_products_id, products_users_user_id, svalue) VALUES ('$pic_id', '$user_id', '$price') ");

     }  


  }

header("Location: product.php?id=$pic_id");//prolly should separate data processing from output

 }    

1 Ответ

0 голосов
/ 31 марта 2012

Попробуйте это

if (empty($errors)) {

  // Get the filename minus the file extension:
$filename = substr($image["name"], 0, strrpos($image["name"], "."));
// Append the appropriate extension
$filename .= $validMimes[$image['type']];
$location = "/home/shoplft/users/$user_id/$foldername/$filename";
if(!@copy($tmp_name, $location))
{
$errors[] =  'Error';
}

if (empty($errors))
{




  if($secondcategory=="0") {


     mysql_query("INSERT INTO products (users_user_id, name, brand, city, country, store, website, price, keywords, productlocation, filename) VALUES ('$user_id', '$productname', '$productbrand', '$city', '$country', '$store', '$website', '$price', '$tagwords', '$location', '$filename')") or die('Invalid query: ' . mysql_error());

     $pic_id = mysql_insert_id();

     mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$firstcategory')");

     if(!empty($price)) {

        mysql_query("INSERT INTO svalues (products_products_id, products_users_user_id, svalue) VALUES ('$pic_id', '$user_id', '$price') ");

     }




  }



  else {

  mysql_query("INSERT INTO products (users_user_id, name, brand, city, country, store,   website, price, keywords, productlocation, filename) VALUES ('$user_id', '$productname', '$productbrand', '$city', '$country', '$store', '$website', '$price', '$tagwords', '$location', '$filename')") or die('Invalid query: ' . mysql_error());

  $pic_id = mysql_insert_id();

 mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$firstcategory')");
 mysql_query("INSERT INTO categories (products_products_id, products_users_user_id, category) VALUES('$pic_id', '$user_id', '$secondcategory')");

  if(!empty($price)) {

        mysql_query("INSERT INTO svalues (products_products_id, products_users_user_id, svalue) VALUES ('$pic_id', '$user_id', '$price') ");

     }


  }

header("Location: product.php?id=$pic_id");//prolly should separate data processing from output
 }
 }
...