1

Тема: Чому не працює header?

Привіт, є сторінка де потрібно заповнити форму після чого вона буде записана в базу, але виникає незручність в тому що вона буде записуватися в базу стільки раз скільки я буду перезагружати сторінку(без пиричин). Ось через це я змушений був скористатися header щоб позбутися відправленого мною гут запиту до бази. Але чому header не працює,

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\site\admin\admin.php:1) in Z:\home\localhost\www\site\admin\admin.php on line 16

ось код:

<?php
include("../db.php");
if(isset($_GET['addInformation']))
{
    $name = $_GET['name'];
    $description = $_GET['description'];
    $img = $_GET['img'];
    $date = $_GET['date'];
    $category = $_GET['category'];
    $subcategory = $_GET['subcategory'];
    $marks = $_GET['marks'];
    
    $sql = "INSERT INTO information(name, description, img, date, category, subcategory, watched, marks) VALUES('$name', '$description', '$img ', '$date', '$category', '$subcategory', '0', '$marks')"; 
    mysql_query($sql) or die(mysql_error());
    
    header('Location: http://localhost/site/admin/admin.php');
}
?>
<html>
<head>
<title>Welcom Admin</title>
 <meta charset="utf-8">
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.3.0/lodash.js"></script>
 <style>
 
</style>

<script>
 // текущая дата
    var date = new Date();
    var year =  date.getFullYear();   
    var month = date.getMonth()+1; 
    var day = date.getDate()();
    
    function changeDate(){
        var inputChange = documet.getElementByID("inputDate");
        document.getElementById('inputDate').value = 'Новый текст';
    }
</script>
</head>
<body bgcolor="#000000">
<center>
<table width=100% height=100% border=2px bgcolor=#777777>
        <tr>
        <td width=33%>
        <form action="admin.php">
            Додати статтю:<br>
            name: <input type="text" name="name"> <br>
            description: <input type="text" name="description"> <br>
            image: <input type="text" name="image"> <br>
            category: <input type="text" name="category"> <br>
            subcategory: <input type="text" name ="subcategory" placeholder="default"> <br>
            marks: <input type="text" name ="marks" placeholder="default"> <br>
            date: <input id="inputDate" type="text" name="date" placeholder="default" value="...">  - 
                        <input type="button" value="Отримати дату" onclick="changeDate()"/><br>
            <input type="submit" name="addInformation" value="Добавити" onClick="add()">
        </form>
        </td>
        <td width=34%>
        </td>
        <td width=33%>
        </td>
    </tr>
</table>
</center>
</body>
</html>

також там є ще і інша проблема, є поле date а навпроти него кнопка при натиску на яку в поле мав би записуватися текст, але це чомусь також не працює(

2

Re: Чому не працює header?

Хедер не спрацьовує, якщо перед ним є якісь дані, що виводяться на сторінку (echo чи будь-який текст за межами <?php...?>). Якщо файл збережено в UTF-8, на початку міг залишитись BOM (контрольна послідовність байтів, що вказує на тип кодування) — php його теж сприймає як дані сторінки. Відкрийте файл редактором, який дозволяє зберігати UTF-8 без BOM, і збережіть без BOM.

Крім того, ми не знаємо, що лежить у заінклудженому db.php — там теж може бути BOM, явний вивід на сторінку, пробіли й переводи рядка за межами <?php...?> — усе це вставляється в тому місці, де він інклудиться, що також унеможливлює роботу хедера.

py -3 -m pip install git+https://github.com/snoack/python-goto
∩⍴○⌈⍴⍺/∧\∨/⊢○ ⌿⍀⍴⌊
Подякували: leofun01, Faraon, 221VOLT, vov4ok4

3

Re: Чому не працює header?

Це питання настільки заїжджане, що навіть створили окремий сайт з відповідю на нього.
http://cannot-modify-header-information.ru

Гугліть хоч інколи.

=)
Подякували: leofun01, Faraon, 221VOLT3

4

Re: Чому не працює header?

Faraon написав:

також там є ще і інша проблема, є поле date а навпроти него кнопка при натиску на яку в поле мав би записуватися текст, але це чомусь також не працює(

щось я не бачу що ви десь записуєте у value окрім "..."

<input id="inputDate" type="text" name="date" placeholder="default" value="...">

хоча б щось тягнули з GET типу так

<input id="inputDate" type="text" name="date" placeholder="default" 
value="<?php if(isset($_GET['date'])) echo $_GET['date']; ?>">

5

Re: Чому не працює header?

Пардон, не так зрозумів вище код

Faraon написав:
<script>
 // текущая дата
    var date = new Date();
    var year =  date.getFullYear();   
    var month = date.getMonth()+1; 
    var day = date.getDate()();
    
    function changeDate(){
        var inputChange = documet.getElementByID("inputDate");
        document.getElementById('inputDate').value = 'Новый текст';
    }
</script>

також там є ще і інша проблема, є поле date а навпроти него кнопка при натиску на яку в поле мав би записуватися текст, але це чомусь також не працює(

Спробуй так зробити

<script>
        function changeDate() {
            var date = new Date();
            var year =  date.getFullYear();   
            var month = date.getMonth()+1; 
            var day = date.getDate();
            document.getElementById("inputDate").value = year+'.'+month+'.'+day;
        }
    </script>
Подякували: Kasper1

6

Re: Чому не працює header?

P.Y., дякую, помогло.
Ostapchuk, всеодно не працює(

7 Востаннє редагувалося Kasper (15.08.2016 01:10:51)

Re: Чому не працює header?

..

8

Re: Чому не працює header?

Вот поясніть мені, що за чортівння твориться з моїм компютером?) А іменно по поводу другої проблеми яку я описав вище (з отриманням дати на js). Кілька днів тому у мене не працював код який написав Ostapchuk, а щойно заходжу на сайт, ждму кнопочку і все працює...
Ось що за фігня? І таких випадків дуже багато зі мною трапляється(

Подякували: Ostapchuk1