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

PHP & Base de données Discussion :

Plantage d"une requete pourtant simple [ODBC]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut Plantage d"une requete pourtant simple
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pseudo = $_GET['pseudo'];
    $sql = "SELECT * FROM matable WHERE pseudo = '$pseudo'";
    J'ai pas de message d'erreur mais lorsque j'essaie de mettre un GET la page et vierge.

    En fesant un echo sur le get la valeur est bien bonne (évidemment j'enlève ma requete SQL sinon la page est blanche !)

    Pourtant avec une SESSION sa marche !

    Pourquoi ?

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pour lutter contre la page blanche, on se place en condition de développement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('error_reporting', E_ALL & ~E_NOTICE );
    ini_set('display_errors', "1" );
    ini_set('display_startup_errors', "1" );
    apres on lit le premier message d'avertissement ou d'erreur, on trouve le nom du fichier , de la ligne incriminé et on relit le message d'erreur. On corrige... etc ...

    EDIT: une fois que ça marche tu devrais faire ce qu'il faut pour eviter les injections sql, parce qu'en l'état c'est pas sécurisé DU TOUT.

  3. #3
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Sa c'est deja fait.

    Et pas d'erreur quand qu'une page blache !

    Je seche !

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    bon mode débutant continue.

    modifie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $pseudo = $_GET['pseudo'];
    ECHO $sql = "SELECT * FROM matable WHERE pseudo = '$pseudo'";
    si jamais il y avait une erreur, c'est le moment ou jamais de l'exhiber. normalement ta page blanche devrait se salir d'un "SELECT * FROM ..."

    m'enfin, tant que je ne vois que ce morceau de code je peux rien faire de plus. Je suis pas un gourou moi; Sinon tes requêtes elles arrivent au serveur avec ce que je t'ai proposé?

  5. #5
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Avec sa j'ai plus page blanche.


    Ma requête s'affiche, et c'est tout.

  6. #6
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    pouf pouf. C'est bon signe !

    C'est quoi la suite du script? parce que si ton script se limite à ça...
    C'est pas parce que tu manipule une chaine de caractère qui contient du sql que la requete que
    1. php va se connecter à la BONNE base de donnée avec le BON utilisateur
    2. php va EXECUTER la requete (gaffe, odbc ya prépare + execute, comme oracle et pas comme mysql )
    3. va lire les résultats retourné par la requete
    4. va formater et afficher le résultat
    5. et envoyer un mail au père noel en cas d'erreur.


    enfin, je suppose que tu es déjà au courant.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par gene69 Voir le message
    pour lutter contre la page blanche, on se place en condition de développement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ini_set('error_reporting', E_ALL & ~E_NOTICE );
    ini_set('display_errors', "1" );
    ini_set('display_startup_errors', "1" );
    pourquoi E_ALL & ~E_NOTICE ? et display_startup_errors a 1 ca sert a rien de le mettre dans le code

  8. #8
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pourquoi E_ALL & ~E_NOTICE ? et display_startup_errors a 1 ca sert a rien de le mettre dans le code
    si, j'en ai déjà eu l'usage du display_startup_error() à une epoque ou je développais en php5 (par flegme) puis j'avais une prod en php4 (douloureux) et comme je pouvais pas éditer php.ini, ni avait acces aux log, je n'avais pour choix que de le forcer. Depuis j'ai gardé l'habitude, même si les hébergeurs professionnels ignorent ce genre de bidouille.

    et pour le notice, je ne sais plus... c'est un vieux copier/coller. de mémoire php4 n'affiche pas les notices par défaut dans E_ALL alors que les versions récentes si. C'est peut-être une annerie.

  9. #9
    Inactif
    Inscrit en
    Octobre 2008
    Messages
    826
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 826
    Par défaut
    Pourtant ma requette s'execute parfaitement avec une session a la place d'un get.

    C'est sa que je comprends pas.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par gene69 Voir le message
    si, j'en ai déjà eu l'usage du display_startup_error() à une epoque ou je développais en php5 (par flegme) puis j'avais une prod en php4 (douloureux) et comme je pouvais pas éditer php.ini, ni avait acces aux log, je n'avais pour choix que de le forcer. Depuis j'ai gardé l'habitude, même si les hébergeurs professionnels ignorent ce genre de bidouille.

    et pour le notice, je ne sais plus... c'est un vieux copier/coller. de mémoire php4 n'affiche pas les notices par défaut dans E_ALL alors que les versions récentes si. C'est peut-être une annerie.
    display_startup_error c'est iniquement au lancement de php, donc la seul valeur prise en compte sera celle du php.ini,
    pour le notice c'est la conf par default, pour avoir le niveau le plus élevé, c'est E_ALL | E_STRICT

    ps : je suis pas d'accord avec ta signature

  11. #11
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    ps : je suis pas d'accord avec ta signature
    je sais cette fonction ne marche qu'en php5. Mais comme trop de gens l'ignorent, 99% des sites refusent la syntaxe user+etiquette@gmail.com, qui est parfaitement valide point de vue RFC, qui marche uniquement avec Gmail. S'il passe de l'expression réguliere au filtre build-in, le dev se simplifie la vie et en plus je peux utiliser les étiquettes sur mon adresse Gmail en bonus. C'est intéressé.

    pour le reste tu as raison.

    note pour le modérateur: je sais je suis hors-sujet. Mais comme tout le monde attend que thebarbarius nous gratifie de la suite de son script pour savoir pourquoi ça ne marche pas mieux, ya rien a faire.

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

Discussions similaires

  1. [AC-2007] Besoin d'aide sur une requête pourtant simple
    Par teuzadur dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 19/03/2013, 16h28
  2. Réponses: 1
    Dernier message: 15/04/2011, 09h33
  3. Une requête pourtant simple qui ne marche pas
    Par JeanNoel53 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/12/2010, 18h30
  4. bloquage sur une requete pourtant simple
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/04/2008, 15h55
  5. comparer deux date dans une requete select simple
    Par isac83 dans le forum Requêtes
    Réponses: 1
    Dernier message: 23/09/2007, 09h53

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