select et update kaputt?

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 : select et update kaputt?

par Ajoloca » 15 oct. 2006, 22:41

Je suppose que tu as du faire du copier-coller au autre qui a supprimé la ligne d'affectation et enjendré les erreurs de concaténation.
Car une chose est sure, le fait d'ouvrir la session n'affecte pas les avleurs aux differnets variables.

par Invité » 15 oct. 2006, 22:34

:lol:

Super, ca refonctionne!
merci à toi!!!

Par contre, pourquoi ma méthode employée a fonctionné pendant plusieurs mois et d'un seul coup affichait un message d'erreur???

par Ajoloca » 15 oct. 2006, 22:12

Et vein voilà.

Change ça

Code : Tout sélectionner

<?php session_start() ; ?> <?php
par

Code : Tout sélectionner

<?php session_start(); $id = $_SESSION['id']; // On supprime aussi le ?> et le <?php
Ça devrait aller mieux.

par Invité » 15 oct. 2006, 22:05

La page qui pose problème....

<?php
session_start() ;
?>
<?php
$db= mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données"); 	   
 mysql_select_db('xxxx',$db)  or die('Erreur de selection base'.mysql_error());
$sql = "SELECT gestion ".
       "FROM membres  ".
       "WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
($data = mysql_result($res,0,'gestion'));
if ($data== './images/jetonrouge.gif')
       {
    echo '<center><font color="red">Désolé, mais VOTRE JETON EST ROUGE !</font></center>
<center><font color="black"><a href="page_membre.php">retour page membre</a></font></center>';
	}
	else
	{
$sql = "UPDATE membres ".
           "SET vie = vie+0.1, 
                gestion = './images/jetonrouge.gif', 
                mp = ' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.' ".
           "WHERE id = ". $id .";"; 
$res=mysql_query($sql) or die('Erreur SQL '.$sql.'<br>'.mysql_error());
if($res)
{
   $_SESSION['gestion']='./images/jetonrouge.gif';
   $_SESSION['vie']=$_SESSION['vie']+0.1;
   $_SESSION['mp']=' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.';

}
header("Location: page_membre.php");
}
mysql_close();
?> 
la page d'ou vient le id (volontairement rétrécie à cause de toutes les données de session)
<?php
session_start() ;
?>
<?php
$message = "";
//Vérifier si le pseudo et mot de passe sont envoyés non vides
if (
isset($_POST['pseudo']) && isset($_POST["passe"])
&& !empty($_POST["pseudo"]) && !empty($_POST["passe"])
)
{
//on recupere les données du formulaire
$login = $_POST['pseudo'];
$passe = $_POST['passe'];

// on recupère les info du membre à partir de la base ce qui permet aussi
//de voir si le pseudo et pass sont corrects
//Exécuter la requête
$db= mysql_connect(localhost, xxxx, xxxx) or die("Impossible de se connecter à la base de données"); 	   
// sélection de la base  
 mysql_select_db('xxxx',$db)  or die('Erreur de selection base'.mysql_error());
$req = mysql_query("select * from membres where pseudo='$login' and passe='$passe'",$db)or die(mysql_error());

//Tester si la requête est réussie et qu'un membre est trouvé
if ($req && mysql_num_rows($req) >0) {
   //Lire le résultat retourné par la requête
   $data = mysql_fetch_assoc($req);
   if ($data) {
            //Lire et stocker les infos  dans la session
		   $_SESSION['pseudo'] = $login;
                   $_SESSION['id'] = $data["id"];
                   $_SESSION['age'] = $data["age"];
                   $_SESSION['sexe'] = $data["sexe"];
		   $_SESSION['avatar'] = $data["avatar"];
		   $_SESSION['gestion'] = $data["gestion"];
   		   $_SESSION['action'] = $data["action"];
   		   
           //rediriger vers la page membre
           header("Location: page_membre.php");
    }
    else //pour if ($data ...
          $message = '<p>Une erreur est survenue, Merci de recommencer</p>';
}
else //pour if ($req ...
      $message = '<p><center>Mauvais pseudo / mot de passe. Veuillez recommencer</p></center>';
}
else //pour if (isset($_POST["pseudo ...
     $message = '<p>Merci de bien vouloir passer par la page Inscription</p>';

