Problème avec les ' '

dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008 - 8 févr. 2008 à 22:18
dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008 - 14 févr. 2008 à 00:11
Salut, sur mon site quand je clique un membre qui a un ' dans son nom la page ne fonctionne pas.
Y'a t'il un moyen d'arrenger cela ?

7 réponses

sbool Messages postés 115 Date d'inscription mercredi 27 août 2003 Statut Membre Dernière intervention 7 mars 2008
8 févr. 2008 à 23:08
Oui il y a moyen, pour moi 2 solutions :
1 -> Tu interdit ce caractere lors de l'inscription

2-> Tu ajoute un / devant ton ' lors de l'inscription encore une fois

N'oublie pas egalement de verifier lors de l'inscription si tu n'a pas des doublons pour les pseudos, je te passe le mien en ajax...

dans head

<script type= "text/javascript">
function writediv(texte)
{
document.getElementById('pseudobox').innerHTML = texte;
}

function verifPseudo(pseudo)
{
if(pseudo != '')
{
if(pseudo.length<4)
writediv(' '+pseudo+' : ce pseudo est trop court');
else if(pseudo.length>30)
writediv(''+pseudo+' : ce pseudo est trop long');
else if(texte = file('verifpseudo.php?pseudo= '+escape(pseudo)))
{
if(texte == 1)
writediv(' '+pseudo+' : ce pseudo est deja pris');
else if(texte == 2)
writediv(' '+pseudo+' : ce pseudo est libre');
else
writediv(texte);
}
}

}

function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}
</script>

         
        ----

          &nbsp;

            <table width="369" border="0" cellspacing="0">
              ----

               , Cr&eacute;ez votre compte  d&egrave;s maintenant &gt;&gt; </td>
             
              ----

                Pseudo.,
               
                   ,
             
              ----

                Email.,
                ,
             
              ----

                Mot de passe.,
                ,
             
              ----

                Confirmer le mot de passe.,
                ,
             
              ----

                Inscription &agrave; la newletter.,
                ,
             
              ----

                &nbsp;,
               
                  *,
             
           
            </td>
        </tr>
      </tbody>
    </table>

& le fichier php pour controler le pseudo ....

<?php
/*
CE SCRIPT EST UN EXEMPLE DE SCRIPT PHP
POUR VERIFIER LA DISPONIBILITE D'UN PSEUDO
DANS UNE TABLE SQL

LE SCRIPT DOIT RETOURNER :
1 : SI LE SPEUDO EST DEJA PRIS
2 : SI LE PSEUDO EST LIBRE
*/

// CONNECION SQL
include "db.php";
     //include "statut.php";

// VERIFICATION
$result = mysql_query("SELECT login FROM users WHERE login='".$_GET["pseudo"]."'");
if(mysql_num_rows($result)>=1)
        echo "Ce pseudo est deja utilise!";
else
        echo " ";
?>
0
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
8 févr. 2008 à 23:54
Salut,

Ton script est TRÈS dangereux, on doit TOUJOURS échapper les chaines avant de les entrés, pas du coté client, mais du coté serveur

$result = mysql_query('SELECT login FROM users WHERE login=\''. mysql_real_escape_string ($_GET["pseudo"]).'\'');
if(mysql_num_rows($result)> =1)
....

Pour en revenir au sujet, c'est soit un problème d'échappement avant la vérification, soit un problème du coté du lien html directement.

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
0
dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008
9 févr. 2008 à 00:06
Okay le probleme est pas si compliqué quand je clique sur le nom de la personne j'arrive au profil mais quand les actions récentes affiche leur nom la sa cause probleme.

[username] a mise à jour sa photo.



ses mon code!
0
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
9 févr. 2008 à 00:18
Salut,

C'est ça, un problème avec ton lien html. tu utilise des quote pour enrober l'adresse, si ya des quotes dans le pseudo forcément ça plante.

Le standard html me semble favorisé les " de toute façon.

Enfin bref la solution à ton problème est d'utiliser la fonction urlencode.
$username = urlencode($username);

Ce qui va passé de  : Mon pseudo il a des ' et des "
À : Mon+pseudo+il+a+des+%27+et+des+%22

www.e3b.org  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008
9 févr. 2008 à 02:03
À quel endroit dois-je placé ca?


function user_account($email, $username)
{
global $database, $setting, $class_user;
if (str_replace(" ", "", $email) "" OR str_replace(" ", "", $username) "")
{
$this->is_error = 1;
$this->error_message = $class_user[6];
}
if (ereg('[^a-zA-Z0-9_[:space:][:punct:]]', $username))
{
$this->is_error = 1;
$this->error_message = $class_user[7];
}
$banned_usernames = explode(",", strtolower($setting[setting_banned_usernames]));
if (in_array(strtolower($username), $banned_usernames) === TRUE & str_replace(" ", "", $username) != "")
{
$this->is_error = 1;
$this->error_message = $class_user[8];
}
if (is_dir($username))
{
$this->is_error = 1;
$this->error_message = $class_user[9];
}
$banned_emails = explode(",", strtolower($setting[setting_banned_emails]));
$wildcard_ban = "*" . strstr(strtolower($email), "@");
if ((in_array(strtolower($email), $banned_emails) TRUE | in_array(strtolower($wildcard_ban), $banned_emails) TRUE) & str_replace(" ", "", $email) != "")
{
$this->is_error = 1;
$this->error_message = $class_user[10];
}
if (!is_email_address($email))
{
$this->is_error = 1;
$this->error_message = $class_user[11];
}
$lowercase_username = strtolower($username);
$username_query = $database->database_query("SELECT user_username FROM se_users WHERE LOWER(user_username)='$lowercase_username' LIMIT 1");
if (strtolower($this->user_info[user_username]) != $lowercase_username & $database->database_num_rows($username_query) != 0)
{
0
dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008
12 févr. 2008 à 02:47
?
0
dclick07 Messages postés 43 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 26 février 2008
14 févr. 2008 à 00:11
Personne pour m'aider ?
0
Rejoignez-nous