header functie
Ik vraag mij af waarom de header functie wel op mijn wampserver werkt en niet online. De code die ik gebruik doet geen HTML naar het scherm schrijven.
Hoe kan ik ervoor zorgen dat ik een error oid krijg wanneer ik header() doe als er al html op het scherm staat? Ik heb error reporting op ALL staan. Toch heb ik het idee dat sommige dingen (fouten) genegeerd worden.
Code (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
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
<?php
if (isset($_POST['submit'])) {
$titel = mysql_real_escape_string($_POST['titel']);
$subtitel = mysql_real_escape_string($_POST['subtitel']);
$content = mysql_real_escape_string($_POST['content']);
$id = $_POST['id'];
$sql = 'UPDATE updates SET titel = "'.$titel.'", subtitel = "'.$subtitel.'", content= "'.$content.'" WHERE id = '.$id;
$res = mysql_query($sql) or die ('FOUT 1: '. mysql_error());
header('Location: updates_overview.php');
}
elseif (isset($_GET['action']) && $_GET['action'] == 'edit') {
if (!is_numeric($_GET['id'])) {
header('Location: updates_overview.php');
}
else {
$id = $_GET['id'];
$sql = 'SELECT titel, subtitel, content FROM updates WHERE id = '.$id;
$res = mysql_query($sql) or die ('FOUT 2: '. mysql_error());
}
}
?>
if (isset($_POST['submit'])) {
$titel = mysql_real_escape_string($_POST['titel']);
$subtitel = mysql_real_escape_string($_POST['subtitel']);
$content = mysql_real_escape_string($_POST['content']);
$id = $_POST['id'];
$sql = 'UPDATE updates SET titel = "'.$titel.'", subtitel = "'.$subtitel.'", content= "'.$content.'" WHERE id = '.$id;
$res = mysql_query($sql) or die ('FOUT 1: '. mysql_error());
header('Location: updates_overview.php');
}
elseif (isset($_GET['action']) && $_GET['action'] == 'edit') {
if (!is_numeric($_GET['id'])) {
header('Location: updates_overview.php');
}
else {
$id = $_GET['id'];
$sql = 'SELECT titel, subtitel, content FROM updates WHERE id = '.$id;
$res = mysql_query($sql) or die ('FOUT 2: '. mysql_error());
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Meddiecap B
Zet: error_reporting(E_ALL); bovenaan je pagina.
Controleren of er gepost wordt doen we op de volgende manier
$_SERVER['REQUEST_METHOD'] == 'POST'
Bouw ook eens fouten afhandeling in je query's.
En vergeet ini_set('display_errors',1); niet. Anders kan het zijn dat de errors niet weergegeven worden.
error_reporting(E_ALL); staat op ALL in php.ini van wampserver EN in de folder waar dit bestand staat.
Als ik submit dat wordt de update query uitgevoerd enzo, zonder fouten, alleen header() niet.
Betreft controleren of er gepost wordt:
$_SERVER['REQUEST_METHOD'] == 'POST'
ipv isset($_POST['submit']) ?
EDIT: zal display aanzetten...
Gewijzigd op 01/01/1970 01:00:00 door Meddiecap B
Quote:
Betreft controleren of er gepost wordt:
$_SERVER['REQUEST_METHOD'] == 'POST'
ipv isset($_POST['submit']) ?
$_SERVER['REQUEST_METHOD'] == 'POST'
ipv isset($_POST['submit']) ?
Correct.
if($_SERVER['REQUEST_METHOD'] == 'POST')
Heb je je code ergens midden in je HTML staan?
Zoja, zet je php code helemaal bovenaan de pagina.
Voeg fouten afhandeling toe in je query's
Code (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
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
<?PHP
# Select Query
$Query = "";
# Resultaat van query
$Result = mysql_query($Query);
# Kijken of er een resultaat is
if(!$Result)
{
# Foutje in query
echo 'Fout opgetreden, fout is: '.mysql_error();
}
else
{
# Kijken of er wel resultaten zijn
if(mysql_num_rows($Result) == 0)
{
# Geen resultaten
echo 'Er zijn geen resultaten gevonden in de database';
}
else
{
# Er zijn resultaten ga verder met je code
}
}
?>
# Select Query
$Query = "";
# Resultaat van query
$Result = mysql_query($Query);
# Kijken of er een resultaat is
if(!$Result)
{
# Foutje in query
echo 'Fout opgetreden, fout is: '.mysql_error();
}
else
{
# Kijken of er wel resultaten zijn
if(mysql_num_rows($Result) == 0)
{
# Geen resultaten
echo 'Er zijn geen resultaten gevonden in de database';
}
else
{
# Er zijn resultaten ga verder met je code
}
}
?>
Ik heb het gevonden. Ik had een stukje voor de code een include waarin ik aan het einde van de pagina, na ?> een paar enters staan.
Mooi dat je het zelf hebt kunnen vinden, vergeet niet om in je query ook even intval($_POST['id']) of (int)$_POST['id'] te gebruiken. Anders is je query nog steeds gevoelig voor injection.
Quote:
Dan kan ik beter (int) doen toch? Dat nieuwer zeg maar...
Keuze is aan jouw, wat jij het prettigste vindt. Het zorgt ervoor dat er alleen een cijfer wordt aangenomen.
Edit:
Als we dan toch bezig zijn, je controleerd nergens of je wel een id meegestuurd krijgt.
-> if (!is_numeric($_GET['id'])) {
Je zou het op de volgende manier kunnen doen.
Als we dan toch bezig zijn, je controleerd nergens of je wel een id meegestuurd krijgt.
-> if (!is_numeric($_GET['id'])) {
Je zou het op de volgende manier kunnen doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?PHP
# Kijken of er een id is en of het een cijfer is
if(!empty($_GET['id']) && ctype_digit($_GET['id']))
{
# Hé !, id is niet leeg en het is ook een cijfer
}
else
{
# ID is leeg of is geen cijfer
}
?>
# Kijken of er een id is en of het een cijfer is
if(!empty($_GET['id']) && ctype_digit($_GET['id']))
{
# Hé !, id is niet leeg en het is ook een cijfer
}
else
{
# ID is leeg of is geen cijfer
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Dit had ik laatst ook. Sla je bestand op als ANSI en niet als UTF of iets dergelijke.. Als het goed is werkt de header functie wel