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

Apache Discussion :

URL rewriting et double écriture en base de données


Sujet :

Apache

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut URL rewriting et double écriture en base de données
    Bonjour,

    J'ai un pb avec mon htaccess, je veut faire un renvois pour tout les url du site vers index.php.
    J'ai trouvé qu'il fallait mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    RewriteEngine On
    RewriteRule ^(.*)$ index.php [L]
    Cela marche bien pour le renvois, par contre, quand je fait une requête sql de type insert, ca me la fait 2 fois ...

    J'ai tout tester avant de me tourner vers le .htaccess, et si je le vire tout revient dans l'ordre.

    Pouriez vous me dire en quoi mon code ne va pas ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Ca me rappelle une discussion sur un problème similaire : http://www.developpez.net/forums/d11...gistre-2-fois/. Sauf qu'aucune réécriture ne semble en cause. Ceci dit, je pense que le problème est similaire car Apache n'a aucune raison d'appeler le script index.php plusieurs fois : il ne l'appellera qu'à la fin de la réécriture, pas pendant puis à la fin. Il serait intéressant que tu ajoutes des traces au début de ton script pour savoir combien de fois il est réellement appeler et que tu regardes dans l'access_log combien de fois le script est appelé, vu du navigateur.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Bonsoir,

    Alors pour le fils dont vous parlez, du exit qu'il n'avait pas mis après sa redirection php, hors moi je redirige via le .htaccess, de ce sa solution ne me convient pas. Mais si on exploite la piste de la similitude, comment faut il finir un .htaccess pour ne pas avoir de problème ?

    Pour l'access_log, je sais pas comment on l'utilise, mais je peut rien faire sur le serveur.

    Pour les test, on dirait qu'il boucle ma page, car j'ai tester d'envoyer 2 requête simple, et il me rentre la premiére puis la seconde, puis de nouveau la premiére, et la seconde pour finir.

    Ca vient pas de ma requête, car je l'ai enregistré directement dans phpmyadmin, et ca marche bien, ca vient pas de ma class qui traite la requête, car j'ai tester une requête super simple, il n'y a que quand je vire ma redirection que j'enregistre comme il faut une seul fois la requête.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Citation Envoyé par Estragon007 Voir le message
    Mais si on exploite la piste de la similitude, comment faut il finir un .htaccess pour ne pas avoir de problème ?
    Ce que je veux dire c'est qu'a priori le .htaccess n'est pas en cause car Apache n'appelle pas tout seul 2 fois un script sous prétexte qu'on redirige dessus par .htaccess. Si Apache exécute réellement 2 fois le script c'est parce que le navigateur demande à exécuter 2 fois le script pour une raison inconnue. A contrario, si on constate qu'Apache n'appelle bien qu'une seule fois le script, il faut vérifier le code PHP. L'idée c'est donc d'abord de savoir qui exécute ou appelle quoi 2 fois, d'où les diverses demandes. Si on ne fait pas ça d'abord, je ne vois pas comment on peut avancer, si ce n'est à tâton.

    Citation Envoyé par Estragon007 Voir le message
    Pour les test, on dirait qu'il boucle ma page, car j'ai tester d'envoyer 2 requête simple, et il me rentre la premiére puis la seconde, puis de nouveau la premiére, et la seconde pour finir.
    Le "il", qui c'est ? Le navigateur ? Apache ? Autre chose ?
    Quel sens donnes-tu au mot "requête" ? Requête SQL ou requête HTTP ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Le "il" c'est le truc qui me fait galérer ^^, mais je sais pas quoi.
    La requête c'est du sql.

    "L'idée c'est donc d'abord de savoir qui exécute ou appelle quoi 2 fois, d'où les diverses demandes."

    Oui mais que faut il faire ?

    Alors je fait ma requête ici dans une class
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $q = $this->_db->prepare('INSERT INTO '.$this->_table.' ( '.$col.' ) VALUES ( '.$val.' )');
     
    foreach($tab as $t){
    	$b = '_'.$t;
    	$q->bindValue(':'.$t, $this->$b);
    }	
     
    $q->execute();
    var_dump($q);
    $id = $this->_db->lastInsertId();
    Et je l'appel ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $bob = new User;
    $bob->_nom = 'Cess';
    $bob->_prenom = 'Bob';
    $bob->_dateCreation = '2000-01-01';
    echo $bob->add();
    Dans ma base j'ai donc 2 entrés qui on juste de différent leur id.

    Donc comme j'ai fait un var_dump de la requête, et un echo de l'id, le resultat est :

    object(PDOStatement)#5 (1) { ["queryString"]=> string(97) "INSERT INTO users ( id,nom,prenom,dateCreation ) VALUES ( :id , :nom , :prenom , :dateCreation )" } 1

    J'ai le retour de l'id 1 alors que en toute logique je devrais avoir 2 ( vue que le last id c'est 2 ).

    Maintenant, si je mes ce qu'il y a en commentaire dans mon .htaccess, et bien tout ce passe normalement.
    ( Ce pourquoi j'incrimine le .htaccess )
    Je suis débutant, je sais pas trop quoi faire comme test pour savoir qui fait quoi

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2011
    Messages : 13
    Par défaut
    Ok alors pour info, ca venait de mon navigateur ( chrome, safari ).
    J'ai transformé mon .htaccess :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/index\.php
    RewriteCond %{SERVEUR_PORT} ^80$
    RewriteRule ^.*$ /index.php [L]
    La ligne qui fait que ca marche bien maintenant c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteCond %{SERVEUR_PORT} ^80$
    En gros d'après le gars qui gère le serveur de l'entreprise ou je suis en stage, c'est a cause du préchargement du navigateur.

    Merci pour le temps que vous avez passé a me répondre.

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

Discussions similaires

  1. [XL-2007] Double click sur base de données
    Par Sempre5 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2014, 12h17
  2. Réponses: 3
    Dernier message: 10/09/2012, 14h35
  3. [URL rewriting] Gérer des ID en base de données
    Par mims1664 dans le forum Apache
    Réponses: 11
    Dernier message: 26/03/2012, 21h57
  4. Réponses: 12
    Dernier message: 02/02/2009, 19h57
  5. Réponses: 3
    Dernier message: 01/12/2008, 01h32

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