probleem bij post

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jantaeke

jantaeke

20/01/2009 18:22:00
Quote Anchor link
hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?
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
 
PHP hulp

PHP hulp

27/11/2024 23:22:14
 
Pieter Jansen

Pieter Jansen

20/01/2009 18:26:00
Quote Anchor link
Hoe heb je je database ingedeeld? Als je veldnaam bericht bijvoorbeeld VARCHAR is, en is ingesteld op 250 (ik noem maar wat) kunnen er dus maar 250 characters in..

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
 
Jantaeke

jantaeke

20/01/2009 18:29:00
Quote Anchor link
op deze manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 ;
 
Pieter Jansen

Pieter Jansen

20/01/2009 18:30:00
Quote Anchor link
`bericht` fulltext(40000) NOT NULL,

zoiets, maar dat mag je zelf bepalen
 
Jantaeke

jantaeke

20/01/2009 18:32:00
Quote Anchor link
staat er alja, onderaan...
 
- SanThe -

- SanThe -

20/01/2009 18:35:00
Quote Anchor link
Datum en tijd horen niet in een VARCHAR.
Gebruik DATE of DATETIME.
 
Jantaeke

jantaeke

20/01/2009 18:39:00
Quote Anchor link
okey, nog helpt het niet..

edit:

deze fout krijg ik als ik gewijzigd een lange tekst wil:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
- SanThe -

- SanThe -

20/01/2009 18:43:00
Quote Anchor link
TEXT kunnen 65535 characters in. Moet dus werken.

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 -
 
Jantaeke

jantaeke

20/01/2009 18:47:00
Quote Anchor link
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 't (helemaal) niet met mij eens bent. Onderstaand zijn 2 zaken die in mijn ogen m' at line 1

dat is de fout
 
Jesper Diovo

Jesper Diovo

20/01/2009 18:50:00
Quote Anchor link
Haal 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 '.
 
- SanThe -

- SanThe -

20/01/2009 18:54:00
Quote Anchor link
Komt dus door de enkele quote. Je gebruikt ook geen enkele vorm van beveiliging. Ik heb ook de datum en tijd samengevoegd (DATETIME) en de database dat zelf laten invullen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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
}
?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Jantaeke

jantaeke

20/01/2009 19:33:00
Quote Anchor link
thanxx mensen! ja ik heb het wel beveiligd, boven het post script.
 
- SanThe -

- SanThe -

20/01/2009 19:45:00
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.