include ("inscription.php");
echo $message;
?>
Une ligne dans le fichier d'inscrition (qui marche lui!) ou je fous dans la base les données saisies par le membre....
$sql = "INSERT INTO membres(id, pseudo, passe, email, sexe, age, avatar, date_inscri) VALUES ('','$login','$passe','$email', '$sexe','$age','$typeava',NOW())";













[/php][/php]

par Ajoloca » 15 oct. 2006, 19:17

Bon, on avance un peu
Montre la ligne où tu asignes la valeur de $id, éventuellement celle ou tu gardes ton $id en session

par Invité » 15 oct. 2006, 19:15

voilà la réponse qui s'affiche....



Les sessions sont OK!
$id ===> est vide

par Ajoloca » 15 oct. 2006, 18:37

Pour être sur que tes SESSIONS sont activées fais un essai
$_SESSION['essai'] = 'Test de validite de session';
if(empty($_SESSION['essai'])) die ('Les sessions ne fonctionnent pas');
echo 'Les sessions sont OK! <br />';
// S'assurer de la valeur de $id
if(empty($id)) die ('$id ===> est vide');

par Invité » 15 oct. 2006, 18:23

$id est le numéro id du membre dans la base et vient d'une session appelée en tout début de page par un SESSION_START

par Ajoloca » 15 oct. 2006, 18:10

Re,

Dans cette requête tu utilies '$id'
$sql = "UPDATE membres ".
           "SET vie = vie+0.1, 
                gestion = './images/jetonrouge.gif', 
                mp = ' Vous venez de vous taper une bonne sieste qui vous rapporte 0.1 pt Vie.' ".
           "WHERE id = ". $id .";"; 
mais dans cette partie du script on ne voie pas d'où vient sa valeur. c'estait ma question ut le récupères comment?
il a quelle valeur?

par Invité » 15 oct. 2006, 17:56

Ok, le fichier .htaccess a été créé et mis à la racine du site..
J'ai juste mis cela dedans

php_flag register_globals 1

ca suffit, parce que mes select et update ne marchent toujours pas.l

par Ajoloca » 15 oct. 2006, 17:22

Re,
Un petit bout de php.ini
; - register_globals = Off [Security, Performance]
; Global variables are no longer registered for input data (POST, GET, cookies,
; environment and other server variables). Instead of using $foo, you must use
; you can use $_REQUEST["foo"] (includes any variable that arrives through the
; request, namely, POST, GET and cookie variables), or use one of the specific
; $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
; on where the input originates. Also, you can look at the
; import_request_variables() function.
; Note that register_globals is going to be depracated (i.e., turned off by
; default) in the next version of PHP, because it often leads to security bugs.
; Read http://php.net/manual/en/security.registerglobals.php for further
; information.
donc pour les activer tu dois créer un fichier nommé '.htaccess' (ne pas oublier le point en début du nom) à la racine de ton site qui contient la ligne 'php_flag register_globals 1' et qui soit accessible à php en lecture.

par Invité » 15 oct. 2006, 17:11

"Quelles sont les logs d'erreurs dans le panneau de controles ?

Pourquoi dites vous que plus rien ne marche logiquement ?

Quel script utilisez vous ? un script *maison* ?

Etes vous vraiment sur de ne pas utiliser les variables super globales ? Je vous rappelle qu'elles sont désactivées sur nos serveurs PHP. Si vous les utilisiez avant vous devez mettre dans un fichier .htaccess
php_flag register_globals 1

par Invité » 15 oct. 2006, 16:56

J'en sais rien, Cyrano, c'est ce qu'il m'a répondu.....
il faut que je rentre une ligne de code dans 1 fichier .htaccess pour les superglobales ....

par Cyrano » 15 oct. 2006, 16:45

Des super-globales désactivées ? C'est quoi ce délire ???

par Invité » 15 oct. 2006, 16:38

C'est à dire? :shock: