Besoin d'aide avec un script PHP

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Besoin d'aide avec un script PHP

Message par EmmaZL »

Bonjour, je viens d'installer un script très simple en php qui permet d'ajouter des news a une page de mon site. Le problème, c'est que si dans le texte de la news, il y a un (une ?) apostrophe, le texte est coupé et se termine par un / alors que le texte saisi ne s'arrête normalement pas là.

voilà l'adresse de la page : http://www.molos.ch/mblog1.0/index.php

et l'adresse qui sert à ajouter les news : http://www.molos.ch/mblog1.0/add.php

Y a-t-il moyen de modifier le script pour éviter cela et si oui, comment ?

Merci d'avance !

Emma. :wink:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
Mirovinben
Lézard vert
Messages : 194
Inscription : 13 nov. 2004, 08:54

Message par Mirovinben »

Je n'y connais rien en PHP mais...
le ['] doit sûrement servir à délimiter les chaînes de caractères... Donc s'il y a un ['] à l'intérieur de ton texte, l'interpréteur considère que cette chaîne de caractères est terminée.

En langage pascal il suffit de doubler le ['] : 'l''argent n''a pas d''odeur'
En Html, il faut faire précéder le ['] d'un [\] : 'l\'argent n\'a pas d\'odeur'
en PHP... heu...

J'espère que ma réponse a pu t'aider...
Bienheureux les fêlés car ils laissent passer la lumière...
chBok
Iguane
Messages : 991
Inscription : 17 oct. 2003, 19:17

Message par chBok »

en PHP, le délimiteur de caractère est soit ', soit ". Vous allez me dire que ce n'est pas simple et pourtant...

echo "C'est ici que j'écris";
ou
echo 'C\'est ici que j\'écris';

La même chose, non. La première ligne est interprétée, la seconde non. On peut donc introduire des variables dans la première notation, mais l'exécution avec ou sans variables et un peu plus longue (visible sur des milliers ou millions de requêtes serveurs :lol: ).
$var = 'ici';
echo "C'est $var que j'écris";

ok ?
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message par EmmaZL »

Merci à ceux qui ont répondu ! Image

Honnêtement, le PHP c'est du chinois pour moi. :cry:

On m'a dit d'utiliser les fonctions stripslashes pour index.php et addslashes pour add.php, mais je ne sais pas comment.

Voici le code :

Alors, index.php :

Code : Tout sélectionner

<?

// This script is copyright 2003 Robert Murdock.
// www.robscripts.com

?>


<HTML>


<HTML>
<HEAD>
<TITLE>Home - Blog Demo</TITLE>
<LINK REL=stylesheet HREF="scrollblanc.css" type="text/css">
<?

$DBhost = "localhost";  // Change this if needed. Default normally works.
$DBuser = "Emma";   // Change this to your db login name.
$DBpass = "xxxxxx";   // Change this to your db password.
$DBName = "MyMolos";   // Change this to the database name you use.
$table = "blogg";       // Change this to the table you use. 

mysql_connect($DBhost,$DBuser,$DBpass) or die("Unable to
connect to database");
@mysql_select_db("$DBName") or die("Unable to select
database $DBName"); 
$sqlquery = "SELECT * FROM $table ORDER BY pdate DESC";
$result = mysql_query($sqlquery);
$number = mysql_numrows($result);

$i = 0;

if ($number < 1) {
	print "<CENTER><P>There Were No Results for Your
	Search</CENTER>";
	}

else {

		print "<center>";
		while ($number > $i) {


		$pdate = mysql_result($result,$i,"pdate");
		$btext = mysql_result($result,$i,"btext");
?>
<body bgcolor="#dfdfdf">
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" 
style="border-collapse: collapse" 
bgcolor="#dfdfdf" width="100%" height="101" id="AutoNumber1">
    <tr>
      <td width="438" height="101">
      <center>
      <table width="92%" 
height="1" border="0" align="left" cellpadding="0" cellspacing="0" id="AutoNumber1" 
style="border-collapse: collapse">
    <tr>
      <td width="98%" height="1" bgcolor="#dfdfdf">
      <p align="left"></td>
    </tr>
    <tr>
      <td width="98%" height="29" bgcolor="#dfdfdf">
      <font face="Verdana" 
color="#ff8000" size="-2"><b><?=$pdate?></b><hr align="center" size="1"><font face="Verdana" 
color="#333333" size="-2"><?=$btext?></font>
      </td>
    </tr>
    <tr>
      <td width="98%" height="1" bgcolor="#dfdfdf">&nbsp;
      </td>
    </tr>
	
  </table>
      
      </td>
    </tr>
  </table>
  </center>
</div>
</body>


<?

		$i++;
		}
		print "</center>";
	}

?>

</BODY>
</HTML>
et add.php

Code : Tout sélectionner

<?

// This script is copyright 2003 Robert Murdock
// www.robscripts.com

?>

<HTML>
<HEAD>
<TITLE>Home - Add Blog</TITLE>

<?

$password = "xxxxxx";  //  Change this to somthing only you know!

if ($dsp == "Yes") {

$pdate = date("D M d, Y H:i:s");

print "<br>Post Date: $pdate<BR>Text:<BR><BR>$btext";

print "<BR><BR>Do you want to submit this as shown (Hit
"back" on your browser to edit)?";
print "<form action=add.php METHOD=post>";
print "<input type=hidden NAME=dsp VALUE=Insert>";
print "<input TYPE=HIDDEN NAME=pdate VALUE='$pdate'>";
print "<input TYPE=HIDDEN NAME=btext VALUE='$btext'>";
print "<input TYPE=HIDDEN NAME=pass VALUE='$pass'>";
print "<input type=submit value=Submit></form>";


} else if ($dsp == "Insert") {
  
  if ($pass == $password) {

    print "<CENTER>Added.<CENTER><br>";

    $DBhost = "localhost";  // Change this if needed. Default normally works.
    $DBuser = "Emma";   // Change this to your db login name.
    $DBpass = "xxxxxx";   // Change this to your db password.
    $DBName = "MyMolos";   // Change this to the database name you use.
    $table = "blogg";       // Change this to the table you use.


    mysql_connect($DBhost,$DBuser,$DBpass) or die("Unable to connect to database");
    @mysql_select_db("$DBName") or die("Unable to select database $DBName");

    $sqlquery = "INSERT INTO $table (pdate,btext) VALUES('$pdate','$btext')";
    $result = mysql_query($sqlquery);
  
  } else {
    print "Error: Invalid Password (pass: $password | pass2: $pass)";
  }

} else {
?>
<form ACTION="add.php" METHOD="post">
 <input type="hidden" NAME="dsp" value="Yes">

 <p align="left">Add New blog:</p>

 <table border="0">
   <tr>
     <td width="20%"><font face="Verdana" color="#ffffff">Message:</font></td> 
     <td witdh="80%"><textarea name="btext" rows="15" cols="60"></textarea></td>
   </tr>
   <tr>
   <td width="20%"><font face="Verdana" color="#ffffff">Password:</font></td> 
     <td witdh="80%"><input TYPE="text" NAME="pass" size="30"></td>
   </tr>
 </table>    

 <input TYPE="SUBMIT" VALUE="Next >>">

<? } ?>


</BODY>
</HTML>
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Arf, j'aime pas trop ce script : les variables du formulaire devraient être récupérés via le tableau $_POST (par exemple $_POST['pdate']), elles devraient être filtrer (pour les contrôler). addslashes() et stripslashes(), çà dépend de la configuration des magic_quotes du serveur. Dans le cas présent mysql_escape_string() serait plus pertinent que addslashes(). Si tu veux chercher un peu, voilà par exemple :

Code : Tout sélectionner

function formate_chaine($inputPost){
  if (!get_magic_quotes_gpc()){
    $chaine = mysql_escape_string($chaine);
  };
  return $chaine;
};
Si tu n'y comprends rien, à mon avis cherche un autre script
EmmaZL
Lézard à collerette
Messages : 245
Inscription : 07 août 2004, 00:43

Message par EmmaZL »

martin a écrit : Si tu n'y comprends rien, à mon avis cherche un autre script

lol ! C'est ce que j'ai fait ! :lol: :roll: Merci pour ton aide !
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. (devise Shadok)
Ma configuration
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité