Header already sent oplossing

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Jerry php

Jerry php

09/11/2011 11:23:08
Quote Anchor link
Ik weet niet hoe ik mijn header anders moet doen.. hij doet het namelijk niet, een header already sent uiteraard..
hoe kan ik dit oplossen?

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
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
<?php
session_start();
?>


<style type="text/css">
    
    input[type="text"]
    {
        margin-left:15px;
    }
    
    input[type="password"]
    {
        margin-left: 34px;
    }
    
    input[type="submit"]
    {
        margin-left: 213px;
    }
    
</style>

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    $username = $_POST['username'];
    $password = $_POST['password'];
    
    include 'dbconfig.php';
    
    $query = "SELECT *
              FROM users
              WHERE user='$username'
              AND password='$password'"
;
    
    $result = mysql_query($query)
              or die(mysql_error());
    
    if(mysql_num_rows($result))
    {

       echo "Welkom terug <b>" .$username. "</b>, u word automatisch doorgestuurd.";
      
       $_SESSION['ingelogd'] = true;
       $_SESSION['username'] = $username;
      
       if(true)
       {

           header("refresh: 2; url=home.php");
       }
      
    }

    
    else
    {
        echo "Er is iets fout gegaan";
    }
}


else
{
?>


<form action="login.php" method="post">
    Gebruikersnaam: <input type="text" name="username"/>
    <br />
    Wachtwoord: <input type="password" name="password"/>
    <br />
    <input type="submit" value="Inloggen" name="submit"/>
</form>

<?php
}

?>
Gewijzigd op 09/11/2011 11:23:37 door Jerry php
 
PHP hulp

PHP hulp

26/11/2020 14:08:40
 
Eddy B

Eddy B

09/11/2011 11:26:04
Quote Anchor link
header("refresh: 2; url=home.php"); verstuur je altijd voordat je iets op het scherm print.
 
Jerry php

Jerry php

09/11/2011 11:31:25
Quote Anchor link
ja klopt, maar ik moet wel die echo hebben, want ze moeten weten dat ze doorgestuurd worden..
 
Eddy B

Eddy B

09/11/2011 11:45:56
Quote Anchor link
Probeer gebruik te maken van HTML of Javascript om gebruikers door te sturen. PHP is hier niet echt voor bedoelt.
 
Jerry php

Jerry php

09/11/2011 11:47:12
Quote Anchor link
hoe wil je iemand doorsturen met html / javascript?
Ik heb het op die manier nog nooit gedaan?
Gewijzigd op 09/11/2011 11:47:28 door Jerry php
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 11:49:08
Quote Anchor link
Eddy Bisschops op 09/11/2011 11:45:56:
Probeer gebruik te maken van HTML of Javascript om gebruikers door te sturen. PHP is hier niet echt voor bedoelt.

Je kan toch ook altijd de hele constructie van het script aanpassen?
Simpel gezegd kan die hele style-code bovenaan naar beneden worden verhuisd, boven het formulier.

Dan hoef je geen HTML en JS te gebruiken.

En Jerry, doe eens wat met onze adviezen, wederom sta je weer variabelen te kopiëren, en staan hackers de vreugdedans te doen omdat SQL-injection weer mogelijk kan zijn.
Gewijzigd op 09/11/2011 11:52:28 door - Ariën -
 
Eddy B

Eddy B

09/11/2011 11:50:56
Quote Anchor link
<meta http-equiv="refresh" content="2;url=http://www.phphulp.nl/"> is gebruikelijker.

Je kan inderdaad wel gebruik maken van de PHP header refresh functie maar dan moet je het wel doen voor je output, ik weet het niet zeker: maar volgens mij word die header refresh in PHP niet door alle browsers ondersteunt.
 
Jerry php

Jerry php

09/11/2011 11:53:14
Quote Anchor link
Ja maar aar, dat zou bij deze code niet gaan denk:

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
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
<?php
session_start();

