veilig script????
maar ik weet nu dus niet zeker of het wel een veilig en goed script is.
Wil iemand het soms even voor me nakijken
----------------------
de database
----------------------
user_ID, int, geen null, auto_increment, primaire sleutel
username, varchar(15), geen null
bericht, varchar(50), geen null
----------------------
postbericht.php
----------------------
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
$ip = "$REMOTE_ADDR";
If($ip == "0.0.0.0")
{
include("berichtenbalk.php");
}
//naam gebruiker=$naam, inhoud bericht = $bericht
else {
If($verzend) {
$naam = htmlspecialchars($naam);
$bericht = htmlspecialchars($bericht);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
}
?>
$ip = "$REMOTE_ADDR";
If($ip == "0.0.0.0")
{
include("berichtenbalk.php");
}
//naam gebruiker=$naam, inhoud bericht = $bericht
else {
If($verzend) {
$naam = htmlspecialchars($naam);
$bericht = htmlspecialchars($bericht);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
}
?>
----------------------
berichtenbalk.php
----------------------
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
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
$data = mysql_query("SELECT * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8") or die(mysql_error());
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array( $data ))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
?>
Alleen de laatste 8 berichten worden getoond.
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
$data = mysql_query("SELECT * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8") or die(mysql_error());
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array( $data ))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
?>
Alleen de laatste 8 berichten worden getoond.
Gewijzigd op 01/01/1970 01:00:00 door Bram
Dit doet vermoeden dat register_globals aan staat? Dat is sowieso al een mogelijk veiligheidslek, dus dat zou ik zeker uitschakelen.
Verder zou ik ook nog even de gebruikersnaam en wachtwoord uit je database connectie halen.
ps. Verder mis ik de foutafhandeling in je script? Je controleert nergens of je queries wel gelukt zijn. Ook zul je bij je insert query nog even mysql_real_escape_string() toe moeten passen om SQL injectie te voorkomen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Klopt ook niet hé? We gaan geen nutteloze variabelen maken. Variabelen maak je überhaupt niet zo.
--------------------------
postbericht.php
--------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = htmlspecialchars($_POST['naam']);
$bericht = htmlspecialchars($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = htmlspecialchars($_POST['naam']);
$bericht = htmlspecialchars($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door bram
Verder lijkt het me ook wel handig dat je de $_POST['naam'] en $_POST['bericht'] controleerd op hun inhoud.
Ook is het gebruik van or die(mysql_error()); sterk af te raden als je het script op een gewone website gebruikt. Dan is het handiger om gewoon een abstracte foutmelding te geven in plaats van informatie over je database.
remote address heb ik al weggelaten omdat jeej zei dat dat overbodig was.
Maar dat van mysl_real_escape heb ik gedaan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape($_POST['naam']);
$bericht = mysql_real_escape($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape($_POST['naam']);
$bericht = mysql_real_escape($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die(mysql_error());
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
kun je mss een voorbeeld geven van de laatste twee opmerkingen?
edit:
Ik heb het van die error ondertussen begrepen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape($_POST['naam']);
$bericht = mysql_real_escape($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die("Verbinding maken met database is mislukt");
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape($_POST['naam']);
$bericht = mysql_real_escape($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die("Verbinding maken met database is mislukt");
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door bram
Niels. schreef op 03.01.2008 22:45:
htmlspecialchars te vervangen door een mysql_real_escape()
Dan wel mysql_real_escape_string()
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape_string($_POST['naam']);
$bericht = mysql_real_escape_string($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die("Verbinding maken met database is mislukt");
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
If($_SERVER['REQUEST_METHOD'] == "POST") {
$naam = mysql_real_escape_string($_POST['naam']);
$bericht = mysql_real_escape_string($_POST['bericht']);
mysql_connect("prive", "prive", "prive") or die("Verbinding maken met database is mislukt");
mysql_select_db("prive") or die(mysql_error());
mysql_query("INSERT INTO berichtenbalk (username,bericht) VALUES ('$naam','$bericht')");
echo "Klik <a href=\"berichtenbalk.php\">hier</a> om je bericht te bekijken.";
}
else{
echo "<form name=\"formulier\" method=\"post\" action=\"postbericht.php\">";
echo "<b>Naam:</b><br><input type=text name=naam> maximum 15 tekens<br>";
echo "<b>Bericht:</b><br><input type=text name=bericht> maximum 50 tekens<br>";
echo "<input type=submit value='Verstuur' name=verzend>";
echo "</form>";
}
?>
maar ik snap dit nogaltijd niet:
Quote:
Verder lijkt het me ook wel handig dat je de $_POST['naam'] en $_POST['bericht'] controleerd op hun inhoud.
wil iemand een voorbeeld geven?
Gewijzigd op 01/01/1970 01:00:00 door bram
Voorbeeld:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect('prive', 'prive', 'prive'))
{
if(mysql_select_db('prive'))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo 'Error: #1';
}
}
else
{
echo 'Error: #2';
}
}
else
{
echo 'Error: #3';
}
}
else
{
echo 'Error: #4';
}
}
else
{
echo 'Error: #5';
}
}
else
{
echo 'Error: #6';
}
}
else
{
echo 'Error: #7';
}
}
else
{
echo 'Error: #8';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect('prive', 'prive', 'prive'))
{
if(mysql_select_db('prive'))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo 'Error: #1';
}
}
else
{
echo 'Error: #2';
}
}
else
{
echo 'Error: #3';
}
}
else
{
echo 'Error: #4';
}
}
else
{
echo 'Error: #5';
}
}
else
{
echo 'Error: #6';
}
}
else
{
echo 'Error: #7';
}
}
else
{
echo 'Error: #8';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
NB: Niet getest. En de foutafhandeling is verre van ideaal.
Nu mag jij proberen het laatste bestand zelf te doen, als het niet lukt kan ik wel helpen.
btw: Ik weet niet wat jij onder veilig verstaat, maar als dat inhoud dat het ook crossbrowser moet zijn, dan moet je het gebruik van de marquee tag stoppen. Er zijn genoeg JavaScriptjes te vinden die het zelfde doen.
Succes
Edit:
Ook is er iets mis met je datamodel. Je hebt een kolom USER_id, die primaire is? met autoincrement?? Dat kan niet, je kan er gewoon id van maken.
Edit:
FF > en < omgedraait..
Gewijzigd op 01/01/1970 01:00:00 door Citroen Anoniem Graag
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect('prive', 'prive', 'prive'))
{
if(mysql_select_db('prive'))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo '???Niet alle velden zijn correct ingevuld. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.???';
}
}
else
{
echo '???Er heeft zich een fout opgetreden, je bericht is niet toegevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.???';
}
}
else
{
echo '???Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je bericht mag niet meer dan 50 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je naam mag niet meer dan 15 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen bericht ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen naam ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect('prive', 'prive', 'prive'))
{
if(mysql_select_db('prive'))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo '???Niet alle velden zijn correct ingevuld. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.???';
}
}
else
{
echo '???Er heeft zich een fout opgetreden, je bericht is niet toegevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.???';
}
}
else
{
echo '???Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je bericht mag niet meer dan 50 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je naam mag niet meer dan 15 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen bericht ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen naam ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
Mysql_select_db() geeft een false terug als het selectren mislukt. dmv de if structuur zal hij dus alleen doorgaan als het true is.
Eigelijk staat er dit:
if(mysql_select_db(paramters) == true)
mysql_query():
Quote:
Alleen voor SELECT, SHOW, EXPLAIN en DESCRIBE queries geeft mysql_query() een resource identifier terug of FALSE als de query niet correct werd uitgevoerd
php.net
php.net
Als de query dus mislukt krijg je een false. Dus hij checks of de query lukt
Voor mysql_affected_rows() ligt het anders. Deze functies geeft het aantal betrokken rijen terug wat betrokken was bij de laatste query. Dit moet bij een insert query een 1 zijn want we voeren tenstlotte maar 1 rij in.
Tip: Kijk op php.net bij de functies die jij niet snapt. Staat vaak veel uitleggen en veel goede (maar ook minder goede) voorbeelden.
Freek schreef op 04.01.2008 19:54:
Voor mysql_affected_rows() ligt het anders. Deze functies geeft het aantal betrokken rijen terug wat betrokken was bij de laatste query. Dit moet bij een insert query een 1 zijn want we voeren tenstlotte maar 1 rij in.
Even precies: mysql_affected_rows geeft het aantal records terug die zijn veranderd door de laatste query. Ze kunnen dus aangemaakt, verwijderd of aangepast zijn. Bij een SELECT query zijn ook rijen betrokken, maar die kun je niet checken met mysql_affected_rows.
Freek schreef op 03.01.2008 23:23:
Nu mag jij proberen het laatste bestand zelf te doen, als het niet lukt kan ik wel helpen.
Ik heb het geprobeerd, maar er komt een error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
hier is het script:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db('prive'))
{
$data = "Select * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8";
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array($data))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
Print "Alleen de laatste 8 berichten worden getoond.";
}
else
{
print "Verbinden met Database is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "<p>Verbinden met MySQL host is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
?>
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db('prive'))
{
$data = "Select * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8";
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array($data))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
Print "Alleen de laatste 8 berichten worden getoond.";
}
else
{
print "Verbinden met Database is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "<p>Verbinden met MySQL host is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
?>
Sterker nog, je voert hem nergens uit met mysql_query(). Dat zul je dus nog even moeten doen met uiteraard de nodige foutafhandeling...
ik heb nu alles aangepast wat jullie hebben gezegd, is mijn script nu inorde om online te zetten op mijn website. Of zijn er mss toch nog mankementen?
----------------------------
postbericht.php
----------------------------
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db("prive"))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo 'Niet alle velden zijn correct ingevuld. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Er heeft zich een fout opgetreden bij het opslaan van de gegevens, je bericht is niet toegevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<p>Het verbinden de MySQL host is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je bericht mag niet meer dan 50 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je naam mag niet meer dan 15 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen bericht ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen naam ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
if(isset($_POST['naam']) && !empty($_POST['naam']))
{
if(isset($_POST['bericht']) && !empty($_POST['bericht']))
{
if(strlen($_POST['naam']) < 15)
{
if(strlen($_POST['bericht']) < 50)
{
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db("prive"))
{
$qBerichtenBalk = "INSERT INTO berichtenbalk (username, bericht) VALUES ('".mysql_real_escape_string($naam)."','".mysql_real_escape_string($bericht)."');";
if(mysql_query($qBerichtenBalk))
{
if(mysql_affected_rows() == 1)
{
echo 'Uw bericht is succesvol toegevoegd.';
echo 'Klik <a href="berichtenbalk.php">hier</a> om je bericht te bekijken.';
}
else
{
echo 'Niet alle velden zijn correct ingevuld. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Er heeft zich een fout opgetreden bij het opslaan van de gegevens, je bericht is niet toegevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Het verbinden met de database is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<p>Het verbinden de MySQL host is mislukt. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je bericht mag niet meer dan 50 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je naam mag niet meer dan 15 tekens bevatten. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen bericht ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo 'Je hebt geen naam ingevoegd. Klik <a href="postbericht.php">hier</a> om opnieuw te proberen.';
}
}
else
{
echo '<form method="post" action="postbericht.php">';
echo '<b>Naam:</b><br><input type="text" name="naam" /> maximum 15 tekens<br>';
echo '<b>Bericht:</b><br><input type="text" name="bericht" /> maximum 50 tekens<br>';
echo '<input type="submit" value="Verstuur" name="verzend" />';
echo '</form>';
}
?>
--------------------------
berichtenbalk.php
--------------------------
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
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
<?php
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db("prive"))
{
$query = "Select * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8";
if($data = mysql_query($query))
{
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array($data))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
Print "Alleen de laatste 8 berichten worden getoond.";
}
else
{
print "Er is iets fout gegaan met het halen van de gegevens uit de database, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "Verbinden met Database is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "<p>Verbinden met MySQL host is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
?>
if(mysql_connect("prive", "prive", "prive"))
{
if(mysql_select_db("prive"))
{
$query = "Select * FROM berichtenbalk ORDER BY user_ID DESC LIMIT 8";
if($data = mysql_query($query))
{
Print "<table border=1 width=100%>";
Print "<tr><td width=90%><marquee>";
while($info = mysql_fetch_array($data))
{
Print " <b>" . $info['username'] . "</b>: " . $info['bericht'] . " |";
}
Print "</marquee></td><td width=10%><a href=\"postbericht.php\">voeg bericht toe.</a></td></tr></table><br>";
Print "Alleen de laatste 8 berichten worden getoond.";
}
else
{
print "Er is iets fout gegaan met het halen van de gegevens uit de database, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "Verbinden met Database is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
}
else
{
print "<p>Verbinden met MySQL host is mislukt, klik <a href=\"berichtenbalk2.php\">hier</a> om nog eens te proberen</a>.";
}
?>
Je gebruikt in je INSERT query $naam en $bericht, maar waar maak je die variabelen aan?
Waar komen die $vars op regel 16 eerste script vandaan? Die bestaan niet.
je bedoelt $naam en $bericht? die komen uit het formulier
bram schreef op 07.01.2008 20:54:
je bedoelt $naam en $bericht? die komen uit het formulier
Echt niet.
Dat zijn nog steeds $_POST['naam'] en $_POST['bericht'].