Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
1

Не срабатывает header, ошибка "Cannot modify header information - headers already sent by"

01.04.2016, 16:18. Показов 1741. Ответов 10
Метки нет (Все метки)

Всем привет.
Помогите решить проблему. Есть два файла index c формой, через которую загружаем фото и файл с функциями. Нужно, что бы после загрузки пользователя перекидывало с POSTA на GET
index.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
include("function.php");
//Точка входа
if (isset($_FILES['fupload']))
{
    if (file_inspection($_FILES['fupload']))   
    {    
        header ('location: index.php');
        exit(); 
    }
    else
    {
        exit('Ошибка при загрузке файла');
    }
}
Функции возвращают else и перенаправление не происходит. Посмотрите пожалуйста функции, что нужно сделать, что бы получить true
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
function file_inspection($img)
{
//Проверка типа файла при загрузке file inspection
 $filename=$_FILES['fupload']['name'];
 $filetype=$_FILES['fupload']['type'];
 $filename = strtolower($filename); //strtolower — Преобразует строку в нижний регистр
 $filetype = strtolower($filetype);
 
 //проверьте, содержит PHP и убить его
 $pos = strpos($filename,'php');
 if(!($pos === false)) {
  return false;
 }
 
 //Проверить не пустой ли файл
if ($img['name'] == '')
    {
        return false;
    }
 
 $file_ext = strrchr($filename, '.'); //strrchr — Находит последнее вхождение символа в строке
 
 //проверить расширение
 $whitelist = array(".jpg",".jpeg",".gif",".png"); 
 if (!(in_array($file_ext, $whitelist))) 
 {
    return false;
 }
 
 
 //проверить тип загрузки
 $pos = strpos($filetype,'image');
 if($pos === false) {
  return false;
 }
 $imageinfo = getimagesize($_FILES['fupload']['tmp_name']); //getimagesize — Получение размера изображения
 if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg'&& $imageinfo['mime']      != 'image/jpg'&& $imageinfo['mime'] != 'image/png') {
   return false;
 }
//проверить двойной тип файла (изображение с комментариями)
if(substr_count($filetype, '/')>1){
return false;
}
 
 
 // Перенаправление дирректории 
 $uploaddir = 'uploadbig/'.date("Y-m-d").'/' ;
 
if (file_exists($uploaddir)) {  //file_exists — Проверяет наличие указанного файла или каталога
} 
else 
{  
    mkdir( $uploaddir, 0777); //mkdir — Создаёт директорию 
} 
   
  //изменить имя изображения
 $uploadfile = $uploaddir . md5(basename($_FILES['fupload']['name'])).$file_ext;
 
  if (move_uploaded_file($_FILES['fupload']['tmp_name'], $uploadfile)) //move_uploaded_file — Перемещает загруженный файл в новое место
  
  { 
    $new_dir = 'uploadsmail/';
    $name = $_FILES['fupload']['name'];
     if (file_exists($new_dir)){}
     else
     {
      mkdir($new_dir,0700);         
     }
     copy($uploadfile, $new_dir .$name);  
     resize($uploadfile,$new_dir.$name, 200, 0);
  } 
  else 
  {
   return false;
  }     
}
 
 
//Масштабирование изображения    
function resize($file_input, $file_output, $w_o, $h_o, $percent = false) {
    list($w_i, $h_i, $type) = getimagesize($file_input); //getimagesize — Получение размера изображения
    if (!$w_i || !$h_i) {
        return false;
    }
    $types = array('','gif','jpeg','png');
    $ext = $types[$type];
    if ($ext) {
        $func = 'imagecreatefrom'.$ext;
        $img = $func($file_input);
    } else {
        return false;
    }
    if ($percent) {
        $w_o *= $w_i / 100;
        $h_o *= $h_i / 100;
    }
    if (!$h_o) $h_o = $w_o/($w_i/$h_i);
    if (!$w_o) $w_o = $h_o/($h_i/$w_i);
    $img_o = imagecreatetruecolor($w_o, $h_o);
    imagecopyresampled($img_o, $img, 0, 0, 0, 0, $w_o, $h_o, $w_i, $h_i);
    if ($type == 2) {
        return imagejpeg($img_o,$file_output,100);
    } else {
        $func = 'image'.$ext;
        return $func($img_o,$file_output);
    }
}
 
?>
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2016, 16:18
Ответы с готовыми решениями:

Ошибка:"Warning: Cannot modify header information - headers already sent by
Доброго времени суток! Я хотел протестить систему авторизации и регистрации, но после авторизации...

Ошибка "Cannot modify header information - headers already sent by" - PHP
Привет. у меня проблем с header - не могу найти свой ошибку. если нужна могу отправит вам все...

Ошибка : "Warning: Cannot modify header information - headers already sent by"
При вводе логина и пароля выходят две ошибки: Warning: Cannot modify header information - headers...

Ошибка "Cannot modify header information - headers already sent by" при выводе изображения в браузер
Привет всем. Уже понял, что тема заезженная, и я сначала хотел решить сам проблему, но все же в...

