8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous ...




Si ça continue je vais dévissé, écraser ma souris et apprendre à voler à mon ordi ! Smiley rale

J'ai créé un formulaire on ne peut plus basique pour pouvoir poster des articles sur mon blog ...

Celui-ci marche ... Mais alternativement ... Smiley biggol

Il marchait parfaitement auparavant puis j'ai essayé de le restructurer et d'ajouter des fonctionnalités (tel qu'un BBcode pour les liens) ça a planté le truc et depuis impossible de retomber sur mes pattes même en vérifiant et contre-vérifiant ...
J'ai besoin d'un oeil nouveau sur mon problème ...

J'ai une table "blog" sur ma BDD "2WF" comme ceci ...

http://img178.imageshack.us/img178/5963/blogbs3.jpg

Quand je met 3 mots dans "com" ça marche ...

Mais dès que je mets un peu trop de texte dans la variable "com" (le texte de l'article quoi) ça plante et ça n'envoie rien à la BDD ...
Pourtant une chaine de type TEXT peut accepter un paquet de caractères ...



Voici mon code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Blogueur</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

<style type="text/css">
body { background-color: #CCCCCC }
.nom { font-family:Verdana, Arial, Helvetica, sans-serif; text-align:right; vertical-align:top }
</style>
</head>
<html>
<body>
<form method="post" action="blogueur.php" >
<table border="0" align="center" cellspacing="0" cellpadding="5" >
<tr>
<td class="nom">Title</td>
<td><input type="text" name="title" size="30" /></td>
</tr>
<tr>
<td class="nom">Subtitle</td>
<td><input type="text" name="subtitle" size="20" /></td>
</tr>
<tr>
<td class="nom">Text</td>
<td><textarea name="com" cols="40" rows="24"></textarea></td>
</tr>
<tr>
<td class="nom">Image</td>
<td><input type="text" name="image" size="55" /></td>
</tr>
</table>
<input type="submit" value="Envoyer" />
</form>

<?php
mysql_connect("localhost", "login", "pass"); 
mysql_select_db("2WF");
$jour = date("d");
$mois = date("m");
$annee = date("Y");
$heure = date("H");
$minute = date("i");
$com = nl2br($com);
mysql_query("INSERT INTO blog VALUES ( '' , '$title' , '$subtitle' , '$com' , '$image' , '$jour' , '$mois' , '$annee' , '$heure' , '$minute' )");
mysql_close();
?>

</body>
</html>



Un grand merci à vous parce que là je sature de bloquer sur un truc aussi c** ...

Smiley cligne
Modifié par Velbain (20 Mar 2008 - 22:19)
Salut,

est tu sur que c'est la longueur ou ne serait-ce pas plutôt la presence de ' dans la bestiole.

tu as regardé la requete d'insertion de pres quand ça echoue? avec un die par exemple?

en tout cas inserer comme ça cash dans la BDD sans maniper les données sauf un nl2br c'est plus que risquer.

attention au cross site scripting ou a l'injection de requete SQL.

un petit mysql_real_escape_string ne ferait-il pas du bien?
Modifié par CPascal (20 Mar 2008 - 22:42)
Hop ....




ouuééééééé c'est ça !!! Merci à toi ...

Je suis le seul utilisateur de ce formulaire donc pas énormément de risques d'infiltrations...
A l'avenir je compte protéger ma page d'upload par un mot de passe...
Mais faut déjà qu'elle marche nickel avant toute chose Smiley rolleyes ...

Je pense qu'un "addslashes" pourrait éventuellement résoudre le problème des apostrophes...

Je vais essayer ça ...
Hei ....



Une petit recherche pour trouver le code le mieux adapté à mes besoins ...

Et hop :
$title = htmlspecialchars( $title , ENT_QUOTES);
$subtitle = htmlspecialchars( $subtitle , ENT_QUOTES);
$text = htmlspecialchars( $text , ENT_QUOTES);
$text = nl2br($text);
mysql_query("INSERT INTO blog VALUES ( '' , '$title' , '$subtitle' , '$text' , '$image' , '$jour' , '$mois' , '$annee' , '$heure' , '$minute' )" ) 
or die(mysql_error()) ;


Ce n'est plus $com mais $text par rapport au code 2 posts au dessus Smiley murf ...

La source...


Un grand merci à CPascal pour son oeil averti et ses conseils précis ... Smiley biggrin


Edit : j'oubliais ... Sujet résolu Smiley lol ...
Modifié par Velbain (20 Mar 2008 - 23:30)
par contre, tu pourrais optimiser la structure de ta table mysql.... parce que du text partout, ca craint un peu.. surtout si tu insères juste une date par exemple (pourquoi en différents champs aussi est une bonne question)...
Hop ...



Oué j'ai mis du TEXT partout pour le début pour pas m'emmerder...

On m'a conseillé un "timestamp" pour la date et heure ... Je vais voir ça de plus près ...

Ensuite mettre "title", "subtitle", et "image" en TINYTEXT (255 caractères max) ...
Ou il existe un format encore plus approprié ?

Par contre je compte laisser "text" en TEXT car je pense avoir plus de 255 caractères ...

Qu'est ce que change le fait de passer de TEXT à TINYTEXT ?
C'est plus rapide ?


Merci ..