Update impossible vers DB

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 : Update impossible vers DB

par nelumbo » 25 mars 2008, 13:30

je prends note :wink:

@ bientôt

par zeus » 24 mars 2008, 22:06

Modération :
nelumbo, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par nelumbo » 24 mars 2008, 21:39

J'ai choisi $_POST dans if (getParam("submit","")) ...

Les modifications sont prisent en compte. Register_globals est sur off .

Mille merci :D :D :D

par zeus » 24 mars 2008, 20:48

Essaye de remplacer tout les $_REQUEST par des $_GET ou $_POST, selon tes paramètres ;)

Si le paramètres register_global de ton php.ini est à off (ce qui est le cas par défaut pour PHP 5.*), ce tableau n'est pas rempli

par nelumbo » 24 mars 2008, 20:20

J'ai trouvé ça pour la fonction:
function getParam($aVarName,$aVarAlt)
{
	if (!Empty($_REQUEST[$aVarName]))
		return strip_tags($_REQUEST[$aVarName],"<b><br><p><table><tr><td><hr><span>");
	else 
		return $aVarAlt;
}

par zeus » 24 mars 2008, 20:09

Quel est le code de la fonction GetParam() ?

Sinon, il vaut mieux utiliser $_GET ou $_POST à $_REQUEST.

Update impossible vers DB

par nelumbo » 24 mars 2008, 20:04

Bonjour,

Dans la partie d'administration de mon site, je peux modifier/éditer les profils. J'ai donc un formulaire qui s'affiche avec les informations de chaques utilisateurs dans des champs d'édition. Je modifie au besoin les champs remplis par les membres puis je clique sur "Update". Mais, voilà, rien ne se met à jour dans la base de données.
J'ai fait un essai sur un serveur php4 et mysql 4, ca fonctionne sans problème.

Mon serveur actuel: PHP 5 / MYSQL 5

Je ne sais pas trop ou chercher étant donné que mes compétences dans le domaines sont plus que limitées. Je vous propose toutefois un morceau de code en espérant qu'une incompatibilité avec php 5 ou mysql 5 soit flagrante.
if (getParam("submit",""))
{
	// Update all fields affected

	$sql = "update users set ";
	foreach ($_REQUEST as $key => $value) {
		if ($key<>"submit" AND $key<>"PHPSESSID" AND $key<>"profile" AND $key<>"phpbb2mysql_data"
		) 
			$sql.= "$key='" . $value . "',";
		
	}
	$sql=substr($sql,0,-1);
	$sql.=" where username='".$_REQUEST["profile"]."'";
	$res_ret=query($sql);
	echo "<b>Fields updated</b><br>More than " . mysql_affected_rows() . " columns was changed from before.";
}

if (getParam("show",""))
{
	echo "<form method='post' action='edit_user.php'>";
	echo "<input type='submit' name='submit' value='Update'>";
	echo "<input type='hidden' name='profile' value='".$_REQUEST["profile"]."'>";
	echo "<table width='95%'>";
	$result = query("SHOW COLUMNS FROM users");
	if (!$result) {
	   echo 'Could not run query: ' . mysql_error();
	   exit;
	}
	if (mysql_num_rows($result) > 0) {
	   while ($row_col = mysql_fetch_assoc($result)) {
	       //print_r($row_col);
	       $fieldname=$row_col[Field];
	       
	  echo "<tr><td>$fieldname</td><td> <input type='text' name='$fieldname' value='".$row["$fieldname"]."'";
	  if ($fieldname=="username" || $fieldname=="password" || $fieldname=="show")
	  	echo " disabled=disabled";
	  echo "></td></tr>";
	       
	   }
	}
	echo "</table>";
	echo "<input type='submit' name='submit' value='Update'>";
	echo "</form>";
}
Vous avez une idée ?