Bonjour à tous,
J'ai un fichier JS qui lorsqu'il se lance, rajoute #start à la fin. Jusque là tout va bien, SAUF que du coup lorsque je me connecte, via users/login, je ne suis plus redirigé MAIS la connexion se fait bien car quand je clique sur l'accueil par exemple il me dit et montre que je suis bien loggué, donc je suis un peu vis à vis de cette redirection -_-

En gros, c'est comme si la fonction post ne marchait plus, ou marchait en mode "Tu le vois pas AH AH "

function login(){
            if($this->request->is('post')){
                    if($this->Auth->login()){
                            $this->User->id = $this->Auth->user("id");
                            $this->User->saveField('lastlogin',date('Y-m-d H:i:s')); 
                            $this->Session->setFlash("Vous êtes maintenant connecté","notif_ok");
                            $this->redirect(array('controller' => 'accueil', 'action' => 'accueil','?'=>'needconnect=false#SYSTEM'));
                    }else{
                            $this->Session->setFlash("Identifiants incorrects","notif_ko",array('type'=>'error'));
                    }
            }
            if($this->Auth->user('id')){
                $this->Session->setFlash("Vous venez d'être redirigé vers l'accueil car vous êtes déjà connecté.","notif_ok");
                $this->redirect(array('controller' => 'accueil', 'action' => 'accueil','?'=>'needconnect=false#SYSTEM'));
            }
    }

17 réponses


antho07
Réponse acceptée

Ta connection s'effectue en ajax...

Par contre plusieurs problèmes, lorsque tu te connectes, tu as ça comme erreur:

Notice (8): Undefined offset: 0 [APP/Controller/AccueilController.php, line 41]
Notice (8): Undefined offset: 0 [APP/Controller/AccueilController.php, line 43]

antho07
Réponse acceptée

$.ajax({
type: type,
url: action,
data: params,
crossDomain: true,
dataType: 'json',
success: formSuccess,
error: APP.apiError
});

dans ton fichier app.js

Le problème c'est que là on a pas du json en retour... donc le dataType n'a pas lieu d'être.
Mais si on le supprime on suit le chemin js qui conduit à afficher "Data saved with success" en bas...

Je ne suis pas sur que cela soit réellement le fonctionnement escompté...
Y'as de la conception à revoir côté js ici ..
Quelle est la valeur ajoutée d'un traitement ajax sur ton site?

Bonjour

J'ai un fichier JS qui lorsqu'il se lance, rajoute #start à la fin.

=> A quoi sert ce fichier js tu as de l'ajax?

Jusque là tout va bien  
, SAUF que du coup lorsque je me connecte, via users/login, je ne suis plus redirigé MAIS la connexion se fait bien car quand je clique sur l'accueil par exemple il me dit et montre que je suis bien loggué.

Tu fais ta connexion via une requête ajax?

J'ai vraiment du mal à comprendre le contexte.. Essaye de reformuler stp en te mettant à la place des lecteurs, c'est à dire des gens qui ne connaissent absolument pas le travail que tu effectues...

cordialement

Antho

Oui j'avoue que le contexte est un peu complexe, je reformule.

J'utilise Cakephp en version web standard, genre connexion base de données, affichage de page tout le tralala.
Ma connexion n'est pas faite en Ajax, elle est fait normalement comme dans le tuto de Grafikart, via un post, le machin Auth, et zou c'est fait.
Mais à cela je dois rajouter quelque chose qui s'appelle "Mixicom". Cet outil sert à échanger, comme un tchat, et utilise Facebook. Je dois aussi rajouter d'autres fichier Javascript, qui gére le déplacement avec les touches (Genre bas, haut, droite, gauche, etc).

Lorsque le fichier en question "function.js" n'est pas chargé au démarrage, je suis redirigé vers la page d'accueil mais ça c'est le comportement "normal".
En revanche, quand le dit fichier est chargé, et bien la redirection vers la page d'accueil ne fonctionne pas. Je n'ai pas d'erreur, rien, la page reste comme figée. Je dis "comme" car en fait visiblement il a fait le traitement sans qu'on le voit (un peu comme de l'Ajax effectivement) et sans changer de page donc.

Mais le problème est que ce comportement n'est pas "voulu", et qu'il fait comme je viens de le dire "de l'ajax sans le vouloir et sans le voir".

Si tu veux je peux te filer une url et tu vas comprendre le problème ^^

Je suis en effet preneur d'une url

www.esprit-bijoux.com/users/login?needconnect=false
Compte :
login : Test
Mdp : Kenzo123*

Ouais mais elle ne devrait pas, mais visiblement c'est un autre problème merci de t'être penché dessus ^^

Et oui oui je connais ces erreurs, l'utilisateur test n'a pas de jeux donc du coup bim il va chercher dans un tableau vide c'est pour ça qu'il crie ^^

Pourquoi tu as deux fois jquery dans la page?

tu peux dégager le minifié ? t'as un parse error dans la réponse qui te fait planter l'ajax..

Je ne vois que JQuery une seule fois moi

echo $this->Html->script('/js/bytel/jquery-2.0.3.min.js');

Ah ouais exact !
Donc là du coup le bouzin je peux le dégager ? Vu que je m'en sers pas ?

Non remarques je vais voir ça avec les gens concernés en tous cas merci de ta patience et désolé pour ma noobitude -_- mais moi et le Jquery, Ajax, etc je suis pas au top !
Va falloir que je m'y mette...

En faite tu veux faire quoi ? Changer de page à la connexion ? si j'ai bien compris.

Alors pourquoi tu fais un appel ajax?

En fait l'Ajax il est pas de mon fait mais plutôt du fait de ByTel ^^, j'utilise leurs fichiers JS, ils ont fait un package et on ne sait pas ce qu'il y a dedans, donc voilà merci la surprise quand tu le charges -_-

Parce que sinon oui c'est un simple formulaire bidon, que je ne veux pas en Ajax ^^

Parce que tu fais une redirection côté serveur là:
Cela veut dire :

Tu soumets ton formulaire de connexion sur la page login,

ton serveur récupère ses données, les traites et finalement te dit : ok c'est bon , je t'envoi sur cette page.

Mais toi tu es en ajax, c'est à dire en tâche de fond, donc ton navigateur ne bouge pas.
Tu reçois simplement la page redirigé en javascript... à toi de traiter..

Mais il y a clairement un soucis de conception....

En fait, faut que tu imagines que mon application c'est un socle, donc j'ai fait la base et après je viens rajouter deux choses "les API Bouygues Telecom" + "Mixicom", or ce qu'il y a dans ces choses là bah...c'est pas de mon fait ^^ C'est du générique donc je vais voir avec eux pour modifier cela et que ça fonctionne chez moi sans faire déconner la box ^^

Oui mais si tu travailles avec eux, il faut en amont vous mettre d'accord sur le fonctionnement global..
Soit tu t'adaptes, soit ils te fournissent des fonctionnalités, mais ce genre de problème d'intégration doit être éliminer dès le début, du moins en grande partie.

Le problème actuellement c'est que ça: $('form').each(function(index, element) {
// if (APP.db) console.log('validate()');
var $form = $(element);
formBackup$form.attr('id')] = $form.serializeObject(); // backup formS
$form.validate({submitHandler: submitCallback});
});

ça met des comportements ajax sur tous les formulaires. Donc je sais pas , peut être rajouter une condition sur le selector pour permettre d'exclure certains formulaires.

Qu'entends tu par socle ??