login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Niet alle berichten worden toevoegd

Offline Raze - 15/05/2009 10:11
Avatar van RazePHP beginner Ik heb onderstaande code om te reageren op een forumbericht:
  1. if(isset($_POST['submit'])) {
  2. $date_today = date('Y-m-d H:i:s');
  3. $q_insert = "INSERT INTO reacties(s_id,user,datetime,text,code) VALUES ('".$s_id."','$_SESSION['username'],'".$date_today."','".htmlentities($_POST['text'])."','".$_POST['code']."')";
  4. $r_insert = mysqli_query($database,$q_insert);
  5. header ("Location:".$_SERVER['PHP_SELF']."?id=".$s_id);
  6. }

session_start() enzo staat ook allemaal op de pagina, en de velden text en doe zijn allebei van het type TEXT in de database.
Nu is het probleem: er worden soms berichten toegevoegd aan de database, en soms niet  

mijn vermoeden is dat er te veel tekst wordt geschreven, maar ik heb het ook zelf uitgeprobeerd, en zelfs 20 lijnen van pakweg 40 tekens per lijn voegt hij niet toe, en normaal zou een 'TEXT'-veld dit gemakkelijk moeten kunnen verwerken.

Iemand een idee hoe dit komt?

8 antwoorden

Gesponsorde links
Offline Rik - 15/05/2009 11:21
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je moet sowieso je input beveiligen. Als iemand er nu quotes in heeft staat zal je query niet meer werken. Als je een datetime veld gebruikt voor de datum kun je ook die ook laten invullen zonder tussenkomst van php.

Als je zeker wilt weten wat er aan de hand is kun je het beste eens kijken wat PHP.net: mysqli_error() zegt.
Offline Abbas - 15/05/2009 11:24 (laatste wijziging 15/05/2009 11:25)
Avatar van Abbas Gouden medaille

Crew .NET
Krijg je een foutmelding of iets dergelijks? Probeer eens een aantal keer met een kleiner bericht en kijk of dat werkt. Echo je query of geef er een resultaat van weer ofzo.. 

Edit:
Boukefalos was me voor met wat ik wou zeggen! D:
Offline Raze - 15/05/2009 14:39
Avatar van Raze PHP beginner een kleiner bericht werkt steeds.

@boukefalos: dat van die input beveiligen klopt, maar daar was ik nog niet ;)
ook dat datetime-veld heb je gelijk in, dat ga ik veranderen.
Maar ik krijg dus geen error (en er staat bij mijn dbc-connectie ook mysqli_error()).
Offline ArieMedia - 15/05/2009 14:46 (laatste wijziging 15/05/2009 14:53)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Citaat:
een kleiner bericht werkt steeds.


Zet je Varchar (waarscheinlijk?) om naar LONGTEXT

Edit: En de tijd heb je ook een SQL-functie voor, NOW()
Edit2: $_SERVER['PHP_SELF'] is gevaarlijk om te gebruiken =)
Offline Raze - 15/05/2009 14:54
Avatar van Raze PHP beginner @Arie2Zero: in mijn eerste bericht zeg ik al dat het type 'TEXT' is en niet 'VARCHAR'...

@Boukefalos(opnieuw): ik heb mijn input nu beveiligd met mysqli_real_escape_string() -> hij doet dan niets (ook geen kleine berichten)
daarna met mysql_real_escape_strinh() -> doet hij ook niets
geen mysql_... beveiliging -> hij plaatst wel kleine berichten
Offline ArieMedia - 15/05/2009 15:04 (laatste wijziging 15/05/2009 15:08)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
TEXT is nogsteeds geen LONGTEXT  

Goede code zoals het hoort te werken..
  1. if(isset($_POST['submit'])) {
  2. $text = addslashes(htmlentities($_POST['text']));
  3. $code = addslashes($_POST['code']);
  4. $date_today = date('Y-m-d H:i:s');
  5. $q_insert = "INSERT INTO reacties (s_id,user,datetime,text,code)
  6. VALUES (".$s_id.", '".$_SESSION['username']."', NOW() ,'".$text."','".$code."')";
  7. $r_insert = mysqli_query($database,$q_insert);
  8. header ("Location: URLMAARNIETMETPHP_SELFWANTDITISONVEILIG?id=".$s_id);
  9. }


Nogn opmerking,.. Gebruikers nooit op Username opslaan, maar op ID =) Numerieke zoekvelden zijn sneller en het is veiliger als iemand zijn naam veranderd wil hebben bijv.
Offline Ultimatum - 15/05/2009 15:18
Avatar van Ultimatum PHP expert Ligt het probleem niet aan mysqli? Probeer eens mysql functies anders

@Arie2Zero:
Citaat:
Today’s scary discovery: MySQL TEXT fields have a limit of 65,000 bytes


Text is dus prima voor berichten.
Offline Raze - 15/05/2009 15:26 (laatste wijziging 15/05/2009 15:28)
Avatar van Raze PHP beginner hehe, heb daarjuist een héél lang bericht kunnen plaatsen, en ik denk dat ik het probleem heb

ik zet soms bij mijn berichten een stukje php-code.
ik gebruik nog geen highlighting (daar zit ik nog niet)

een klein stukje, bv <,php echo "blablabla"; ?>, gaat nog, maar een code van bv 5 regels invoegen gaat niet, dan slaat hij niet op, ook al staat er geen tekst bij.
ik gebruik dan htmlentities() en nl2br() om het toch iet of wat deftig te kunnen weergeven, maar er valt niet veel weer te geven.
berichten zonder code kunnen dus blijkbaar wel heel lang zijn.
waar zit het probleem dan?
@Arie2Zero:
in de website waar ik het wil gaan gebruiken gebruik ik al lang id's ipv username, maar omdat ik dit wou gaan testen, had ik geen zin om ook nog eerst de id's te gaan 'vertalen' in de username's, nu kan ik gewoon de $_SESSION['username'] rechtstreeks bij het bericht opslaan.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.208s