Post.php hulp
Ik heb een post.php pagina gemaakt, voor mijn forum. Nu werkt hij alleen niet, ik heb hem al door verschillende phpchecks gehaald en de nodige fouten verwijderd.
De fout is dat ik geen textboxes krijg: naam, object, bericht.
Kan iemand misschien helpen?
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
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
<?php
include "connect.php"; //connection string
print "<link rel='stylesheet' href='styles.css' type='text/css'>";
print "<table class='maintables'>
<tr class='headline'><td>Plaats een bericht</td></tr>
<tr class='maintables'><td>";
if(isset($_post['submit']))
{
$name=$_post['name'];
$yourpost=$_post['yourpost'];
$subject=$_post['subject'];
if(strlen($name)<1)
{
print "You did not type in a name."; //geen naam in ingevoerd
}
else if(strlen($yourpost)<1)
{
print "You did not type in a post."; //je hebt geen post ingevoerd
}
else if(strlen($subject)<1)
{
print "geen onderwerp ingevoerd."; //geen onderwerp ingevoerd
}
else
{
//we now strip HTML injections
$subject=strip_tags($subject);
$name=strip_tags($name);
$yourpost=strip_tags($yourpost);
$insertpost="INSERT INTO posts(author,title,post,realtime,lastposter)
VALUES('$name,'$Subject','$yourpost',NOW(),'$name')";
mysql_query($insertpost) or die("Could not insert post"); //insert post
print "bericht is geplaatst, terug naar <a href='index.html'>Forum</a>.";
}
}
else
{
print "<form action='post.php' method='post'> Naam:<br>
<input type='text' name='name' size='20'><br> Print Subject:<br>
<input tpye='text' name='subject' size='20'><br> Your message:<br>
<textarea name='yourpost' row-'5' cols='40'></textarea><br>
<input type='submit' name='submit' value='submit'>
</form>";
}
print "</td></tr></table>";
?>
include "connect.php"; //connection string
print "<link rel='stylesheet' href='styles.css' type='text/css'>";
print "<table class='maintables'>
<tr class='headline'><td>Plaats een bericht</td></tr>
<tr class='maintables'><td>";
if(isset($_post['submit']))
{
$name=$_post['name'];
$yourpost=$_post['yourpost'];
$subject=$_post['subject'];
if(strlen($name)<1)
{
print "You did not type in a name."; //geen naam in ingevoerd
}
else if(strlen($yourpost)<1)
{
print "You did not type in a post."; //je hebt geen post ingevoerd
}
else if(strlen($subject)<1)
{
print "geen onderwerp ingevoerd."; //geen onderwerp ingevoerd
}
else
{
//we now strip HTML injections
$subject=strip_tags($subject);
$name=strip_tags($name);
$yourpost=strip_tags($yourpost);
$insertpost="INSERT INTO posts(author,title,post,realtime,lastposter)
VALUES('$name,'$Subject','$yourpost',NOW(),'$name')";
mysql_query($insertpost) or die("Could not insert post"); //insert post
print "bericht is geplaatst, terug naar <a href='index.html'>Forum</a>.";
}
}
else
{
print "<form action='post.php' method='post'> Naam:<br>
<input type='text' name='name' size='20'><br> Print Subject:<br>
<input tpye='text' name='subject' size='20'><br> Your message:<br>
<textarea name='yourpost' row-'5' cols='40'></textarea><br>
<input type='submit' name='submit' value='submit'>
</form>";
}
print "</td></tr></table>";
?>
- $name=$_post['name']; is nergens voor nodig.
- $_post moet $_POST zijn.
- die is geen mooie fout afhandeling.
- sql injection is mogelijk
- haal je vars buiten de quotes.
- je controleerd niet of $_POST['name'] en dergelijke wel bestaan.
mysql_* functies zien verouderd. Kijk eens naar MySQLi of PDO
www.phptuts.nl
Quote:
mysql_* functies zien verouderd. Kijk eens naar MySQLi of PDO
Onzin....
- Aar - op 18/05/2011 10:36:32:
Onzin....
Quote:
mysql_* functies zien verouderd. Kijk eens naar MySQLi of PDO
Onzin....
Geen onzin!
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
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
<?php
include_once "connect.php";
echo '<link rel="stylesheet" href="styles.css" type="text/css">
<table class="maintables">
<tr class="headline"><td>Plaats een bericht</td></tr>
<tr class="maintables"><td>';
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(strlen($_POST['name']) < 1)
{
echo 'You did not type in a name.';
}
else if(strlen($_POST['yourpost']) < 1)
{
echo 'You did not type in a post.';
}
else if(strlen($_POST['subject']) < 1)
{
echo 'You did not type in a subject.';
}
else
{
$dbSQL = "INSERT INTO posts (author, title, post, realtime, lastposter) VALUES (
'" . mysql_real_escape_string($_POST['name']) . "',
'" . mysql_real_escape_string($_POST['subject']) . "',
'NOW()',
'" . mysql_real_escape_string($_POST['name']) . "')";
mysql_query($dbSQL) or die("Could not insert post");
echo 'Bericht is geplaatst, terug naar <a href="index.html">Forum</a>.';
}
}
else
{
echo '<form action="post.php" method="post"> Naam:<br>
<input type="text" name="name" size="20"><br> Print Subject:<br>
<input tpye="text" name="subject" size="20"><br> Your message:<br>
<textarea name="yourpost" row="5" cols="40"></textarea><br>
<input type="submit" name="submit" value="submit">
</form>';
}
echo "</td></tr></table>";
?>
include_once "connect.php";
echo '<link rel="stylesheet" href="styles.css" type="text/css">
<table class="maintables">
<tr class="headline"><td>Plaats een bericht</td></tr>
<tr class="maintables"><td>';
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(strlen($_POST['name']) < 1)
{
echo 'You did not type in a name.';
}
else if(strlen($_POST['yourpost']) < 1)
{
echo 'You did not type in a post.';
}
else if(strlen($_POST['subject']) < 1)
{
echo 'You did not type in a subject.';
}
else
{
$dbSQL = "INSERT INTO posts (author, title, post, realtime, lastposter) VALUES (
'" . mysql_real_escape_string($_POST['name']) . "',
'" . mysql_real_escape_string($_POST['subject']) . "',
'NOW()',
'" . mysql_real_escape_string($_POST['name']) . "')";
mysql_query($dbSQL) or die("Could not insert post");
echo 'Bericht is geplaatst, terug naar <a href="index.html">Forum</a>.';
}
}
else
{
echo '<form action="post.php" method="post"> Naam:<br>
<input type="text" name="name" size="20"><br> Print Subject:<br>
<input tpye="text" name="subject" size="20"><br> Your message:<br>
<textarea name="yourpost" row="5" cols="40"></textarea><br>
<input type="submit" name="submit" value="submit">
</form>';
}
echo "</td></tr></table>";
?>
- Er zit nog geen goede foutafhandeling in.
- Ook vindt ik persoonlijk zelf dat je prima met een error overweg kan als iets niet is ingevuld, in plaats van elke POST te controleren.
- Kijk eens naar MySQLi.
- Probeer zo overzichtelijker mogelijk te programmeren met de tabs en enters.
Gewijzigd op 18/05/2011 12:10:39 door PHP Scripter
hier de code
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
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
<?php
include_once "connect.php";
echo '<link rel="stylesheet" href="styles.css" type="text/css">
<table class="maintables">
<tr class="headline"><td>Plaats een bericht</td></tr>
<tr class="maintables"><td>';
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(strlen($_POST['name']) < 1)
{
echo 'You did not type in a name.';
}
else if(strlen($_POST['yourpost']) < 1)
{
echo 'You did not type in a post.';
}
else if(strlen($_POST['subject']) < 1)
{
echo 'You did not type in a subject.';
}
else
{
$dbSQL = "INSERT INTO posts (author, title, post, realtime, lastposter) VALUES (
'" . mysql_real_escape_string($_POST['name']) . "',
'" . mysql_real_escape_string($_POST['subject']) . "',
'".date("d/m/y h:i:s")."',
'" . mysql_real_escape_string($_POST['name']) . "')";
$result=mysql_query($dbSQL) or die("Could not insert post");
if($result){
echo 'Bericht is geplaatst, terug naar <a href="index.html">Forum</a>.';
}
}
}
else
{
echo '<form action="post.php" method="post"> Naam:<br>
<input type="text" name="name" size="20"><br> Print Subject:<br>
<input tpye="text" name="subject" size="20"><br> Your message:<br>
<textarea name="yourpost" row="5" cols="40"></textarea><br>
<input type="submit" name="submit" value="submit">
</form>';
}
echo "</td></tr></table>";
?>
include_once "connect.php";
echo '<link rel="stylesheet" href="styles.css" type="text/css">
<table class="maintables">
<tr class="headline"><td>Plaats een bericht</td></tr>
<tr class="maintables"><td>';
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(strlen($_POST['name']) < 1)
{
echo 'You did not type in a name.';
}
else if(strlen($_POST['yourpost']) < 1)
{
echo 'You did not type in a post.';
}
else if(strlen($_POST['subject']) < 1)
{
echo 'You did not type in a subject.';
}
else
{
$dbSQL = "INSERT INTO posts (author, title, post, realtime, lastposter) VALUES (
'" . mysql_real_escape_string($_POST['name']) . "',
'" . mysql_real_escape_string($_POST['subject']) . "',
'".date("d/m/y h:i:s")."',
'" . mysql_real_escape_string($_POST['name']) . "')";
$result=mysql_query($dbSQL) or die("Could not insert post");
if($result){
echo 'Bericht is geplaatst, terug naar <a href="index.html">Forum</a>.';
}
}
}
else
{
echo '<form action="post.php" method="post"> Naam:<br>
<input type="text" name="name" size="20"><br> Print Subject:<br>
<input tpye="text" name="subject" size="20"><br> Your message:<br>
<textarea name="yourpost" row="5" cols="40"></textarea><br>
<input type="submit" name="submit" value="submit">
</form>';
}
echo "</td></tr></table>";
?>
Gewijzigd op 18/05/2011 16:24:49 door johnno janssen
INSERT INTO ... (v1, v2, v3, v4, v5) VALUES (1, 2, 3, 4)
Oftewel: Er mist een value.
Ik heb nu nog 1 fout: No database selected. De rest is opgelost.
Je hebt geen database geselecteerd in connect.php
$username="php";
$password="1234";
$db_name="test";
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select db");
of deze
mysql_connect("localhost", "phpeaststep", "1234")or die("cannot connect to server");
mysql_select_db("test")or die("cannot select db");
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
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
<?php
$db = mysql_connect("localhost", "gebruikersnaam", "wachtwoord") or die("Could not connect.");
if(!$db)
die("no db");
if(!mysql_select_db("forum3", $db))
die("No database selected.");
if(!get_magic_quotes_gpc())
{
$_get = array_map('mysql_real_escape_string', $_get);
$_post = array_map('mysql_real_escape_string', $_post);
$_cookie = array_map('mysql_real_escape_string', $_post);
}
else
{
$_get = array_map('stripslashes', $_get);
$_post = array_map('stripslashes', $_post);
$_cookie = array_map('stripslashes', $_cookie);
$_get = array_map('mysql_real_escape_string', $_get);
$_post = array_map('mysql_real_escape_string', $_post);
$_cookie = array_map('mysql_real_escape_string', $_post);
}
?>
$db = mysql_connect("localhost", "gebruikersnaam", "wachtwoord") or die("Could not connect.");
if(!$db)
die("no db");
if(!mysql_select_db("forum3", $db))
die("No database selected.");
if(!get_magic_quotes_gpc())
{
$_get = array_map('mysql_real_escape_string', $_get);
$_post = array_map('mysql_real_escape_string', $_post);
$_cookie = array_map('mysql_real_escape_string', $_post);
}
else
{
$_get = array_map('stripslashes', $_get);
$_post = array_map('stripslashes', $_post);
$_cookie = array_map('stripslashes', $_cookie);
$_get = array_map('mysql_real_escape_string', $_get);
$_post = array_map('mysql_real_escape_string', $_post);
$_cookie = array_map('mysql_real_escape_string', $_post);
}
?>
je moet wel een gebruikersnaam en wachtwoord er in zetten het kan niet zo zijn dat de gebruikersnaam gebruikersnaam is en het zelfde voor het wachtwoord
Hoe bedoel je precies? Moet er dan nog 1 bij voor de database naam?
bij "hier" moet je de sql gebruikersnaam en wachtwoord invullen hoop dat je het zo begrijpt.
Gewijzigd op 18/05/2011 16:38:37 door johnno janssen
Helemaal bovenin, als eerste:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
Toevoeging op 18/05/2011 16:42:34:
Nu heb ik een hele witte pagina, zonder fout erin. De connectie is dus denk ik gelukt.
Alleen moet ik nog even kijken hoe ik ervoor zorg dat de pagina ook iets toont :). Dat doe ik morgen wel even.
Toevoeging op 18/05/2011 16:43:02:
- SanThe - op 18/05/2011 16:38:28:
Zet error reporting eens aan.
Helemaal bovenin, als eerste:
Helemaal bovenin, als eerste:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
Thanks, dat is echt handig :D
- SanThe - op 18/05/2011 16:15:08:
Ik zie bij de laatste 2 scripts:
INSERT INTO ... (v1, v2, v3, v4, v5) VALUES (1, 2, 3, 4)
Oftewel: Er mist een value.
INSERT INTO ... (v1, v2, v3, v4, v5) VALUES (1, 2, 3, 4)
Oftewel: Er mist een value.
Whoops!
Gewijzigd op 18/05/2011 17:41:33 door PHP Scripter