Récupération de données en local OK..

Eléphanteau du PHP | 16 Messages

02 janv. 2007, 18:30

Bonjour et bonne année à toutes et tous.

Voilà mon pb. J'ai récupéré un script de news "VRNews" que je souhaite modifié un peu pour mon utilisation. Il marche très bien en local mais j'ai un soucis sur mon espace web.

En fait, je peux ajouter une news sans pb, mais je ne peux ni récupérer les données des news afin de les modifier (les champs restent vide), ni supprimer une news. Il semblerait qu'il ne veuille pas prendre en compte l'id en question.

Le pb se pose donc pour -> else if($_GET['act']=="edit")
et -> else if($_GET['act']=="del")

J'ai beau cherché, je trouve pas :(

Merci de votre aide

Voici le code (si quelqu'un peut m'aider) :
<?php
$fichierins="install.php";
if(file_exists($fichierins))
{  
include('install.php');
}
else
{
require('config.php'); 
echo'<html>
<head>
  <title>VRNews v1.1.1 - Administration</title>
  <meta name="description" content="">
  <meta name="keywords" content="">
  <meta name="author" content=""> 
  <LINK media="screen" href="news.css" type="text/css" rel="stylesheet">
  
   <script language="javascript" type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
	<script language="javascript" type="text/javascript">
	tinyMCE.init({
		mode : "textareas"
	});
	</script>  
	
</head>																	
<body>	
<div align="center"><u><font class=text>Administration des news</font></u><br><br>
<table width="100%" border="0" summary="">
	<tr>';
	$add="Ajouter une news";
	$edit="Editer une news";
	$del="Supprimer une news";
	$config="Configuration";
	echo"<td><a href=\"\" class=text>Accueil du site</a></td>";
	if($_GET['act']=="add")
		echo"<td><font class=text><u>$add</u></font></td>";
	else
	    echo"<td><a href=\"?act=add\" class=text>$add</a></td>";
	if($_GET['act']=="edit")
		echo"<td><font class=text><u>$edit</u></font></td>";
	else
		echo"<td><a href=\"?act=edit\" class=text>$edit</a></td>";
	if($_GET['act']=="del")
		echo"<td><font class=text><u>$del</u></font></td>";
	else
		echo"<td><td><a href=\"?act=del\" class=text>$del</a></td></td>";
	if($_GET['act']=="config")
		echo"<td><font class=text><u>$config</u></font></td>";
	else
		echo"<td><a href=\"?act=config\" class=text>$config</a></td>";
	echo'</tr>
</table></div><hr color="#000000">';

 
if($_GET['act']=="add")
{ 	
	if($_GET['cat']=="")
	{	
	echo "<br><br>Vous allez ici pouvoir ajouter une news, remplissez simplement le formulaire ci-dessous, et cliquez sur le bouton Enregistrer :<br><br>
	<form action=\"?act=add&cat=add\" method=\"post\">
	<div>
	<table width=\"$largeur\" border=\"0\">
		<tr>
			<td><hr color=\"#000000\"></td>
		</tr>
		<tr>
			<td><font class=\"titre\">Date : <input type=\"text\" name=\"date\" size=\"40\" maxlength=\"256\"></font></td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td><font class=\"titre\">Titre : <input type=\"text\" name=\"titre\" size=\"40\" maxlength=\"256\"></font></td>
		</tr>
		<tr>
			<td></td>
		</tr>
		<tr>
			<td><textarea name=\"texte\" cols=\"50\" rows=\"10\" id=\"texteajouter\"></textarea></td>
		</tr>
	</table>
	</div>
	<br>
	<div><input type=\"submit\" value=\"Enregistrer la news\"></div>
	</form> 
	";	
	}
	else if($_GET['cat']=="add")
	{	
		$date		=$_POST['date'];
		$titre		=$_POST['titre'];
		$texte 		=$_POST['texte'];

		
		if($date=="" || $titre=="" || $texte=="")
		{	
			if($date=="")
				$error="Vous n'avez pas introduit de date";
			if($titre=="")
				$error="Vous n'avez pas introduit de titre";
			else if($texte=="")
				$error="Vous n'avez pas introduit de texte";  

			$texte = str_replace("\\","",$texte);
			echo "<br><br>Vous allez ici pouvoir ajouter une news, remplissez simplement le formulaire ci-dessous, et cliquez sur le bouton Enregistrer :<br>
				 <font color=\"#FF0000\"><center>$error</center></font>
			<br><br>
			<form action=\"?act=add&cat=add\" method=\"post\">
			<div>
			<table width=\"$largeur\" border=\"0\">
				<tr>
					<td><hr color=\"#000000\"></td>
				</tr>
				<tr>
					<td><font class=\"titre\">Date : <input type=\"text\" name=\"date\" size=\"40\" maxlength=\"256\" value=\"$date\"></font></td>
				</tr>
				<tr>
					<td ></td>
				</tr>
				<tr>
					<td><font class=\"titre\" >Titre : <input type=\"text\" name=\"titre\" size=\"40\" maxlength=\"256\" value=\"$titre\"></font></td>
				</tr>
				<tr>
					<td></td>
				</tr>
				<tr>
					<td><textarea name=\"texte\" cols=\"50\" rows=\"10\" id=\"texteajouter\">$texte</textarea></td>
				</tr>
			</table>
			</div>
			<br>
			<div><input type=\"submit\" value=\"Enregistrer la news\"></div>
			</form> 
			";	
		}
		else
		{	
			$texte = nl2br($texte);
			mysql_query("INSERT INTO ".$prefixetab."news (id,date,titre,texte) values('','$date','$titre','$texte')") or die($errormessage);
			echo "<div align=\"center\"><br><br>La news \"<I>$titre</i>\" à bien étée ajoutée.<br><br><br><br><br><br>
			Vous allez être redirigé vers l'accueil des news ...<br>Si votre navigateur ne vous redirige pas automatiquement <a href=\"?\" class=Link2>cliquez ici</a>.</div>
			<meta http-equiv=\"Refresh\" content=\"3;url=?\">";
		}
 
 	}  
}  
else if($_GET['act']=="edit")
{ 
	if($_GET['cat']=="")
	{
		echo "<br><br>Vous allez ici pouvoir éditer l'ensemble des news se trouvant dans la base de données, sélectionnez la news à éditer ci-dessous :<br><br>
		<table width=\"100%\" border=\"0\">
		<tr>
				<td width=\"54\" bgcolor=\"#C1C1C1\" class=text><b>ID</b></td>
				<td width=\"376\" bgcolor=\"#C1C1C1\" class=text><b>Titre</b></td>
				<td bgcolor=\"#C1C1C1\" class=text><b>Editer</b></td>
		</tr>";
		$requetebd = mysql_query("SELECT id, titre from ".$prefixetab."news order by id desc") or die ($errormessage); 
			while($data=mysql_fetch_array($requetebd))
			{ 
			echo"
			<tr>
				<td width=\"15%\" class=text>$data[id]</td>
				<td width=\"65%\" class=text>$data[titre]</td>
				<td><a href=\"?act=edit&cat=2&id=$data[id]\" class=text>Editer</a></td>
			</tr>
			";
			}
		echo'</table>';
	}
	else if($_GET['cat']=="2")
	{
	$requetebd = mysql_query("SELECT * from ".$prefixetab."news where id='$id'") or die ($errormessage);
	$data=mysql_fetch_array($requetebd);
	$texte=br2nl($data[texte]);
	
	echo "<br><br>Edition de la news <b>$data[titre]</b> :<br><br>
	<form action=\"?act=edit&cat=edit&id=$id\" method=\"post\">
	<div>
	<table width=\"$largeur\" border=\"0\">
		<tr>
			<td><font class=\"titre\" colspan=\"2\">Date : <input type=\"text\" name=\"date\" size=\"40\" maxlength=\"256\" value=\"$data[date]\"></font></td>
		</tr>
		<tr>
			<td><font class=\"titre\" colspan=\"2\">Titre : <input type=\"text\" name=\"titre\" size=\"40\" maxlength=\"256\" value=\"$data[titre]\"></font></td>
		</tr>
		<tr>
			<td colspan=\"2\"></td>
		</tr>
		<tr>
			<td colspan=\"2\"><textarea name=\"texte\" cols=\"80\" rows=\"12\" id=\"texteaediter\">$texte</textarea></td>
	</table>
	</div>
	<br>
	<div><input type=\"submit\" value=\"Enregistrer les modifications\"></div>
	</form> 
	";
	}
	else if($_GET['cat']=="edit")
	{
		$date		=$_POST['date'];
		$titre		=$_POST['titre'];
		$texte 		=$_POST['texte'];
		
		
		if($date=="" || $titre=="" || $texte=="" || $texte=="<p />")
		{	
			if($date=="")
				$error="Vous n'avez pas introduit de date";
			else if($titre=="")
				$error="Vous n'avez pas introduit de titre";
			else if($texte=="" || $texte=="<p />")
				$error="Vous n'avez pas introduit de texte";  

			$texte = str_replace("\\","",$texte);
			echo "<br><br>Edition de la news <b>$titre</b> :<br>
			<font color=\"#FF0000\">$error</font><br><br>
			<form action=\"?act=edit&cat=edit&id=$id\" method=\"post\">
			<div>
			<table width=\"$largeur\" border=\"0\">
			<tr>
				<td><font class=\"titre\" colspan=\"2\">Date : <input type=\"text\" name=\"date\" size=\"40\" maxlength=\"256\" value=\"$date\"></font></td>
			</tr>
			<tr>
				<td><font class=\"titre\" colspan=\"2\">Titre : <input type=\"text\" name=\"titre\" size=\"40\" maxlength=\"256\" value=\"$titre\"></font></td>
			</tr>
			<tr>
				<td colspan=\"2\"></td>
			</tr>
			<tr>
				<td colspan=\"2\"><textarea name=\"texte\" cols=\"80\" rows=\"12\" id=\"texteaediter\">$texte</textarea></td>
			</table>
			</div>
			<br>
			<div><input type=\"submit\" value=\"Enregistrer les modifications\"></div>
			</form>";
		}
		else
		{
			$texte=nl2br($texte);	
			mysql_query("Update ".$prefixetab."news Set date ='$date', titre ='$titre',texte ='$texte' where id ='$id'") or die("Erreur MYSQL");
							
			echo "<div align=\"center\"><br><br>La news \"<I>$titre</i>\" a bien étée éditée.<br><br><br><br><br><br>
			Vous allez être redirigé vers l'accueil des news ...<br>Si votre navigateur ne vous redirige pas automatiquement 
			<a href=\"?\" class=Link2>cliquez ici</a>.</div>
			<meta http-equiv=\"Refresh\" content=\"3;url=?\">";
		}	
		
	}
}
else if($_GET['act']=="del")
{
 	 if($_GET['cat']=="")
	 {	
		echo "<br><br>Vous allez ici pouvoir supprimer des news se trouvant dans la base de données, sélectionnez la news à supprimer ci-dessous :<br><br>
		<table width=\"100%\" border=\"0\">
		<tr>
				<td width=\"54\" bgcolor=\"#C1C1C1\" class=text><b>ID</b></td>
				<td width=\"376\" bgcolor=\"#C1C1C1\" class=text><b>Titre</b></td>
				<td bgcolor=\"#C1C1C1\" class=text><b>Supprimer</b></td>
		</tr>";
		$requetebd = mysql_query("SELECT id, titre from ".$prefixetab."news order by id desc") or die ($errormessage); 
			while($data=mysql_fetch_array($requetebd))
			{ 
			echo"
			<tr>
				<td width=\"15%\" class=text>$data[id]</td>
				<td width=\"65%\" class=text>$data[titre]</td>
				<td><a href=\"?act=del&cat=2&id=$data[id]&title=$data[titre]\" class=text>Supprimer</a></td>
			</tr>
			";
			}
		echo'</table>';
	  }
	  else if($_GET['cat']=="2")
	  {	 
	  	  $title=$_GET['title'];
		  $id=$_GET['id'];
		  echo "<br><br><center>Etes-vous certain de vouloir supprimer la news $title ?<br><br>
		  <table width=\"50%\" border=\"0\" summary=\"\">
		<tr>
			<td><div align=\"right\"><form action=\"?act=del&cat=del&id=$id\" method=\"post\">
		  <input type=\"submit\" value=\" Oui \">
		  </form></div></td>
			<td>&nbsp;</td>
			<td><div align=\"left\"><form action=\"?\" method=\"post\">
		  <input type=\"submit\" value=\" Non \">
		  </form></div></td>
		</tr>
	</table>
		  </center>";
	  }
	  else if($_GET['cat']=="del")
	  {
	  mysql_query("Delete from ".$prefixetab."news where id ='$id'");		
	  echo "<br><br><center>Suppression de la news effectuée avec succès.<br><br><br><br><br><br>
				Vous allez être redirigé vers l'accueil des news ...<br>Si votre navigateur ne vous redirige pas automatiquement <a href=\"?\" class=Link2>cliquez ici</a>.</div>
				<meta http-equiv=\"Refresh\" content=\"3;url=?\"></center>";
	  }
}
else if($_GET['act']=="config")
{  
   if($_GET['cat']=="")
   {
	   echo "<br><br>Vous devez remplir l'ensemble des champs ci-dessous pour modifier la configuration de votre module :<br><br>";
	
	   echo'<form action="?act=config&cat=2" method="post"><table width="70%" border="0" class=text><tr>
	      <td>&nbsp;Veuillez indiquer le Serveur MySQL : </td>
	      <td><input name="nameserv" type="text" value='.$nomserveur.'></td>
	    </tr>
		<tr>
	      <td>&nbsp;Veuillez indiquer le nom d\'utilisateur MySQL : </td>
	      <td><input name="loginserv" type="text" value='.$loginserveur.'></td>
	    </tr>
	    <tr>
	      <td>&nbsp;Veuillez indiquer le passe MySQL : </td>
	      <td><input name="passserv" type="password" value='.$passserveur.'></td>
	    </tr>
	    <tr>
	      <td>&nbsp;Veuillez indiquer le nom de la base : </td>
	      <td><input name="baseserv" type="text" value='.$baseserveur.'></td>
	    </tr>
		<tr>
	      <td>&nbsp;Prefixe des tables MySQL : </td>
	      <td><input name="prefixserv" type="text" value='.$prefixetab.'></td>
	    </tr>
		<tr>
	      <td>&nbsp;Nombres de news par pages : </td>
	      <td><input name="nbpage" type="text" value='.$maxnews.'></td>
	    </tr>
		<tr>
	      <td>&nbsp;Largeur du module entier (en px) : </td>
	      <td><input name="largeur" type="text" value='.$largeur.'></td>
	    </tr> 
		</table><br><br><br>
		<div align="center"><input type="submit" value="Enregistrer la configuration"></div>
		</form><br><br><br>
		<center><font color="#FF0000">Attention les informations ici sont très importantes, si vous comettez une erreur, vous devrez modifier manuellement le fichier config.php.</font></center>
		';
	}
	else if($_GET['cat']=="2")
	{ 
	$nomserv=$_POST['nameserv'];
	$loginserv=$_POST['loginserv'];
	$passserv=$_POST['passserv'];
	$baseserv=$_POST['baseserv'];
	$prefixtabserv=$_POST['prefixserv'];
	$maxnewsserv=$_POST['nbpage'];
	$largeurserv=$_POST['largeur'];
	
	$fichier="config.php";
	if(file_exists($fichier))
		{
		@unlink($fichier); 		
		}
		touch($fichier);
		echo"";
		echo"<br><br><center><b>Les script a été mis à jour correctement</b><br><br><br><br><br><br>
				Vous allez être redirigé vers l'accueil des news ...<br>Si votre navigateur ne vous redirige pas automatiquement <a href=\"?\" class=Link2>cliquez ici</a>.</div>
				<meta http-equiv=\"Refresh\" content=\"3;url=?\"></center>";
		$ouvert = fopen($fichier,"r+");
		@$texte=''
		.'<?php
		$nomserveur = "'.$nomserv.'";
		$loginserveur = "'.$loginserv.'";
		$passserveur = "'.$passserv.'";
		$baseserveur = "'.$baseserv.'";
		$prefixetab = "'.$prefixtabserv.'";
		$maxnews = '.$maxnewsserv.';
		$largeur = '.$largeurserv.';
		$errormessage = "Désolé, une erreur s\'est produite sur la base de données.";
		$db = mysql_connect($nomserveur,$loginserveur,$passserveur) or die ($errormessage);
		mysql_select_db($baseserveur,$db) or die ($errormessage);
		function br2nl($txt) 
		{return str_replace("<br />", "\t", $txt) ;} 

		?>';
		fwrite($ouvert, $texte);
 		fclose($ouvert);
	}
}	 
else
{
echo'<br><br>

<div align="center">Bienvenue sur l\'administration des news, veuillez choisir dans le menu ci-dessus.</div>';
}
echo"</body></html>";	
} 	
mysql_close();
?>
Modifié en dernier par Dipsy le 03 janv. 2007, 11:46, modifié 1 fois.

