probleem bij post
ik heb een probleem met mijn post in php naar mysql.
als ik een nieuws bericht wil toevoegen met normale tekst, dan gaat dat, maar zodra ik een brief van 2000 letters wil toevoegen in de database, dan wil hij daar niet aan mee werken. hoe kan dit?
gaat om deze add 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
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
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
<?
if($_GET['actie'] == 2){
if($_POST['gebruikersnaam'] == $adminnaam && $_POST['wachtwoord'] == $password){
Setcookie("gebruikersnaam", $_POST['gebruikersnaam'], Time()+$_POST['tijdingelogd']);
Setcookie("wachtwoord",$_POST['wachtwoord'], Time()+$_POST['tijdingelogd']);
echo "<font color=yellowgreen>»</font> Je bent succesvol ingelogd! Je wordt over 2 seconden naar je pagina gestuurd.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=postnieuws.php\">";
}else{
echo "<font color=yellowgreen>»</font> <b>Error:</b> Je hebt 1 of meer velden niet correct ingevuld.";
}
}else{
if($_COOKIE['gebruikersnaam'] != $adminnaam && $_COOKIE['wachtwoord'] != $password){
echo "<form name=\"inloggen\" action=\"postnieuws.php?actie=2\" method=\"POST\">
Gebruikersnaam:<br><input type=\"text\" name=\"gebruikersnaam\"><br><br>
Wachtwoord:<br><input type=\"password\" name=\"wachtwoord\"><br><br>
Tijd ingelogd:<br><select size=\"1\" name=\"tijdingelogd\">
<option value=\"3600\">Een uur</option>
<option value=\"86400\">Een dag</option>
<option value=\"604800\">Een week</option>
<option value=\"18144000\">Een maand</option>
<option value=\"22118400\">Een jaar</option>
<option value=\"2211840000\">Altijd</option>
</select><br>
<input type=\"submit\" name=\"verzenden\" value=\"login\">
</form>
";
}else{
if($_POST[Submit]){
if($_POST[titel] != "" AND $_POST[bericht] != "" AND $_POST[naamn] != ""){
mysql_query("INSERT INTO nieuws (titel, naamn, bericht, datum, tijd) VALUES ('$_POST[titel]', '$_POST[naamn]', '$_POST[bericht]', '$datum', '$tijd' )");
echo"<font color=yellowgreen>»</font> Je nieuws is succesvol toegevoegd klik <a href=\"index.php\">hier</a> om het te bekijken.";
}
else{
echo"<font color=yellowgreen>»</font> <b>Error:</b> Je moet wel alle velden invullen.";
}
}else{
echo "<form name=\"form\" method=\"post\" action=\"\"><table width=\"400\" border=\"0\" cellspacing=\"0\">
<tr>
<td width=\"50%\">Titel</td>
<td width=\"50%\">
<input name=\"titel\" type=\"text\" size=\"50\"
</td>
</tr>
<tr>
<td width=\"50%\">
<input type=\"hidden\" name=\"naamn\" value=\"$voornaam\" >
</td>
</tr>
<tr>
</tr>
<tr>
<td>Nieuws </td>
<td>";
klik(); buttons();
echo "<textarea rows=50 cols=\"60\" name=\"bericht\"></textarea><br>";
smileys();
echo "</td>
</tr>
<tr>
<td width=\"50%\"></td>
<td><input type=\"submit\" name=\"Submit\" value=\"Post nieuws!\"></td>
</tr>
</table>
</form>";
}
}
}
?>
if($_GET['actie'] == 2){
if($_POST['gebruikersnaam'] == $adminnaam && $_POST['wachtwoord'] == $password){
Setcookie("gebruikersnaam", $_POST['gebruikersnaam'], Time()+$_POST['tijdingelogd']);
Setcookie("wachtwoord",$_POST['wachtwoord'], Time()+$_POST['tijdingelogd']);
echo "<font color=yellowgreen>»</font> Je bent succesvol ingelogd! Je wordt over 2 seconden naar je pagina gestuurd.";
echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"2; URL=postnieuws.php\">";
}else{
echo "<font color=yellowgreen>»</font> <b>Error:</b> Je hebt 1 of meer velden niet correct ingevuld.";
}
}else{
if($_COOKIE['gebruikersnaam'] != $adminnaam && $_COOKIE['wachtwoord'] != $password){
echo "<form name=\"inloggen\" action=\"postnieuws.php?actie=2\" method=\"POST\">
Gebruikersnaam:<br><input type=\"text\" name=\"gebruikersnaam\"><br><br>
Wachtwoord:<br><input type=\"password\" name=\"wachtwoord\"><br><br>
Tijd ingelogd:<br><select size=\"1\" name=\"tijdingelogd\">
<option value=\"3600\">Een uur</option>
<option value=\"86400\">Een dag</option>
<option value=\"604800\">Een week</option>
<option value=\"18144000\">Een maand</option>
<option value=\"22118400\">Een jaar</option>
<option value=\"2211840000\">Altijd</option>
</select><br>
<input type=\"submit\" name=\"verzenden\" value=\"login\">
</form>
";
}else{
if($_POST[Submit]){
if($_POST[titel] != "" AND $_POST[bericht] != "" AND $_POST[naamn] != ""){
mysql_query("INSERT INTO nieuws (titel, naamn, bericht, datum, tijd) VALUES ('$_POST[titel]', '$_POST[naamn]', '$_POST[bericht]', '$datum', '$tijd' )");
echo"<font color=yellowgreen>»</font> Je nieuws is succesvol toegevoegd klik <a href=\"index.php\">hier</a> om het te bekijken.";
}
else{
echo"<font color=yellowgreen>»</font> <b>Error:</b> Je moet wel alle velden invullen.";
}
}else{
echo "<form name=\"form\" method=\"post\" action=\"\"><table width=\"400\" border=\"0\" cellspacing=\"0\">
<tr>
<td width=\"50%\">Titel</td>
<td width=\"50%\">
<input name=\"titel\" type=\"text\" size=\"50\"
</td>
</tr>
<tr>
<td width=\"50%\">
<input type=\"hidden\" name=\"naamn\" value=\"$voornaam\" >
</td>
</tr>
<tr>
</tr>
<tr>
<td>Nieuws </td>
<td>";
klik(); buttons();
echo "<textarea rows=50 cols=\"60\" name=\"bericht\"></textarea><br>";
smileys();
echo "</td>
</tr>
<tr>
<td width=\"50%\"></td>
<td><input type=\"submit\" name=\"Submit\" value=\"Post nieuws!\"></td>
</tr>
</table>
</form>";
}
}
}
?>
en de rij in mysql is een text
Gewijzigd op 01/01/1970 01:00:00 door Jantaeke
Wat je zou kunnen doen is naar je SQL beheerdersgedeelte gaan, en je veldje waar de berichten in komen opzetten naar een FULLTEXT waarde en daarachter het aantal characters instellen op 30000 of nja., wat je maar wil
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `nieuws` (
`id` int(3) NOT NULL auto_increment,
`titel` varchar(60) NOT NULL default '',
`naamn` varchar(60) NOT NULL default '',
`bericht` text NOT NULL,
`datum` varchar(20) NOT NULL default '',
`tijd` varchar(20) NOT NULL default '',
`teller` varchar(20) NOT NULL default '0',
`reactie` varchar(20) NOT NULL default '0',
PRIMARY KEY (`id`),
FULLTEXT KEY `bericht` (`bericht`)
) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;
`id` int(3) NOT NULL auto_increment,
`titel` varchar(60) NOT NULL default '',
`naamn` varchar(60) NOT NULL default '',
`bericht` text NOT NULL,
`datum` varchar(20) NOT NULL default '',
`tijd` varchar(20) NOT NULL default '',
`teller` varchar(20) NOT NULL default '0',
`reactie` varchar(20) NOT NULL default '0',
PRIMARY KEY (`id`),
FULLTEXT KEY `bericht` (`bericht`)
) ENGINE=MyISAM AUTO_INCREMENT=36 DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;
zoiets, maar dat mag je zelf bepalen
staat er alja, onderaan...
Gebruik DATE of DATETIME.
edit:
deze fout krijg ik als ik gewijzigd een lange tekst wil:
Code (php)
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near at line 1
Gewijzigd op 01/01/1970 01:00:00 door jantaeke
Edit: En de complete error is.....?
Nu staat er ....syntax to use near at line.... en achter 'near' staat normaal dus exact waar die op vastloopt.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
dat is de fout
mysql_real_escape_string() over je $_POST variabelen die je in de query zet. Dat beschermt tegen SQL injection en zorgt dat de laatstgegeven fout verdwijnd ;-). Het escaped nl. de '.
Haal 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
$sql = "INSERT INTO nieuws
(
titel,
naamn,
bericht,
datum
)
VALUES
(
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['naamn'] . "',
'" . mysql_real_escape_string($_POST['bericht'] . "',
NOW()
)";
$result = mysql_query($sql);
if($result)
{
// verder gaan
}
else
{
// error
}
?>
$sql = "INSERT INTO nieuws
(
titel,
naamn,
bericht,
datum
)
VALUES
(
'" . mysql_real_escape_string($_POST['titel']) . "',
'" . mysql_real_escape_string($_POST['naamn'] . "',
'" . mysql_real_escape_string($_POST['bericht'] . "',
NOW()
)";
$result = mysql_query($sql);
if($result)
{
// verder gaan
}
else
{
// error
}
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
thanxx mensen! ja ik heb het wel beveiligd, boven het post script.
jantaeke schreef op 20.01.2009 19:33:
ja ik heb het wel beveiligd, boven het post script.
Lijkt mij dat dat dan niet werkt, anders loop je niet vast op een enkele quote.