Problème avec les ' '

Signaler
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008
-
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008
-
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

Messages postés
115
Date d'inscription
mercredi 27 août 2003
Statut
Membre
Dernière intervention
7 mars 2008

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 " ";
?>
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008

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!
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
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  
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008

À 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)
{
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008

?
Messages postés
43
Date d'inscription
mercredi 22 novembre 2006
Statut
Membre
Dernière intervention
26 février 2008

Personne pour m'aider ?