if(isset($_SESSION['ingelogd']))
    {

        if($_SESSION['username'] == 'admin')
        {

            ?>

            
          
            
            <?php
            
            if($_SERVER['REQUEST_METHOD'] == 'POST')
            {

                include 'dbconfig.php';

                $username = $_POST['username'];
                $password = $_POST['password'];

                $query = "INSERT INTO users (user, password)
                          VALUES ('$username', '$password')"
;

                $result = mysql_query($query)
                          or die(mysql_error());
                
                if(true)
                {

                echo "U heeft onderstaande medewerker toegevoegd! <br />";
                echo "Gebruikersnaam: <b>" .$username. "</b><br />";
                echo "Wachtwoord: <b>" .$password."</b> <br />  ";
                echo "U wordt automatisch doorgestuurd naar het admin-paneel.";
                }

                
                if(true)
                    {

                        header("refresh: 3; url=users.php");
                    }
            }

            
            else
            {
            ?>
    

            <form action="makeuser.php" method="post">
                Gebruikersnaam: <input type="text" name="username" /> <br />
                Wachtwoord: <input type="text" name="password" style="margin-left: 21px;" /> <br />
                <input type="submit" name="submit" value="Aanmelden" style="margin-left: 186px;" />
            </form>

            <?php    
            }
            
        }
  
        
        else
        {
            echo "U hebt geen rechten voor deze site, u wordt teruggestuurd naar het beginscherm.";
            
            if(true)
            {

                header('refresh: 2; url=home.php');
            }
        }
    }

    
    else
    {
        echo "U ben niet ingelogd, u wordt doorgestuurd naar de loginpagina.";
        
        if(true)
        {

            header('refresh: 3; url=login.php');
        }
    }


?>
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 11:54:19
Quote Anchor link
Eddy Bisschops op 09/11/2011 11:50:56:
<meta http-equiv="refresh" content="2;url=http://www.phphulp.nl/"> is gebruikelijker.

Als je die gebruikt, dan moet je deze wel in de <head>-sectie plaatsen. In het algemeen voldoet een betere constructie van het PHP-script zodat de logica eerst wordt uitgevoerd, waarna de output volgt.

Ook zou je bij grote projecten een template-parser kunnen gebruiken, maar voor een beginner is dit niet al niet aan te raden ;-)
 
Eddy B

Eddy B

09/11/2011 11:54:39
Quote Anchor link
- Aar - op 09/11/2011 11:49:08:
Eddy Bisschops op 09/11/2011 11:45:56:
Probeer gebruik te maken van HTML of Javascript om gebruikers door te sturen. PHP is hier niet echt voor bedoelt.

Je kan toch ook altijd de hele constructie van het script aanpassen?
Simpel gezegd kan die hele style-code bovenaan naar beneden worden verhuisd, boven het formulier.

Dan hoef je geen HTML en JS te gebruiken.

En Jerry, doe eens wat met onze adviezen, wederom sta je weer variabelen te kopiëren, en staan hackers de vreugdedans te doen omdat SQL-injection weer mogelijk kan zijn.


Er zijn meerdere wegen naar Rome.

En inderdaad, veilig is anders.
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 11:55:03
Quote Anchor link
Jerry php op 09/11/2011 11:53:14:
Ja maar aar, dat zou bij deze code niet gaan denk:

