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 :

[Sécurité] boucle infinie je trouve pas l'erreur


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut boucle infinie je trouve pas l'erreur
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <?php
    session_start();
    include ("C:\Program Files\EasyPHP1-8\php\jpgraph-1.20.4\src\jpgraph.php");
    include ("C:\Program Files\EasyPHP1-8\php\jpgraph-1.20.4\src\jpgraph_line.php");
    $queryid=$_SESSION['queryid'];
    $count=$_SESSION['nappel'];
    $nbcols=$_SESSION['nbcols'];
    $query = $_SESSION['request'];
    $conn = ocilogon('as_read', 'as_read.astest', 'ASTEST.ACTELION.COM'); //connection to the oracle database
    $stid = ociparse($conn, $query);//prepare the query
    $r = ociexecute($stid, OCI_DEFAULT);//execute the query
    $ncols = OCINumCols($stid); // give the number of columns
    for ( $i=0 ;$i <= $count; $i++)//$i = column number
    	{
    	$appel[$i]=$_SESSION["appel$i"];
    	}
    $count=0;
    	while (OCIFetchInto ($stid, $ligne, OCI_RETURN_LOBS+OCI_RETURN_NULLS))//read one line of the answer table
    	{
     
    		for ( $i=0 ;$i < $count; $i++)//$i = column number
    		{
    			$j=$appel[$i];
    			switch($i)
    			{
    				case 1:
    				$array1[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 2:
    				$array2[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 3:
    				$array3[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 4:
    				$array4[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 5:
    				$array5[$count]=$ligne[$j] ;//write the answer in the table		
    			}
    		}
     
    		$count++;//increase the line meter
    	}
    	$conn = ocilogon('query_user', 'password', 'asq');
    		$query="select query_label from queries_q where query_id = $queryid";
    		$stid = ociparse($conn, $query);//prepare the querie
    		$r = ociexecute($stid, OCI_DEFAULT);//execute the querry
    		$ncols = OCINumCols($stid); // give the number of columns
    		OCIFetchInto ($stid, $ligne, OCI_NUM );//read 1 line of the result table
    		$graphname=$ligne[0];
    		// Creation du graphique. Ces deux fonctions sont obligatoirement utilisées
    		$graph = new Graph(350,250,"auto");
    		$graph->SetScale("$graphname");
    		for ( $i=0 ;$i < $nbcols; $i++)//$i = column number
    		{
    			$j=$appel[$i];
    			$j++;
    			$column_name= ocicolumnname($stid, $j); // ocicolumnname return the column name
     
     
     
    			switch($i)
    			{
    				case 1:
     
    				// Creation de la courbe
    				$lineplot1=new LinePlot($array1);
    				$lineplot1->SetColor("blue");
     
    				// Ajout de la courbe sur le graphque
    				$graph->Add($lineplot1);
    				case 2:
     
    				// Creation de la courbe
    				$lineplot2=new LinePlot($array2);
    				$lineplot2->SetColor("red");
     
    				// Ajout de la courbe sur le graphque
    				$graph->Add($lineplot2);
    				case 3:
     
    				// Creation de la courbe
    				$lineplot3=new LinePlot($array3);
    				$lineplot3->SetColor("yellow");
     
    				// Ajout de la courbe sur le graphque
    				$graph->Add($lineplot3);
    				case 4:
     
    				// Creation de la courbe
    				$lineplot4=new LinePlot($array4);
    				$lineplot4->SetColor("green");
     
    				// Ajout de la courbe sur le graphque
    				$graph->Add($lineplot4);
    				case 5:
     
    				// Creation de la courbe
    				$lineplot5=new LinePlot($array5);
    				$lineplot5->SetColor("navy");
     
    				// Ajout de la courbe sur le graphque
    				$graph->Add($lineplot5);
    			}
    		}
    // Affichage du graphique
    $graph->Stroke();
    ?>
    pour moi y'a pas d'erreur pourtant jai des notice d'index inexistant pour appel (alor qu'il sont créé et copié collé de la page précédente)
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <?php
    	session_start();
    	$_SESSION['nbcols']=$_POST['glinenum'];
    	$query = $_SESSION['request'];
    	error_reporting(E_ALL & ~E_NOTICE);
    	//$user = $_POST('user');
    	//$pass = $_POST('pass');
    	//$database = $_POST('database');
    	$conn = ocilogon('as_read', 'as_read.astest', 'ASTEST.ACTELION.COM'); //connection to the oracle database
    	$stid = ociparse($conn, $query);//prepare the query
    	$r = ociexecute($stid, OCI_DEFAULT);//execute the query
    	$ncols = OCINumCols($stid); // give the number of columns
    	for ( $i=1 ;$i < $ncols+1; $i++)//$i = column number
    	{
    	$value[$i]=$_POST["value$i"];
    	}
    	$count=0;
    	for ( $i=1 ;$i < $ncols+1; $i++)//$i = column number
    	{
    		if($value[$i]=='')
    		{
    		}
    		else
    		{
    			$_SESSION["appel$count"]=$value[$i];
    			$count++;
    		}
    	}
    	$_SESSION['nappel']=$count;
    	echo "<HTML> <head> <title>your result</title></HEAD> <BODY><FORM METHOD='POST' action='querieschoose.php4' TARGET='main'><INPUT TYPE=submit VALUE=back></FORM><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+OCI_RETURN_NULLS))//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=#A0A0A0><B> (null) </B></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>" ;
    		//$query2 = 'select \'Query run against \'||global_name||\' and valid as of \'||to_char(sysdate,\'dd-mon-yyyy\') from global_name';
    		$query2 = 'select \'Query run by \'||osuser||\' against \'||global_name||\' and valid as of \'||to_char(sysdate,\'dd-mon-yyyy\') from global_name,v$session WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1) ';
    		$stid = ociparse($conn, $query2);
    		$r = ociexecute($stid, OCI_DEFAULT);
    		OCIFetchInto ($stid, $ligne, OCI_RETURN_LOBS);
    		echo "<TABLE BORDER=1> 
    				<THEAD>
    					<TH> N-Line </TH><TH> Info</TH>
    				</THEAD>";
    		echo	"<TBODY>";
    		echo"		<TR><TD> $count </TD><TD> $ligne[0]</TD> </TR>";//post the number of line
    		echo"	</TBODY>
    				</TABLE>
    				<a href='graph.php'>graph</A>
    				<FORM METHOD='POST' action='telecharger.php' TARGET='main'><INPUT TYPE=submit VALUE=download></FORM>
    				<FORM METHOD='POST' action='querieschoose.php4' TARGET='main'><INPUT TYPE=submit VALUE=back></FORM>
    				</BODY>
    				</HTML>";
    		echo $query; //post the query after the table
    		OCILogoff($conn);
    ?>

    mais je comprend pas il n'y a aucune erreur pour moi puisque la session 'nappel' passe corectement si quelqu'un a de meilleur yeux que moi ...

  2. #2
    Invité
    Invité(e)
    Par défaut
    sincerement pas le courage de lire tout le code, tu peux essayer de cible la boucle qui te fait défaut stp

  3. #3
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Encore plus de code c'est possible

    C'est pourtant clair si tes index sont indéfinis bah ils sont pas définis c'est tout C'est sue les SESSION ou les POST

    Mais commence par localiser le problème, et d'ailleurs c'est quoi le problème, dans le titre tu parles de boucle infinie puis d'index indéfini dans ton post

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    heu oui j'ai mis un peu beaucou de code lol
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for ( $i=0 ;$i <= $count; $i++)//$i = column number
    	{
    	$appel[$i]=$_SESSION["appel$i"];
    	}
    la session appelée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $count=0;
    for ( $i=1 ;$i < $ncols+1; $i++)//$i = column number
    	{
    		if($value[$i]=='')
    		{
    		}
    		else
    		{
    			$_SESSION["appel$count"]=$value[$i];
    			$count++;
    		}
    	}
    la session créée


    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
    while (OCIFetchInto ($stid, $ligne, OCI_RETURN_LOBS+OCI_RETURN_NULLS))//read one line of the answer table
    	{
     
    		for ( $i=0 ;$i < $count; $i++)//$i = column number
    		{
    			$j=$appel[$i];
    			switch($i)
    			{
    				case 1:
    				$array1[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 2:
    				$array2[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 3:
    				$array3[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 4:
    				$array4[$count]=$ligne[$j] ;//write the answer in the table
    				break;
    				case 5:
    				$array5[$count]=$ligne[$j] ;//write the answer in the table		
    			}
    		}
     
    		$count++;//increase the line meter
    	}
    c'est cette boucle elle monte a 540 alor que le max attendu est 5

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 18
    Par défaut
    Par sécurité, vérifie l'existance de la session avant de boucler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for ( $i=0 ;  isset($_SESSION["appel$i"]) &&  $i <= $count; $i++)//$i = column number
    	{
    	$appel[$i]=$_SESSION["appel$i"];
    	}

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 232
    Par défaut
    oui guitou "appel$i car quand je met appel[$i] dans ma session page précédente le tableau ne passe pas corectement
    et maintenant j'ai plus rien du tout alor que en utilisant ça j'ai pu faire passer un autre tableau mais celui l'à ne veut rien savoir
    alor a la place je fais des variable séparées

  7. #7
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $appel[$i]=$_SESSION["appel$i"];
    Si tu veux me faire plaisir (et faire propre) fait comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $appel[$i]=$_SESSION['appel'.$i];
    Mais à mon avis ton souci est ailleurs (comme la vérité )
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  8. #8
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    "appel$i"
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Rien que ça, ça paraît très louche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $appel[$i]=$_SESSION["appel$i"];

  10. #10
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par vg33
    Rien que ça, ça paraît très louche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $appel[$i]=$_SESSION["appel$i"];
    En effet, il faut jouer avec des accolades pour évaluer des noms de variables.

    Je crois que concatenator a fait un infarctus sur le coup

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

Discussions similaires

  1. Je ne trouve pas l'erreur dans mon code
    Par true-life dans le forum Débuter
    Réponses: 4
    Dernier message: 25/04/2009, 10h40
  2. je ne trouve pas l'erreur dans mon programme
    Par Briska dans le forum Débuter
    Réponses: 19
    Dernier message: 04/04/2008, 09h21
  3. Réponses: 6
    Dernier message: 14/12/2006, 00h37
  4. Réponses: 4
    Dernier message: 10/08/2006, 13h44
  5. je ne trouve pas l'erreur ?
    Par nourdine dans le forum Langage
    Réponses: 7
    Dernier message: 04/01/2006, 23h51

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