2010-05-11 8 views
0

J'ai transformé cette affaire en une simple page PHP qui se soumet à elle-même. Mon problème est que je soumets des résultats de rencontre de piste et l'un des noms de la fille est Echo ... un nom charmant.Comment désinfecter une chaîne PHP contenant "; Echo"? (J'ai une bonne raison)

Le texte du problème que je soumets est: Saut à la perche - Rachel Simons, Tow, 8-6; Echo Wilson, Cit, 8-0; Molly Randall, Tow, 7-0;

Vous voyez un point-virgule suivi par un espace suivi par Echo ...

Après la présentation, il est dit: POST /results/test.php pas pris en charge

L'objectif final est de sauver à une base de données avec quelques autres informations et avoir une page de recherche pour le trouver et simplement imprimer le résultat complet sur l'écran. J'ai retiré toutes mes données de base de données pour arriver à cette erreur. Je veux dire, je peux intentionnellement mal épeler son nom, mais il doit y avoir un moyen de contourner ça, pas vrai?

Voici le fichier PHP de test.

<html> 
<head> 
<title>title</title> 
</head> 
<body> 
<?php 
echo "<h3>Edit meet info below</h3>"; 
echo "<form action=\"test.php\" method=\"post\" id=\"submitForm\">"; 
echo "Full Results:<br/><textarea NAME=\"results\" id=\"results\" rows=\"20\" cols=\"80\" MAXLENGTH=\"8191\"></textarea><br/><br/>"; 
echo "<input type=\"submit\" name=\"submitMeet\" value=\"Submit\">"; 
echo "</form>"; 
?> 
</body> 
</html> 
+1

J'aime courir. –

Répondre

4

Il semble que vous avez un système de sécurité boiteux (peut-être mod_security?) Qui analyse les demandes et le rejet de ceux qui ressemblent ils pourraient être un risque.

Vous devrez demander à votre hébergeur ou quelque chose s'ils peuvent le désactiver. Il n'y a pas de fonction PHP qui rejette arbitrairement une requête POST basée sur n'importe quelle combinaison de texte. (Au moins, pas dans ce cas)

+0

Bon appel. J'ai ensuite trouvé ce post: http://www.liewcf.com/archives/2008/05/how-to-disable-mod_security-in-htaccess-file/ J'ai ouvert un ticket de support avec mon hébergeur et je leur ai demandé désactiver le balayage des ports. SecFilterScanPOST Off Lorsque le ticket a été fermé, j'ai essayé le fichier de test et cela a fonctionné. –

0

Il vous suffira de demander à Echo de changer son nom ... nom ... nom. Mais sérieusement, regardez ce que webdestroya a suggéré. Si cela échoue, je pense que la solution rapide serait de changer le délimiteur que vous utilisez pour séparer les noms dans la requête POST, puis de redéfinir ce délimiteur en points-virgules après sa réception. Donc, vous postez quelque chose comme ceci:

Pole vault - Rachel Simons, Tow, 8-6||Echo Wilson, Cit, 8-0||Molly Randall, Tow, 7-0|| 

faire alors ceci:

$data = str_replace('||', ';', $the_data_you_posted); 

Si vous ne voulez pas taper manuellement le séparateur lors de la saisie des résultats, vous pouvez écrire un petit JavaScript pour convertir le points-virgules automatiquement, par exemple sur soumettre.