aide pour Script de Modification de données d'un base avec formulaire

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 : aide pour Script de Modification de données d'un base avec formulaire

par boulon » 30 oct. 2008, 19:06

merci de ton aide en plus ma derniers question n'a rien avoir avec ce topic

grace a toi j'ai fait ce que j'avais en tete.... sur ce script

cordialement Boulon

par charabia » 30 oct. 2008, 09:52

J'ai un peu de mal, si ce n'est dire beaucoup, avec tes explications.

En fait je ne vois aucun rapport avec une connexion membre et tes includes...or apparemment tu essaies de mettre le login dans le switch. Que tentes-tu de faire à ce niveau ?

Une fois la personne connectée c'est du tout bon, pourquoi passes-tu encore le login en paramètre url ? Utilises une session pour garder le login en mémoire si besoin est.

par boulon » 29 oct. 2008, 21:08

en faite je t'explique

j'ai mon index.php il y a tout le contenu du design et vien ensuite la partie core du site ou vont etre afficher tout le contenu, ma login a fait que au lieu de recopier le design a toute les page je fai des apel d'include des contenue qui viens ce grefet a l'index comme ca l'index ne pouge pas il y juste le contenu des pages qui change

par exemple

j'ai l'index.php en suite je veux faire aparaitre boulon.php ?pk metre le design de l'index sur boulon.php..

dans mon lien je met ca ?page=boulon

et dan lotre ficher lui il gere tous les include de page qui vont etre mis en contenu

je met ceuci
case "boulon":include (" (le chemin du fichier boulon )Scripts/module/admin/boulon.php");break;
et lui il sais ke lindex a besoin de boulon et va le chercher et boulon apai dans l'index et utilise son son desingn

je ne sais pas si j'ai reussi a me faire comprendre

par charabia » 29 oct. 2008, 20:43

Je ne comprend pas du tout comment fonctionne ta logique. C'est quoi "page" et à quoi sert ce switch ??

par boulon » 29 oct. 2008, 20:32

la 2eme methode marche tres bien.. merci de ton aide

il me reste que cette

je suis in peu perdu si tu vois

dit moi je voudrai inclure la (partie 2) mais vue que tout est relié et que je dois passer par la (partie 1) pour la partie 2 , son lien es comme ca

accounts_modif.php?login='. $data['login'].'

pour l'inclure il faudrai que je le met comme ca
?page=accounts_modif?login='. $data['login'].'

et dans mon fichier qui gere tous le fichier include j'ai ca

<?

@$page = $_GET['page']; 

if(isset($page)) 
{ 

    switch("$page") 
        { 
//Menu 
        case "accounts":include ("Scripts/module/admin/accounts.php");break; 
        case "accounts_modif?login='. $data['login'].'"include("Scripts/module/admin/accounts_modif.php");break; 
default: 
        include ("home.php");break; 
        } 
} 
else  
    { 
    include("home.php"); 
    } 

?>

erreur le pobleme est que ca '. $data['login'].' c'es alleatoire il ne ce calle pas dessu donc a chaque fois il cherche le page mais en vin.. page non trouver

par charabia » 29 oct. 2008, 20:22

Dans ta 2d méthode, tu déclares une première fois $login
$login = $_GET['login'];
et en bas tu fais
$_GET['login'] = mysql_real_escape_string($_GET['login']);
ce n'est pas très logique.

Pourquoi ne pas faire simplement
$login=mysql_real_escape_string($_GET['login']);
?

Le code corrigé
<?php 
//scrypt By  D Akira , D Boulon.. 
// tout droits rerservés 
  
include("config/config.php"); 

 = $_POST['login']; 
$accessLevel = $_POST['accessLevel']; 

// On protège la variable "login" pour éviter une faille SQL 
$login = mysql_real_escape_string($_POST['login']); 
$accessLevel = mysql_real_escape_string($_POST['accessLevel']);

// C'est une modification, on met juste à jour l'accessLevel 

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'");  
echo $login; 
echo $accessLevel; 

mysql_close(); 
?>
Si ça ne marche toujours pas, teste directement ta requête sous phpmyadmin pour voir si la requête fonctionne correctement.

par boulon » 29 oct. 2008, 20:05

oui j'ai declaré ca comme ca revoila le code

premiere methode
<?php

//scrypt By  D Akira , D Boulon..
// tout droits rerservés
 

include("config/config.php");

$login = $_GET['login'];
$accessLevel = $_POST['accessLevel'];

// On protège la variable "login" pour éviter une faille SQL
$_GET['login'] = mysql_real_escape_string($_GET['login']);

// C'est une modification, on met juste à jour l'accessLevel

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'"); 
echo $login;
echo $result;
echo $accessLevel;

mysql_close();

?>

2eme methode

<?php

//scrypt By  D Akira , D Boulon..
// tout droits rerservés
 

include("config/config.php");

$login = $_POST['login'];
$accessLevel = $_POST['accessLevel'];

