[html/php/sql] reconnaissance des "

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [html/php/sql] reconnaissance des "

par scorpking » 31 mai 2006, 14:09

et moi j'a oublié de dire que j'avai la solution j'a retester le urlencode et urldecode et mon t'ableau s'afiche magnifiquement
merci pour votre aide
et juste pour le plaisir ou si quelqu'un voudrai se lancer dans les meme idioties :P voila le code
<?php
$order = $_POST['orderby'];
$query1 = 'select........'; 
$query=$query1.$order;
echo '
<html>
	<body>';
	echo $query ;
	echo '<p>';
	echo '<p> Use this querie? <form method="post" action="essai2.php4">
			<input type="hidden" value ="'.urlencode($query).'" name ="query">
		<input type=submit value="ok" name="send">
		</form>
	</body>
</HTML>';
page preparation
<?php
	$user = $_POST('user');//a vous de voir d'où ça viendra :p
	$pass = $_POST('pass');
	$database = $_POST('database');
	$conn = ocilogon($user, $pass, $database); //connection to the oracle database
	$query = urldecode($_POST['query']); //take the request from the preview page
	$stid = ociparse($conn, $query);//prepare the querie
	$r = ociexecute($stid, OCI_DEFAULT);//execute the querry
	$ncols = OCINumCols($stid); // give the number of columns
	echo "<HTML> <BODY><TABLE BORDER=1> ";
	echo "<THEAD bgcolor=#9A9A9A>";
		for ( $i=1 ;$i < $ncols+1; $i++)//$i = column number
		{
			$column_name= ocicolumnname($stid, $i); // ocicolumnname return the column name
			echo "<TH> $column_name </TH>";
		}
		echo "</THEAD> <TBODY>";
	$count =0;
	while (OCIFetchInto ($stid, $ligne, OCI_RETURN_LOBS))//read one line of the answer table
	{
		echo "<TR>";
		for ( $i=0 ;$i < $ncols; $i++)//$i = column number
		{
			if(trim($ligne[$i])=="")//test if the case is null
			{
				echo "<TD><FONT color=#CC0066> null </FONT></TD>";//write null in the table
			}
				else
			{
				echo "<TD> $ligne[$i] </TD>" ;write the answer in the table
			}
		}
		echo "</TR> ";
		$count++;//increase the line meter
	}
		echo "</table></TBODY>" ;
		
		echo "<TABLE BORDER=1> 
				<THEAD>
					<TH> N-Line </TH>
				</THEAD>";
		echo	"<TBODY>";
		echo"		<TR><TD> $count </TD></TR>";//post the number of line
		echo"	</TBODY>
				</TABLE>
				</BODY>
				</HTML>";
		echo $query; //post the query after the table
		OCILogoff($conn);
?>
page affichage

par Ryle » 31 mai 2006, 13:25

Sans regarder plus en détail pour l'instant, juste une remarque, c'est que tu n'as pas besoin de guillemets (et tu ne devrais normalement pas en avoir) dans une requête sql.

Pour aliasser une table tu peux utiliser AS :

Code : Tout sélectionner

SELECT s.study_key as study_key, ...
Sinon dans ta requête, tu as une virgule juste apres le select... c'est pas bon..

par zeus » 31 mai 2006, 11:43

modération : ce sujet porte plus sur le PHP que sur le HTML
:arrow: sujet déplacé

par scorpking » 31 mai 2006, 11:32

Image

ça m'affiche ça
( les termes avec ton idée ça donne ça
Warning: ociexecute(): OCIStmtExecute: ORA-24337: statement handle not prepared in c:\program files\easyphp1-8\www\essai2.php4 on line 9

Warning: ocifetchinto(): OCIFetchInto: ORA-24338: statement handle not executed in c:\program files\easyphp1-8\www\essai2.php4 on line 20
alor que avec une autre requete placée directement dans la page je devrai avoir ce résultat

Image

et j'a essayé htmlentities() et specialchar, urlencode rien ne marche[/quote]

par Ryle » 31 mai 2006, 11:20

Regarde avec htmlentities() pour pouvoir mettre ta chaine dans ton champ et html_entity_decode() quand tu la récupères pour éventuellement la décoder côté php :)

[html/php/sql] reconnaissance des "

par scorpking » 31 mai 2006, 08:54

j'ai cette page
<?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];
//	}
//	}
//$query=htmlspecialchars($query2) ;
	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>';
comme cvous pouvez le voir $query à des doubles quotes
qund le code html s'affiche le value de nomé query prend en compte ses quotes et donc s'arrete avant la fin de ma requete

sur cette page
<?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);
?>
rien n'y fais le &quote cause une erreur au niveau de ma requete

j'ais deja teste htmlspecialchar, \" et \\" rien n'a marché