0
votes

JQuery Ajax Obtenez et postez-vous d'accéder à différents fichiers?

Je fais la vérification du courrier électronique sur mon site web. Lorsque l'utilisateur soumet le formulaire, il démarre Ajax Post Demande, qui publie l'e-mail à PHP, ce qui la compare avec une date-date.

que de toujours dans le processus de vérification du formulaire, j'ai une demande d'obtention d'Ajax, qui devrait revenir du même fichier PHP. si le courrier électronique a déjà été utilisé. Mais. Tout fonctionne bien lorsque je passe à la PHP, mais la demande d'obtenir est toujours vide. URL de la demande postale est emailduplication.php mais URL d'obtenir est emailDuplication? _ = Somerandomnumbers . Pourrait-il être le problème? Je ne suis pas expérimenté dans cela, sera heureux de toute aide. Voici les codes

JavaScript xxx

php xxx


3 commentaires

Pourquoi ne vérifiez-vous pas le courrier électronique valide dans le cadre de la réponse postale?


Bienvenue dans le débordement de pile. Premièrement, votre code PHP est vulnérable à l'injection SLQ. Conseillerait de répondre à ce premier. La demande d'obtention aura des données supplémentaires, mais cela n'empêchera pas son utilisation aussi longtemps que cela appelle emailDuplication.php correctement. Les données supplémentaires garantissent simplement que ce n'est pas la lecture d'une version mise en cache. Puisque vous appelez le même script, mais différents verbes, cela devrait fonctionner comme prévu.


^^ "SQL" pas SLQ, désolé. S'il vous plaît voir: php.net/manual/fr/security.database.sql -Injection.php


3 Réponses :


0
votes

Généralement, vous voulez utiliser ASYNC: True.

En outre, vous ne voulez pas permettre que le formulaire se soumettra réellement, car cela élimine toute votre page (recharge toute la chose, sinon navigue à quelque part entièrement). Donc, en fait, le blanc get que vous pourriez voir pourrait être le formulaire de soumettre à couper votre page.

Si vous envoyez des demandes Ajax, la gâchette pour celles-ci doit simplement être un bouton avec un gestionnaire de clic, pas une soumission réelle (sauf en ce que vous soumettez une entrée, vous faites quelque chose comme "Onclick = 'Domyajax (); renvoyer false; '"Pour que l'action de soumission ne se produise pas réellement).

Si vous téléchargez réellement un fichier, lequel vous semblez apparaître ici de chère bonté, veuillez ne pas laisser le client conduire cette fonctionnalité via des fichiers sur leur système, le message de téléchargement a besoin d'une cible pour poster à la poste. Il ne frappe pas votre page. Pour cela, l'incorporation classique d'un iframe est toujours la voie à suivre. Pouah.

Afficher sur une iframe

Je ne sais pas pourquoi deux demandes doivent être envoyées pour faire le travail. Ce ne devrait probablement être qu'un seul message (en supposant que le résultat ultime ici est que vous souhaitez envoyer un courrier électronique s'il s'agit d'un courrier électronique valide), et le serveur vérifie l'e-mail, puis l'envoi s'il est valide.

et n'utilisez pas d'obtenir un message pour distinguer ce que le serveur devrait faire (telle que la vérification d'un courrier électronique par rapport à l'envoi d'une) - la demande elle-même ou l'URL, par exemple inclure "action = vérifyemail" dans vos données de formulaire étant adoptées. , pour dire au serveur quoi faire plutôt qu'il en supposant que c'est un post.

J'espère que certaines de cela sont utiles.


3 commentaires

Merci beaucoup pour le commentaire. Les alertes sont toujours des blancs si je définis retournez false, donc je ne suis pas redirigé. J'utilise la demande postale pour poster le courrier électronique de l'utilisateur à PHP. PHP vérifie si l'e-mail est déjà dans la base de données. Que d'obtenir la demande obtient la réponse et s'il n'y en a pas, il n'y a pas de procéder au processus d'enregistrement. Comme je l'ai dit, cela fonctionne si je reviens sur les alertes sur la page PHP, mais ce n'est pas ce que je suis intéressé. J'ai besoin que les alertes pour afficher le courrier électronique soient déjà utilisées ou envoyées par courrier électronique si c'est OK. Mais je reçois un email valide tout le temps :( J'ai essayé ce que vous m'avez conseillé mais pas de changement. Des idées?


Eh bien, selon votre code PHP, pour une chose si ce n'est pas un message, rien n'est fait. ("Si ($ _ Post)) {...."), et il semble y avoir une extra} à la fin de votre code PHP.


Le get ne peut pas obtenir la réponse du poteau. La réponse revient dans la réponse post, ou elle est perdue (pensez-y comme étant, le serveur fait une demande et vous raccroche ensuite sur vous).



0
votes

Premièrement, je conseillerais de nettoyer votre PHP et de vous assurer qu'il n'est pas vulnérable à l'injection SQL.

function EmailSendForDupe(email){
  $.ajax({
    url: '/files/EmailDuplication.php',
    type: 'post',
    cache: false,
    timeout: 30000,
    data: {
      email: email.toString()
    },
    dataType: "json",
    success: function (json){
      console.log(json);
      if(json.inUse == false){
        alert("Email Sent to " + json.email);
      } else {
        alert("There may have been an error: " + json.error);
      }
    }        
  });
}

function EmailDuplication(email){
  $.ajax({ url: '/files/EmailDuplication.php',
    type: 'get',
    data: {
      email: email.toString()
    },
    dataType: "json",
    cache: false,
    timeout: 30000,
    success: function (json){
      console.log(json);
      if (json.inUse){
        window.alert("Email is already in use");
      } else {
        window.alert("Email valid");
      }
    }
  });
}


0 commentaires

0
votes

Vous manquez de manquer de gérer les données de demande.Si certains essaient d'utiliser GET URL, votre code n'a aucune condition pour le gérer. Vérifier le code modifié. XXX

S'il vous plaît essayez-le et donnez vos commentaires.


0 commentaires