Eléphanteau du PHP | 16 Messages

03 janv. 2007, 11:23

Bon après avoir cherché pendant un bout de temps, je viens de trouver le pb. C'est le Registar_global qui est en OFF sur le serveur.

Après avoir cherché sur le forum, j'ai bien compris qu'il fallait le laisser sur OFF mais avec mes faibles connaissances en php :oops: , je ne comprend pas la procédure pour contourner le pb.

Que dois-je faire pour récupérer mes variables ?

Si quelqu'un peut m'aider. :?

Merci.

Eléphanteau du PHP | 16 Messages

03 janv. 2007, 11:45

J'ai trouvé !

Il suffit de mettre ces 2 lignes en début de page.

<?
foreach ($_POST as $key => $value) $$key = addslashes($value);
foreach ($_GET as $key => $value) $$key = addslashes($value);
?>

Trop content.

A bientôt

ViPHP
AB
ViPHP | 5818 Messages

03 janv. 2007, 12:34

Il est plus facile de développer directement avec Registar_global sur off. Sinon les corrections sont fastidieuses.
Si tu est débutant et que tu tiens à utiliser ce script, essai de mettre Registar_global sur on sur le serveur. Ce n'est pas la méthode recommandée mais ce script est peut-être bien écrit et sans faille de sécurité même avec Registar_global sur on.

Le principe avec Registar_global sur off c'est que l'on contrôle les variables avant de les utiliser.
Par exemple if($_GET['act']=="add") n'est pas valide car tu n'as pas vérifié $_GET['act'] avant de la comparer avec add. Une correction facile est
if(isset($_GET['act']) && $_GET['act']=="add") ... 
où isset contrôle au moins l'existence de la variable $_GET['act'].

Attention
foreach ($_GET as $key => $value) $$key = addslashes($value); 
suppose que le serveur est configuré avec magic_quotes_gpc désactivé.
Si tu souhaites avoir le même résultat quelque soit la configuration du serveur:
if (get_magic_quotes_gpc()) 
{
foreach ($_POST as $key => $value) $$key = $value; 
foreach ($_GET as $key => $value) $$key = $value; 
}
else
{
foreach ($_POST as $key => $value) $$key = addslashes($value);
foreach ($_GET as $key => $value) $$key = addslashes($value);
}
Cela peut servir pour des migrations sans pb. Cela dit il vaut mieux prendre l'habitude de travailler avec magic_quotes_gpc désactivé puisque
cette fonction ne sera plus opérationnelle en PHP6.