// On protège la variable "login" pour éviter une faille SQL
$_POST['login'] = mysql_real_escape_string($_POST['login']);

// C'est une modification, on met juste à jour l'accessLevel

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'"); 
echo $login;
echo $accessLevel;

mysql_close();

?>
on a le echo $login; qui affiche le login et le echo $accessLevel; qui affiche le accessLevel mais dans la table de la BDD rien n'a changé

par charabia » 29 oct. 2008, 20:00

Houlàlà où vas-tu comme ça. Chaque chose en son temps, tu n'as même pas réglé ton premier souci que tu t'attaques déjà à autre chose. Le 2d "case" de ton switch est totalement faux en passant.

Déjà répond aux différentes questions. Dans ton code
// On protège la variable "login" pour éviter une faille SQL  
$_POST['login'] = mysql_real_escape_string($_POST['login']);  

// C'est une modification, on met juste à jour l'accessLevel  

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'");
où as-tu déclaré le $login que tu utilises ?

PS : fait un petit effort lorsque tu écris, pas facile à te comprendre

par boulon » 29 oct. 2008, 19:52

je suis in peu perdu si tu voi ou sai di le moi sil te play. merci


dit moi je voudrai inclure la (partie 2) mais vue que tout est relié et que je dois passer par la (partie 1) pour la partie 2 , son lien es comme ca

accounts_modif.php?login='. $data['login'].'

pour l'inclure il faudrai que je le met comme ca
?page=accounts_modif?login='. $data['login'].'
et dans mon fichier qui gere tous le fichier include j'ai ca
<?

@$page = $_GET['page'];

include("Scripts/module/admin/accounts.php");

if(isset($page))
{

	switch("$page")
		{
//Menu
		case "accounts":include ("Scripts/module/admin/accounts.php");break;
		case "accounts_modif?login='. $data['login'].'"include("Scripts/module/admin/accounts_modif.php");break;
default:
		include ("home.php");break;
		}
}
else 
	{
	include("home.php");
	}

?>

erreur le pobleme vue que ca '. $data['login'].' c'es allatoire il ne ce calle pas dessu donc a chaque fois il cherche pas page mais en vin

par charabia » 29 oct. 2008, 19:42

a que parti j'ai donné un different oau niveau du login.
et...? ça ne répond pas à la question

par boulon » 29 oct. 2008, 19:39

a que parti j'ai donné un different nom

par charabia » 29 oct. 2008, 19:06

Fait bien attention aux différents noms que tu donnes.
// On protège la variable "login" pour éviter une faille SQL 
$_POST['login'] = mysql_real_escape_string($_POST['login']); 

// C'est une modification, on met juste à jour l'accessLevel 

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'");
Où est déclaré $login ?

par boulon » 29 oct. 2008, 18:51

Et s'il y avait 2 logins identiques...?

L'id étant unique, tu es sûr qu'un seul membre le possède contrairement à l'ID.
le script d'inscription verifie a chaque fois qu'il y a pas deja un login dans la table a chaque inscription. donc impossible d'avoir 2 meme login.
$accesslevel = stripslashes($data['accessLevel']);
ne sert à rien, tu ne l'utilises nulle part.

Regardes la fonction que je t'ai indiqué plus haut pour te protéger des injections.
c'es fait et corrigé
$accesslevel = mysql_real_escape_string($data['accessLevel']);

c'es la partie 3 qui posse probleme je pense le update ce ce fait pas

voila le scrypt
<?php

//scrypt By  D Akira , D Boulon..
// tout droits rerservés
 

include("config/config.php");

// On protège la variable "login" pour éviter une faille SQL
$_POST['login'] = mysql_real_escape_string($_POST['login']);

// C'est une modification, on met juste à jour l'accessLevel

$result = mysql_query("UPDATE accounts SET accessLevel='$accessLevel' WHERE login='$login'");

echo $result;

mysql_close();

?>
j'ai un echo $result

il me met un le chiffre 1 a la fin mais le update ne ce fait pas

merci encore de votre aide

Cordialemnt Boulon

par ornitho13 » 29 oct. 2008, 17:06

ce n'est peut etre pas ça mais une chose me turlupine

quant tu fait

$req = mysql_query($sql);

il te manque un parametre => le $db (identifiant de ta connexion a la base de données)
il faudrait donc mettre

$req = mysql_query($sql, $db);

et d'ailleurs tu devrais mettre cela

if($req = mysql_query($sql, $db){
//suite de tes instructions
}else{
echo mysql_error($db)." in ".$sql;
}

en mettant des 'echo' sur tes vérifications tu trouveras facilement ce qui ne va pas

par charabia » 29 oct. 2008, 09:45

Et s'il y avait 2 logins identiques...?

L'id étant unique, tu es sûr qu'un seul membre le possède contrairement à l'ID.
$accesslevel = stripslashes($data['accessLevel']);
ne sert à rien, tu ne l'utilises nulle part.

Regardes la fonction que je t'ai indiqué plus haut pour te protéger des injections.