[Ajax]Permission refusée d'appeler la méthode XMLHttpRequest

Petit nouveau ! | 5 Messages

18 juil. 2007, 14:44

Hello !

Voilà j'ai un petit problème, concernant cette page: http://canalpc.fr/new/ (identifiants test2/test2). Chez moi, la connexion se passe très bien, mais chez mes amis codeurs, il y a une erreur.
Voilà l'erreur:

Code : Tout sélectionner

Erreur : uncaught exception: Permission refusée d'appeler la méthode XMLHttpRequest.open
Mais comment régler ça ?

Pour info, voici le code AJAX pour le login, et la page PHP qui lui est attribuée:

ajax.js :

Code : Tout sélectionner

// Request Login (va interroger requests/login.php, récupère l'echo, et le renvoie vers loginAction(); ) function login (form, page, args) { page_var = page; args_var = args; form_var = form; var xhr = getXhr(); member_name = document.forms[form].member_name.value; member_password = document.forms[form].member_password.value; // On teste si les champs ne sont pas vides if (member_name == '') { document.getElementById("cell_member_name").className = 'red'; document.getElementById("div_member_name").innerHTML = "<div class='erreur'>!</div>"; } else if (member_password == '') { document.getElementById("cell_member_password").className = 'red'; document.getElementById("div_member_password").innerHTML = "<div class='erreur'>!</div>"; } else { xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { str = xhr.responseText; loginAction(str); } } xhr.open("POST", 'requests/login.php', true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("refer=1&member_name="+member_name+"&member_password="+member_password); } }
login.php :
session_start();
$_SESSION["auth"] = 1;
include ("../config.php");

# Rappel:
# {1} = Connexion réussie
# {2} = Mauvais member_name
# {3} = Mauvais member_password

$query = "SELECT member_id,member_password FROM cpc_members WHERE member_name='". mysql_real_escape_string($_POST["member_name"]) ."'";
$sql = mysql_query ($query);
if (mysql_num_rows($sql) == 0)
{
    echo "2";
}
else
{
    $result = mysql_fetch_object($sql);
    if (md5($_POST["member_password"]) == $result->member_password)
    {
        $_SESSION["member_id"] = $result->member_id;
        $_SESSION["login"] = 1;
        echo "1";
    }
    else
    {
        echo "3";
    }
}
Edit: le code d'appel de xhr:

Code : Tout sélectionner

function getXhr() { if (window.XMLHttpRequest) return new XMLHttpRequest(); else if (window.ActiveXObject) { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { return new ActiveXObject("Microsoft.XMLHTTP"); } } else { return false; alert ("Votre navigateur ne supporte pas la technologie Ajax."); } }
Désolé pour la longueur du message, en espérant qu'il n'y a pas eu de relachement :)

Bonne journée

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 juil. 2007, 22:58

tu devrais ajouter un test de l'objet xhr avant son utilisation comme ça:

Code : Tout sélectionner

... if (xhr) { xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { str = xhr.responseText; loginAction(str); } } xhr.open("POST", 'requests/login.php', true); xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); xhr.send("refer=1&member_name="+member_name+"&member_password="+member_password); }//fin if xhr ...
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 132 Messages

20 juil. 2007, 02:33

Eh bien en fait j'ai trouvé d'où venait l'erreur, mais je saurais pas expliquer pourquoi...
En fait j'accédais au serveur en oubliant le www. avant l'adresse, et, allez savoir pourquoi, comme ça ça marche niquel... :?

Quelqu'un saurait pourquoi ?

PS: J'ai aussi de l'url-rewriting...
:: Kmeleon ::
CanalPC - La webradio communautaire :: Ecrivez/Enregistrez/Ecoutez !

ViPHP
ViPHP | 5924 Messages

20 juil. 2007, 15:22

En fait j'accédais au serveur en oubliant le www. avant l'adresse, et, allez savoir pourquoi, comme ça ça marche niquel... :?

Quelqu'un saurait pourquoi ?
Bah www.example.com et example.com, c'est pas la même adresse, c'est tout...
Il faut arrêter de considérer que tous les sites sont www.quelquechose.com, www, c'est un sous domaine comme un autre, c'est simplement le plus utilisé...

Eléphant du PHP | 132 Messages

20 juil. 2007, 15:28

Bien, alors je le saurais pour la prochaine fois :)
Merci en tout cas, et bonne journée !
:: Kmeleon ::
CanalPC - La webradio communautaire :: Ecrivez/Enregistrez/Ecoutez !