10
Native x86
Эксперт Hardware
5048 / 2919 / 847
Регистрация: 13.02.2013
Сообщений: 9,371
01.04.2016, 16:19 2
Что означает предупреждение "headers already sent"
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.04.2016, 16:49  [ТС] 3
Цитата Сообщение от quwy Посмотреть сообщение
Что означает предупреждение "headers already sent"
Читал и вроде у меня нет таких косяков как echo и тд..
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,407
01.04.2016, 17:09 4
Цитата Сообщение от alex380 Посмотреть сообщение
Читал и вроде у меня нет таких косяков как echo и тд..
Кодировка Utf-8 без bom?
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.04.2016, 17:10  [ТС] 5
Цитата Сообщение от Azdeman Посмотреть сообщение
Кодировка Utf-8 без bom?
Да notepad - ом проверил
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,407
01.04.2016, 17:12 6
PHP
1
2
3
4
5
if (file_inspection($_FILES['fupload']))   
    {    
        header ('location: index.php');
        exit(); 
    }
Ну пробуйте так..
PHP
1
2
3
4
5
if (file_inspection($_FILES['fupload']))   
    {    
        echo "<script>window.location.href='index.php'</script>";
        exit(); 
    }
1
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.04.2016, 17:18  [ТС] 7
Цитата Сообщение от Azdeman Посмотреть сообщение
Ну пробуйте так..
Со скриптом работает, так у меня проблемам не из за функций?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,407
01.04.2016, 17:21 8
Цитата Сообщение от alex380 Посмотреть сообщение
так у меня проблемам не из за функций?
Проблема в том что, что то мешает отработать Header у. Вы первый скрипт полный скинули?
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.04.2016, 18:43  [ТС] 9
Цитата Сообщение от Azdeman Посмотреть сообщение
Проблема в том что, что то мешает отработать Header у. Вы первый скрипт полный скинули?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php 
include("function.php");
//Точка входа
if (file_inspection($_FILES['fupload']))   
    {    
        echo "<script>window.location.href='index.php'</script>";
        exit(); 
    }       
 
    
           
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Загрузка файла на сервер</title>
</head>
<body>
<h1>Пример загрузки файла на сервер</h1>
 
    <form method="post" enctype="multipart/form-data" action="index.php">
        <input type="file" name="fupload" />
        <input type="submit" value="Загрузить файл!" />
    </form>
<?php
  //echo "<a href=''><img src='$path' style='margin-left: 20px;'/></a>";  
?> 
 
 
</body>
</html>
Добавлено через 54 минуты
Цитата Сообщение от Azdeman Посмотреть сообщение
Проблема в том что, что то мешает отработать Header у
При таком условии
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if (isset($_FILES['fupload']))
{
    if (file_inspection($_FILES['fupload']))   
    {    
        header ('location: index.php');
        exit(); 
    }
    else
    {
        exit('Ошибка при загрузке файла');
    }
}
Функции должны возвращать true.
Переделал на
PHP
1
2
3
4
5
if (file_inspection($_FILES['fupload']))   
    {    
        header ('location: index.php');
        exit(); 
    }
И по кусочкам восстанавливаю функцию, думаю так определить где косяк.

Добавлено через 26 минут
Цитата Сообщение от Azdeman Посмотреть сообщение
Проблема в том что, что то мешает отработать Header у
Весь код в остановил, всё работает, значит всё таки косяк с кодировкой был? Но в нотепаде, что один файл в utf-8(без bom), что другой, а один работает другой нет, где косяк? Файлы function.php абсолютно одинаковые.
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,407
01.04.2016, 19:00 10
Цитата Сообщение от alex380 Посмотреть сообщение
а один работает другой нет, где косяк?
надо преобразовывать в UTF-8 без bom.
Там в notepad++ так и есть преобразовать
0
0 / 0 / 0
Регистрация: 27.11.2015
Сообщений: 109
01.04.2016, 19:08  [ТС] 11
Цитата Сообщение от Azdeman Посмотреть сообщение
надо преобразовывать в UTF-8 без bom.
Там в notepad++ так и есть преобразовать
Я его сначала в ANSI преобразовал, потом в UTF-8 без bom, не помогло.
Надо скопировать данные в блокнот и сохранить как, тогда заработает.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2016, 19:08

Ошибка "Cannot modify header information - headers already sent by"
Здравствуйте! Ранее, работая над сайтами, я вставлял в середине php-скриптов функции header() и...

Ошибка "Cannot modify header information - headers already sent"
Когда пытаюсь зарегаться или войти пишет: Warning: Cannot modify header information - headers...

Не работает setcookies: "Cannot modify header information - headers already sent by"
Доброго времени суток , проблема заключается в том что когда пытаюсь установить cookie то возникает...

Warning: Cannot modify header information - headers already sent в header('Location: /index.php');
Warning: Cannot modify header information - headers already sent by (output started at...

Ошибка - Warning: Cannot modify header information - headers already sent
Помогите пожалуйста с задачкой, с php очень плохо, не могу разобраться...За ранее большое спасибо!...

Ошибка Warning: Cannot modify header information - headers already sent by...
Вижу надпись: Warning: Cannot modify header information - headers already sent by (output...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru