IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Bloquer et rediriger un appel de page ajax [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut Bloquer et rediriger un appel de page ajax
    Bonjour,

    J'espère avoir mis mon post au bon endroit.

    J'ai un site Internet avec un menu en Ajax qui ouvre donc des pages selon ce que je clique.

    Cependant, un utilisateur pourrait lui même mettre en url une page (qui devrait normalement s'ouvrir en ajax), j'aimerais bloqué cette eventualité.

    Avez vous une idée ?

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il serait plus facile de t'aiguiller si tu donnais un partie du code concerné, ou au moins, que tu nous expliques comment il fonctionne.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Bonjour,

    Merci pour ta réponse mais je ne sais pas trop la partie du code à fournir.
    J'ai surtout besoin d'une méthode.

    Exemple :

    Lorsque je visite mon site, je suis sur index.php.
    Lorsque j'appuie sur la touche "Accueil" de mon menu, la page "accueil.htm" sera affiché sur la partie centrale de mon site (en ajax).

    Or si j'appel directement la page accueil.htm, elle s'affichera pas dans la partie centrale. Je veux donc bloqué cela.

    J'espère que vous comprendrez mieux mon probleme.

    Merci

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 156
    Points : 160
    Points
    160
    Par défaut
    Si tout ton site est sur ce principe, je vois 2 solution...

    En php surveiller la page appelé et rediriger vers le code ajax...

    Sinon url rewriting qui redirige vers un script php qui refera ta fonction ajax...

    La de suite je ne vois que ca, mais il y a surement une solution plus simple...

  5. #5
    Invité
    Invité(e)
    Par défaut
    • Envoyer au script, au moment du clic, un signal (assez complexe pour ne pas qu'il soit trop facilement reproductible) qui garantira que l'action d'affichage a été demandée via un clic à partir du menu ;


    • Changer tes pages accueil.htm, etc. en accueil.php, et effectuer avant l'affichage de celles-ci, un contrôle de l'existence du signal.
      • si la page a été appelée avec ce signal : on l'affiche ;
      • sinon on redirige vers la page correctement affichée.


  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    [demi HS]
    C'est moi ou ça revient à reproduire le problème des frameset mais en plus moderne ?

    Juste comme ça : Quid du référencement et de la gestion des boutons de navigation ?

    Es-tu sur que ce menu AJAX soit une bonne idée ?
    [/demi HS]
    Pourfendeur de singletons en croisade

  7. #7
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Tu pourrais ajouter un header HTTP dans ta requête Ajax, tu pourrais donc réfuser les appels déporvus de cet header.

    Cependant la remarque de Petibidon est à considérer
    Citation Envoyé par Petibidon
    C'est moi ou ça revient à reproduire le problème des frameset mais en plus moderne ?

    Juste comme ça : Quid du référencement et de la gestion des boutons de navigation ?

    Es-tu sur que ce menu AJAX soit une bonne idée ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Merci à tous de votre aide !

    Je veux pas que mon site soit référencé donc il n'y a pas de probleme dessus.

    Sinon auriez vous une petite piste concernant le signal à faire passer pour le détecter ensuite sur chacune des pages (header HTTP ?) ?

    Merci

  9. #9
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    L'ajout du nouveau header (en-tête) personnalisé peut se faire avec la méthode setRequestHeader() de l'objet ajax XMLHttpRequest juste avant de déclencher l'envoi de la requête avec send():

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    request.setRequestHeader("Via-Ajax", "vrai");

    et tu pourras vérifier la présence (avec apache par exemple) via la fonction php apache_request_headers() ou équivalent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $all_headers = apache_request_headers();
    if( array_key_exists( 'Via-Ajax', $all_headers  ) )
    {
      echo $all_headers['Via-Ajax'];
    }
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 256
    Points : 83
    Points
    83
    Par défaut
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Appel des pages en Ajax
    Par riadh8 dans le forum AJAX
    Réponses: 3
    Dernier message: 22/07/2011, 09h37
  2. Réponses: 0
    Dernier message: 20/03/2011, 16h17
  3. [AJAX] Appeller une page php en Ajax pour action sur Mysql
    Par Overstone dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 20/07/2007, 18h23
  4. [HTML] Pb pour appeler une page
    Par tonysky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/04/2005, 13h45
  5. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo