Header already sent oplossing
hoe kan ik dit oplossen?
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
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
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
}
?>
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
header("refresh: 2; url=home.php"); verstuur je altijd voordat je iets op het scherm print.
ja klopt, maar ik moet wel die echo hebben, want ze moeten weten dat ze doorgestuurd worden..
Probeer gebruik te maken van HTML of Javascript om gebruikers door te sturen. PHP is hier niet echt voor bedoelt.
Ik heb het op die manier nog nooit gedaan?
Gewijzigd op 09/11/2011 11:47:28 door Jerry php
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 -
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.
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
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
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');
}
}
?>
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');
}
}
?>
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 ;-)
- Aar - op 09/11/2011 11:49:08:
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.
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.
Jerry php op 09/11/2011 11:53:14:
Ja maar aar, dat zou bij deze code niet gaan denk:
Argumenten ;)?
Ehhh? Hoezo dit? Waarom niet kijken of de query is gelukt bijv.
Gewijzigd op 09/11/2011 11:56:19 door - Ariën -
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.
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...
Ander puntje: Wat is het nut van if(true)?
Ja, dat weet ik ook niet, ik bedacht het, en het werkte.. Maar het is inderdaad fout..
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.
Kun je een voorbeeldje geven, ik weet niet precies wat ik fout heb gedaan
Je bent niet echt fout bezig, maar zoal sik al zei. In deze logica hoort de HTML-code van je style bovenaan het formulier.
Want de 1e 4 echo's moeten blijven staan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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');
}
}
{
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');
}
}
- SanThe - op 09/11/2011 12:03:39:
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.....
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 -
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.
Want de 1e 4 echo's moeten blijven staan.
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
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.";
}
{
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 -