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 :

[Système] échaper les "


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut [Système] échaper les "
    voila

    j'ai cette ligne <input type="hidden" value ="'.$query.'" name ="query">
    en php qui sera inclu dans un code html dans ce code html $query contien des " donc quand je veut lire value je n'ai qu'une partie du code comment puije ignorer les "dans $query pour avoir mon texte complet sachant que je ne peux pas les suprimer

  2. #2
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    J'ai l'impression que c'est plus un problème de php ça
    addslashes peut t'aider.

  3. #3
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    non déja essayé mais mon code devien un form et malgrer les antislash ma value s'arrete en plein mileu donc antislash marche pas en html

  4. #4
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value ="'.str_replace('"','\"',$query).'" name ="query" />
    ou


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value ="'.str_replace('"','\'',$query).'" name ="query" />
    @ tchaOo°

  5. #5
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    non non et non il ne le prend pas en compte le backslash
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    $order = $_POST['orderby'];
    $query1 = 'select , s.study_key "study_key" ,s.study_num "study_num" ,s.protocol_num "protocol_num" ,s.other_num "OtherID" ,st.study_type "study_type" ,\'?\' "ProductLicense" ,decode(s.unblind_ok,1,\'Yes\',\'No\') "EligibleUnblinding" ,decode(s.encoding,1,\'Yes\',\'No\') "StudySpecificAutoEnc" ,s.study_desc "study_desc" ,ac.cond_name "InvestigatorAlert" ,s.blind_name "blind_name" ,d1.name "Drugs" ,d2.name "Indications" ,d3.name "EventTerms" ,decode(s.event_no_manual,1,\'Yes\',\'No\') "PreventManual" ,decode(s.event_closure,1,\'Yes\',\'No\') "RequireEvent"  from lm_studies s ,lm_study_types st ,cfg_adv_cond ac ,cfg_dictionaries d1 ,cfg_dictionaries d2 ,cfg_dictionaries d3 where s.study_type_id = st.study_type_id and s.alert_ac_id = ac.ac_id (+)and s.deleted is null and st.deleted is null and ac.deleted is null and d1.deleted is null and d2.deleted is null and d3.deleted is null and s.drug_dict= d1.dict_id (+) and d1.usage (+) = 1 and s.event_dict = d2.dict_id (+) and d2.usage (+) = 3 and s.indications_dict = d3.dict_id (+) and d3.usage (+) = 2 order by '; 
    $query2=$query1.$order;
    echo '
    <html>
    	<body>';
    	echo $query2 ;
    	echo '<p>';
    	$long =strlen($query2);
    	for($i=0; $i<$long ;$i++)
    	{
    	if($query2[$i] == '"')
    	{
    		$query.='\"';
    	}
    	else
    	{
    		$query.=$query2[$i];
    	}
    	}
    	echo '<p> Use this querie? <form method="post" action="essai2.php4">
    			<input type="hidden" value ="'.$query.'" name ="query">
    		<input type=submit value="ok" name="send">
    		</form>
    	</body>
    </HTML>';
    voila mon code au niveau php pas de problème mais quand je lance mon submit sur ma page le " de study key est pris comme fin de value

    et comme vous pouvez voir j'ai dejà essayé le \



    edit code page receptrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <?php
     
    	$query = $_POST['query'];
    	$stid = ociparse($conn, $query);
    	$r = ociexecute($stid, OCI_DEFAULT);
    	$ncols = OCINumCols($stid);
    	echo $query;
    	echo "<TABLE BORDER=1> ";
    	//echo "<THEAD bgcolor=#9A9A9A>
    	//		<TH>case_id</TH>
    	//		<TH>field_id</TH>
    	//		<TH>language_id</TH>
    	//		<TH>seq_num</TH>
    	//		<TH>deleted</TH>
    	//		<TH>text</TH>
    	//	</THEAD> <TBODY>";
    	$count =0;
    	while (OCIFetchInto ($stid, $ligne, OCI_RETURN_NULLS))
    	{
    		echo "<TR>";
    		for ( $i=0 ;$i < $ncols; $i++)
    		{
    			if(trim($ligne[$i])=="")
    			{
    				echo "<TD><FONT color=#CC0066> null </FONT></TD>";
    			}
    				else
    			{
    				echo "<TD> $ligne[$i] </TD>" ;
    			}
    		}
    		echo "</TR> ";
    		$count++;
    	}
    		echo "</table></TBODY>" ;
     
    		echo "<TABLE BORDER=1> 
    				<THEAD>
    					<TH> N-Line </TH>
    				</THEAD>";
    		echo	"<TBODY>";
    		echo"		<TR><TD> $count </TD></TR>";
    		echo"	</TBODY>
    				</TABLE>";
    		echo $query;
    		OCILogoff($conn);
    ?>

  6. #6
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Ha oui c'est vrai...

    Ben utilise htmlspecialchars

  7. #7
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut
    Et en remplaçant les " par les ' et inversement ?

  8. #8
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    merci pour les specialchar je vais tester ça dessuite

    et pour les "/' non a cause du code sql

  9. #9
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Citation Envoyé par scorpking
    non non et non il ne le prend pas en compte le backslash
    [CODE]<?php
    for($i=0; $i<$long ;$i++)
    {
    if($query2[$i] == '"')
    {
    $query.='\\"';
    }

    else

  10. #10
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    toujours pas le &quote marche pour l'aficher dans la nouvelle page mais n'est pas pris en compte pour la requete sql et le \\" donne le meme résultat que \"

    j'ajoute en haut le code de ma page reseptrice

  11. #11
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    envoyer une requete par formulaire ça me semble pas des plus optimisé ça.
    Enfin, sinon, pour ton pb, personnellement je mettrais un urlencode ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" value ="'.urlencode($query).'" name ="query">
    et un urldecode la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = urldecode($_POST['query']);
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  12. #12
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    ça a l'air de passer mais j'ai toujours ce problème

    Warning: ociexecute(): OCIStmtExecute: ORA-00936: missing expression in c:\program files\easyphp1-8\www\essai2.php4 on line 8

    Warning: ocifetchinto(): OCIFetchInto: ORA-24374: define not done before fetch or execute and fetch in c:\program files\easyphp1-8\www\essai2.php4 on line 20
    ma requete ne s'execute pas y a t'il une erreur dans mon code???
    le passage par cette page permet la concaténation de la requete aprè le choix des close modifiables ensuite elle renvoi a une page (essai2.php4) unique qui elle traite les donnée et affiche le tableau

  13. #13
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    fais un echo de ta requete juste avant son execution et regarde
    Eventuellement, copie-colle sur le forum
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  14. #14
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    j'a fais l'echo aucune erreur jl'ai juste coupé dans mon copié collé



    ça m'affiche ça

    alor que avec une autre requete placée directement dans la page je devrai avoir ce résultat


  15. #15
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    normal ça? une virgule après le select
    Petit conseil, vu la taille de tes requetes, pour la lisibilité tu devrais mettre les mots SQL en maj
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  16. #16
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    mouai c'est pas mes requetes je ne fais que des copier coller la virgule est une erreur de copier collé apperement
    bref va faloir ke je les reprennes une a une et ke je verifie tous les mots

  17. #17
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $order = $_POST['orderby'];
    $query1 = 'select , s.study_key "study_key" ,s.study_num "study_num" ,s.protocol_num "protocol_num" ,s.other_num "OtherID" ,st.study_type "study_type" ,\'?\' "ProductLicense" ,decode(s.unblind_ok,1,\'Yes\',\'No\') "EligibleUnblinding" ,decode(s.encoding,1,\'Yes\',\'No\') "StudySpecificAutoEnc" ,s.study_desc "study_desc" ,ac.cond_name "InvestigatorAlert" ,s.blind_name "blind_name" ,d1.name "Drugs" ,d2.name "Indications" ,d3.name "EventTerms" ,decode(s.event_no_manual,1,\'Yes\',\'No\') "PreventManual" ,decode(s.event_closure,1,\'Yes\',\'No\') "RequireEvent"  from lm_studies s ,lm_study_types st ,cfg_adv_cond ac ,cfg_dictionaries d1 ,cfg_dictionaries d2 ,cfg_dictionaries d3 where s.study_type_id = st.study_type_id and s.alert_ac_id = ac.ac_id (+)and s.deleted is null and st.deleted is null and ac.deleted is null and d1.deleted is null and d2.deleted is null and d3.deleted is null and s.drug_dict= d1.dict_id (+) and d1.usage (+) = 1 and s.event_dict = d2.dict_id (+) and d2.usage (+) = 3 and s.indications_dict = d3.dict_id (+) and d3.usage (+) = 2 order by '; 
    $query2=$query1.$order;
    echo '
    <html>
    extrait de ton code en haut de la premiere page.
    Je doute qu'il s'agisse d'un pb de copier-coller
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  18. #18
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    si je l'ais retiré je sais pas pourquoi il était là

  19. #19
    Membre éclairé Avatar de scorpking
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    comme d'hab c'est pas magique c'est informatique j'ai toujours pas vu la différence quoi qu'il en soit urlencode et decode marche maintenant merci a tous pour l'aide
    et a wamania pour la solution

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

Discussions similaires

  1. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 21h01
  2. [Système] Employer les fonctions systèmes ?
    Par Blo0d4x3 dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 31/12/2005, 15h32
  3. [Infos Système] Récuperer les infos système
    Par Dolphy35 dans le forum Access
    Réponses: 3
    Dernier message: 07/12/2005, 22h20
  4. Formulaires : problème avec les slashes et les quotes
    Par GarGamel55 dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 16h59
  5. Réponses: 2
    Dernier message: 30/08/2004, 15h48

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