Session leren gebruiken.
erg handig in gebruik is voor een hoop dingen.
Graag zou ik meer willen weten over het gebruik van sessies weet iemand een site waar ik dit kan leren of kan iemand mij vertellen waar sessie eigenlijk goed voor zijn!
Zo gebruik ik bijv. al jaren de volgende script om mijn database te connecten (heb ik van een vriend gehad) Maar heb eigenlijk geen idee hoe het werkt..
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
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
<?
session_start();
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$from = "From: Mark <[email protected]";
if (!mysql_select_db($dbname, mysql_connect($host, $user, $pass)))
{
if (!$_SESSION["dberror"])
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
mail($to, $subject, $msg, $from);
$dberror = 1;
session_register(dberror);
}
echo "
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
exit();
}
?>
session_start();
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$from = "From: Mark <[email protected]";
if (!mysql_select_db($dbname, mysql_connect($host, $user, $pass)))
{
if (!$_SESSION["dberror"])
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
mail($to, $subject, $msg, $from);
$dberror = 1;
session_register(dberror);
}
echo "
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
exit();
}
?>
Kan iemand mij iets vertellen of verwijzen naar een goeie tutorial hier over??
Kijk eens op php.net en typ in het zoekvak eens gewoon "Session" in.
Algemeen: Ik heb een variabele X die ik op pagina A aanmaak. Vervolgens wil ik die gebruiken op pagina B, maar niet via de URL (en GET parameters).
Toepassing: Dit heb je bijv. in een inlog script, je wilt een variabele in het inlog gedeelte setten met de waarde: ingelogd. Vervolgens wil je op elke pagina kunnen kijken of hij is ingelogd. [sidenote]Het maken van een inlog systeem is ingewikkelder, omdat je moet kijken of je nog steeds met dezelfde persoon te maken hebt[/sidenote]
Een idee
Je kan het niet met gewone variabele doen:
En via een database is veel te veel overhead.
De oplossing
De oplossing is, zoals je wel verwachte, sessies (of cookies) gebruiken. Het verschil daar tussen is simpel. Eigenlijk bestaan er alleen cookies, deze sla je op in één van de TEMP dirs van het browser. Die blijven beschikbaar tot ze verlopen zijn, dit kan oplopen in de jaren.
PHP heeft de sessies er bovenop bedacht. De waarde van een sessie wordt vastgehouden door PHP en de id van de sessie wordt opgeslagen als een cookie, zo weet PHP welke sessie bij deze bezoeker hoort. Zodra je je browser sluit zal de cookie verwijderd worden.
Hoe stel ik een sessie variabele in?
Om te kunnen werken met een sessie moet elke pagina die sessies wilt gebruiken beginnen met session_start:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Alle sessies sla je op in de super global $_SESSION, wat een array is. In ons geval:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
A.php
=====
<?php
session_start();
$_SESSION['x'] = 'foobar';
?>
B.php
=====
<?php
session_start();
echo $_SESSION['x'];
?>
=====
<?php
session_start();
$_SESSION['x'] = 'foobar';
?>
B.php
=====
<?php
session_start();
echo $_SESSION['x'];
?>
En klaar zijn we!
Dat script van je vriend is verre van goed:
- Verander de 1e if in 2 if statements, waarbij je bij de eerste de connectie en bij de 2e select db controleert
- krijg de errors via de functie mysql_error en niet via een sessie
- check of een mail is verzonden
- gebruik de juiste mailheaders
- session_register is deprecated, sinds PHP4.1 (!!). Gebruik de syntax die ik je hierboven leerde (de $_SESSION array)
- exit of die gebruikt je zelden en is in dit geval onnodig
- echo nooit hele stukken PHP. Sluit je PHP, plaats de HTML en open daarna je PHP weer.
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
78
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
78
<?
session_start();
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Mijn Site';
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_connect($host, $user, $pass)) {
if (!mysql_select_db($dbname)){
{
if (!$_SESSION["dberror"])
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
$dberror = 1;
session_register(dberror);
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
session_start();
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Mijn Site';
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_connect($host, $user, $pass)) {
if (!mysql_select_db($dbname)){
{
if (!$_SESSION["dberror"])
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
$dberror = 1;
session_register(dberror);
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
Ik begrijp je uitleg maar ik weet nog niet hoe mijn script er dan uit hoort te zien.
Toevoeging op 18/09/2012 09:17:30:
Ik weet alleen niet hoe ik het volgende goed moet aanpassen..
- session_register is deprecated, sinds PHP4.1 (!!). Gebruik de syntax die ik je hierboven leerde (de $_SESSION array)
Snap wel wat je bedoelt maar weet niet zo goed hoe ik hem moet invoegen in dit script.
Is hij voor de rest wel goed? Of heb ik hem nu nog erger gemaakt haha!
Gewijzigd op 18/09/2012 09:38:14 door Mark van den Brink
Gebruik gewoon:
$_SESSION['dberror'] = $dberror;
Waarom je een sessie aanmaakt voor een databasefoutmelding ontgaat mij even.
Gewijzigd op 18/09/2012 09:37:11 door - Ariën -
Maar hoe zou jij het doen dan gebruik van sessies weg en dan zoiets?
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
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
<?
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Mijn Site';
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_connect($host, $user, $pass)) {
if (!mysql_select_db($dbname)){
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
// database configuratie
$dbname = "database_naam"; // database naam
$user = "mysql_username"; // gebruikersnaam van mysql
$pass = "mysql_password"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Mijn Site';
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_connect($host, $user, $pass)) {
if (!mysql_select_db($dbname)){
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
Correct me if i'm wrong...
Voor een databasefoutmelding heb je toch geen sessies nodig?
Hoe is het script boven zonder sessies moet alleen nog foutafhandeling in denk ik...
Er zit gewoon foutafhandeling in.
Alleen heb nu aantal foutjes ondekt waar ik niet uitkom..
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
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
<?php
// database configuratie
$dbname = "---"; // database naam
$user = "---"; // gebruikersnaam van mysql
$pass = "---"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Sonic GFX :: Designs';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Sonic GFX';
$email_verzender = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_select_db($dbname, mysql_connect($host, $user, $pass)))
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n\r";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
// database configuratie
$dbname = "---"; // database naam
$user = "---"; // gebruikersnaam van mysql
$pass = "---"; // wachtwoord van mysql
$host = "localhost"; // host naar mysql
// user configuratie
$to = "[email protected]"; // jou email adres
$subject = "Database Connectie Mislukt"; // onderwerp van de email
$website_naam = 'Sonic GFX :: Designs';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Sonic GFX';
$email_verzender = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
$headers .= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
$headers .= 'X-Priority: Normal' . PHP_EOL;
$headers .= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
if (!mysql_select_db($dbname, mysql_connect($host, $user, $pass)))
{
$msg = "============================================\n";
$msg .= "Database connectie mislukt!\n\r";
$msg .= "============================================\n\n";
$msg .= "De connectie met de database is mislukt!\n\n";
$msg .= "Datum: " . date("d.m.Y") . "\n";
$msg .= "Tijd: " . date("H:i") . "\n";
$msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$msg .= "Mark\n";
if (mail($to, $subject, $msg, $headers)) {
echo 'Error mail is verzonden.';
}
else {
echo 'Error mail niet verzonden.';
}
?>
<html>
<head>
<title>Database connectie mislukt</title>
</head>
<body>
<h1>De connectie met de database is mislukt.</h1>
<p>Probeer het over enkele minuten opnieuw. Blijf niet de pagina herladen (refreshen).
Wanneer u dit wel doet wordt de database alleen nog maar meer belast. Er is een
e-mail gestuurd naar één van de administrators.</p>
<p>Onze excuses en bedankt voor het begrip.</p>
<p><i>Mark</i></p>
</body>
</html>";
<?php
}
?>
Hij verstuurd ene mail maar de ene keer krijg ik hem wel en de andere keer krijg ik hem niet hoe kan dat?
en ik heb deze weer terug veranderd in:
als ik 2 if statements gebruikte zei hij geen DB geselecteerd of heb ik hem verkeerd gescript..
Toevoeging op 18/09/2012 11:07:19:
Laat het ontvangen van mails maar zitten ontvang zojuist 20 mails in 1x
Gewijzigd op 18/09/2012 13:24:21 door Mark van den Brink
je bent vergeten je database login gegevens te veranderen...
Meteen alles maar wijzigen haha!
Als het connecten niet lukt dan met de db verbinding maken?
Ik denk dat je het zo bedoelt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if (mysql_connect($host, $user, $pass)) {
if (mysql_select_db($dbname)){
}else{
echo 'Kan niet verbinden met de database';
}
}else{
echo 'Kan geen verbinding maken met de server';
}
?>
if (mysql_connect($host, $user, $pass)) {
if (mysql_select_db($dbname)){
}else{
echo 'Kan niet verbinden met de database';
}
}else{
echo 'Kan geen verbinding maken met de server';
}
?>
Werkt! Helemaal super!
Want op mysql_connect php.net kun je onder Return Values lezen wat de functie teruggeeft. In dit geval:
Quote:
Returns a MySQL link identifier on success or FALSE on failure.
Als er een fout is zien we dus dat er FALSE teruggegeven wordt. Daarop kunnen we dus checken, is er iets anders dan false teruggegeven dan kun je gewoon doorgaan.
De functie mysql_error bevat de error die omschrijft wat er fout is gegaan, toon deze niet aan je bezoekers, maar als je hem lokaal debugd is dit natuurlijk erg handig.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if (mysql_connect($host, $user, $pass)) {
if (mysql_select_db($dbname)){
}else{
echo 'Kan niet verbinden met de database<br>';
echo mysql_error(). "<br>\n";
}
}else{
echo 'Kan geen verbinding maken met de server<br>';
echo mysql_error(). "<br>\n";
}
?>
if (mysql_connect($host, $user, $pass)) {
if (mysql_select_db($dbname)){
}else{
echo 'Kan niet verbinden met de database<br>';
echo mysql_error(). "<br>\n";
}
}else{
echo 'Kan geen verbinding maken met de server<br>';
echo mysql_error(). "<br>\n";
}
?>
is dat de dan de beste manier? Aangezien ik vooral op de site lees dat or die nooit meer gebruikt mag worden zoals bijv:
of zal ik hem zo laten zoals Nick aangaf??
Als de website online staat, wat we de production fase/omgeving noemen, wil je juist zo min mogelijk informatie tonen. Het maakt de gebruiker niet uit wat er fout gaat, alleen of er wat fout gaat. Tevens bevatten de foutmeldingen vaak gegevens zoals inlog gegevens of gegevens over hoe de tabellen en velden heten. Dit is natuurlijk heel handige informatie voor een hacker en dus is het gevaarlijk deze errors te tonen.
Wat je het beste kunt doen is in de production omgeving de error loggen in een bestand en in de development omgeving zoveel mogelijk tonen. Een voorbeeldje hoe ik het zal doen kun je vinden in SQL boilerplate, de link die ik je al eens eerder had gegeven.
Bedankt alvast nu eerst even brilletje op en gaan lezen maar.