header functie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Meddiecap B

Meddiecap B

25/11/2009 11:13:00
Quote Anchor link
Hoi,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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());
    }
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Meddiecap B
 
PHP hulp

PHP hulp

18/04/2024 09:30:35
 
Mr.Ark

Mr.Ark

25/11/2009 11:16:00
Quote Anchor link
Welke error krijg je?

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.
 
TJVB tvb

TJVB tvb

25/11/2009 11:19:00
Quote Anchor link
En vergeet ini_set('display_errors',1); niet. Anders kan het zijn dat de errors niet weergegeven worden.
 
Meddiecap B

Meddiecap B

25/11/2009 11:20:00
Quote Anchor link
Ik krijg geen error.

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
 
Mr.Ark

Mr.Ark

25/11/2009 11:24:00
Quote Anchor link
Quote:
Betreft controleren of er gepost wordt:
$_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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
    }
}


?>
 
Meddiecap B

Meddiecap B

25/11/2009 11:25:00
Quote Anchor link
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.
 
Mr.Ark

Mr.Ark

25/11/2009 11:28:00
Quote Anchor link
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.
 
Meddiecap B

Meddiecap B

25/11/2009 11:34:00
Quote Anchor link
Dan kan ik beter (int) doen toch? Dat is nieuwer zeg maar...

$id = (int) $_POST['id'];
Gewijzigd op 01/01/1970 01:00:00 door Meddiecap B
 
Mr.Ark

Mr.Ark

25/11/2009 11:37:00
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
 
Joakim Broden

Joakim Broden

25/11/2009 14:55:00
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.