Argumenten ;)?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(true) {

Ehhh? Hoezo dit? Waarom niet kijken of de query is gelukt bijv.
Gewijzigd op 09/11/2011 11:56:19 door - Ariën -
 
Bram Boos

Bram Boos

09/11/2011 11:56:21
Quote Anchor link
Eddy Bisschops op 09/11/2011 11:50:56:
<meta http-equiv="refresh" content="2;url=http://www.phphulp.nl/"> is gebruikelijker.

Je kan inderdaad wel gebruik maken van de PHP header refresh functie maar dan moet je het wel doen voor je output, ik weet het niet zeker: maar volgens mij word die header refresh in PHP niet door alle browsers ondersteunt.


Dat is niet geheel waar, als je meta in je browser uitzet refresht die niet. Als je de header() functie gebruikt dan hoort het altijd te werken...
 
- SanThe -

- SanThe -

09/11/2011 11:56:38
Quote Anchor link
Ander puntje: Wat is het nut van if(true)?
 
Jerry php

Jerry php

09/11/2011 11:58:04
Quote Anchor link
@aar, omdat ik veel output heb, en aangezien de header niet altijd verstuurd moet worden.

Ja, dat weet ik ook niet, ik bedacht het, en het werkte.. Maar het is inderdaad fout..
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 11:59:12
Quote Anchor link
Jerry php op 09/11/2011 11:58:04:
@aar, omdat ik veel output heb, en aangezien de header niet altijd verstuurd moet worden.

De logica eerst uitvoeren, en dat pas de output.
Dus kijk bijv. eerst of een formulier verstuurd is plus validaties etc..., en toon dan de output.
 
Jerry php

Jerry php

09/11/2011 12:00:22
Quote Anchor link
Kun je een voorbeeldje geven, ik weet niet precies wat ik fout heb gedaan
 
- SanThe -

- SanThe -

09/11/2011 12:03:39
Quote Anchor link
Aangezien je een refresh met een korte wachttijd hebt kan het ook zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
header('refresh: 3; url=login.php');
exit "U ben niet ingelogd, u wordt doorgestuurd naar de loginpagina.";
?>
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 12:04:54
Quote Anchor link
Je bent niet echt fout bezig, maar zoal sik al zei. In deze logica hoort de HTML-code van je style bovenaan het formulier.
 
Jerry php

Jerry php

09/11/2011 12:05:24
Quote Anchor link
maar dan kom ik alsnog in de war met dit:

Want de 1e 4 echo's moeten blijven staan.
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
if($_SESSION['username'] == 'admin')
        {
            echo "U kunt de volgende opties uitvoeren:<br />";
            echo "<a href='makeuser.php'>-Voeg een gebruiker toe.</a><br />";
            echo "<a href='deleteuser.php'>-Verwijder een gebruiker.</a><br />";
            echo "<a href='edituser.php'>-Wijzig een gebruiker.</a>";
        }
        
        else
        {
            echo "U hebt geen rechten voor deze site, u wordt teruggestuurd naar het beginscherm.";
            
            if(true)
            {
                header('refresh: 2; url=home.php');
            }
        }
 
- Ariën -
Beheerder

- Ariën -

09/11/2011 12:06:35
Quote Anchor link
- SanThe - op 09/11/2011 12:03:39:
Aangezien je een refresh met een korte wachttijd hebt kan het ook zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
header('refresh: 3; url=login.php');
exit "U ben niet ingelogd, u wordt doorgestuurd naar de loginpagina.";
?>

Ja, maar met exit() stopt alle overige output dus ook na die tekst, en raakt de HTML invalid :-P.



Toevoeging op 09/11/2011 12:08:55:

Jerry php op 09/11/2011 12:05:24:
maar dan kom ik alsnog in de war met dit:

Want de 1e 4 echo's moeten blijven staan.....

Maar die worden toch niet getoond? Het is een else, weet je nog?
of hij toont het formulier, of die redirect.
Gewijzigd op 09/11/2011 12:06:50 door - Ariën -
 
- SanThe -

- SanThe -

09/11/2011 12:10:04
Quote Anchor link
Jerry php op 09/11/2011 12:05:24:
maar dan kom ik alsnog in de war met dit:

Want de 1e 4 echo's moeten blijven staan.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
if($_SESSION['username'] == 'admin')
        {
            echo "U kunt de volgende opties uitvoeren:<br />";
            echo "<a href='makeuser.php'>-Voeg een gebruiker toe.</a><br />";
            echo "<a href='deleteuser.php'>-Verwijder een gebruiker.</a><br />";
            echo "<a href='edituser.php'>-Wijzig een gebruiker.</a>";
        }
        
        else
        {
            header('refresh: 3; url=login.php');
            echo "U ben niet ingelogd, u wordt doorgestuurd naar de loginpagina.";
        }


Zo zou het moeten werken.
Die if(true) is onzin want die wordt altijd uitgevoerd en is dus overbodig.

Aangepast voor Aar. ;-)
Gewijzigd op 09/11/2011 12:11:53 door - SanThe -
 

Pagina: 1 2 3 4 volgende »



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.