[php/mysql pb] site vente en ligne

Fermé
fleur2 - 2 juin 2006 à 21:54
 Zoromar - 30 janv. 2008 à 11:59
Bonsoir

voila je fais actuellement un site de vente en ligne sous php et mysql et j'aimerai qu'on m'aide à trouver : voilà je ne sais pas comment faire pour ajouter des produits que les gens auront selectionné dans ma base de donnée et donc sur le panier d'achat (qui affiche selon la base de donnée les fiches sélectionné par l'acheteur).

les gens pour selectionnés mettent la quantité pour chaque produit que les gens veulent .. et en fait sa ajout zéro pour toutes mes variables dans ma base.

Voila si vous avez des conseils, Merci de me faire partager.
A voir également:

51 réponses

PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
13 juin 2006 à 22:54
Bonsoir,

J'avoue que j'ai du mal à te suivre !

Décidemment tu es têtue : tu y tiens à ton auto incrément dans la table article_com alors que je n'arrête pas de te dire qu'il n'en faut pas ! LOL

Ce qui m'amène à penser qu'on est pas en phase ...

Voilà ce que j'ai finalement compris :

1° L'utilisateur sélectionne un ou plusieurs articles : ceci constitue son panier.

2° Tu décides de sauver son panier directement dans MySQL dans la table article_com avant la validation de la commande.
On est bien d'accord qu'à ce niveau l'utilisateur à encore la possibilité de tout annuler voir de fermer carrement son navigateur , d' éteindre son PC, ou encore hélas de subir un bug Windows LOL
Ok : tu ajoutes tous les articles dans la table article_com


3° L'utilisateur confirme ses achats : tu l'identifies ou il s'inscrit puis ensuite tu créés la commande dans com_online que tu essais désespérément de rattacher à la table article_com
Mais là tu n'y arrives pas ...


Est-ce bien ca ?




0
Bonsoir
OUI , c'est tout a fait sa..lol oui je suis un tit peu tétue ..lol mais je demande qu'à évoluer..lol

et donc là tu m'as comprise : je veux que le num_com créer ds article_com soit repris par la table com_online , c'est pr sa que je croyais qu'il fallait faire auto-increment dans article_com.
Et le 2eme soucis c'est la session, j'arrive a enregistrer le login, mdp, email, mais aprés j'arrive pas a savoir si une session est ouverte mon code ne marche pas et sa ressemble a sa :
session_start();

if (@$_SESSION['autoriser']!="ok")
{include("utilisateur.php");

exit();}
else....


Et la il me met que je retourne tt le tps a la page d'inscription, meme si j'ai une session d'ouverte.


Voilà, mes deux GROS soucis, MERCI beaucoup de ta patience, et du temps que je te prend, c'est trés trés gentil !

J'espère que tu pourras continuer à m'aider, car j'en ai vraiment Besoin.

Merci d'avance et Bonne soirée.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
14 juin 2006 à 22:12
Bonsoir,

C'est normal que tu n'arrives pas à rattacher ton auto-incrément
de la table article_com ver com_online étant donné qu'il n'est pas unique !
En effet à chaque INSERT dans article_com MySQL te génére un nouvel auto-incrément et donc une nouvelle commande dans le champ article_com.num_cde.
Donc tu te retrouves avec autant de nr de commande que d'articles achetées : ca ne va pas !

Ton idée de sauvegarder le panier dans MySQL n'est pas mauvaise en soi mais comme tu peux t'en rendre compte c'est complexe.



La solution plus simple : sauvegarder le panier dans le session PHP et pas dans MySQL tant que l'utilisateur n'a pas validé sa commande. Bref un panier virtuel uniquement stocké dans la mémoire du serveur.

Ensuite lorsque l'utilisateur valide sa commande tu fais comme je te l'ai indiqué :
1°) Tu créés une nouvelle commande dans com_online : tu récupères le nr de la cde avec mysql_insert_id()
2°) Tu ajoutes chaque ligne commandée dans article_com en utilisant le nr de cde

Ce qui nous amène évidemment au problème des sessions

je ne sais pas pourquoi ta variable $_SESSION['autoriser'] ne contient pas "ok" : il faudrait que tu postes le code de "utilisateur.php"

Autrement l'utilisation des sessions est simple



Ex :
1° j'ai une page login.php qui demande un username + un password.
2° cette page appelle la page check_login.php qui vérifie que l'accès est autorisé et ajoute la variable "panier" dans $_SESSION[] et donne un lien vers une 3ème page
3° une troisième page security_level1.php n'est ensuite accessible que si le panier existe dans la session avec un username renseigné

Code

login.php

<html>
<head>
<title>Login</title>
</head>
<body>
Procédure de connexion :
<form action="check_login.php" method="post">
Username : <input type="text" id="username" name="username"><br />
Password : <input type="password" id="password" name="password"><br />
<input type="submit" value="Ok">
</form>
</body>
</html>


Ultra simple rien à dire


Page check_login.php

<?php 
session_start();
$access=false;
if (isset($_POST["username"]) && isset($_POST["password"]))
{
	// Normalement ici tu vérifies dans MySQL si l'utilisateur est autorisé ou non
	// et pas en "dur" comme ici !
	$access = ($_POST["username"]=="fleur2") && ($_POST["password"]=="flower");
}

if (!$access)
{
	// On vide le panier ? Pas obligatoire ...
	if (isset($_SESSION["panier"])) $_SESSION["panier"] = array();

	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/login.php");	
	exit;
}


// Ici on démarre le panier
$panier = array();
$panier["username"] = $_POST["username"];
$_SESSION["panier"]= $panier;

?>
<html>
<head>
<title>Check login</title>
</head>
<body>
Bonjour <?php echo $_POST["username"];?> vous êtes autorisé à accèder au contenu de cette page !<br />
<form action="security_level1.php" method="post">
<input type="submit" value="Accèder au niveau de sécurité 1">
</form>
</body>
</html>


On vérifie que l'utilisateur est autorisé à accèder à la page et si c'est la cas on ajoute la variable "panier" (en fait un tableau dynamique) à la session

page security_level1.php

<?php 
session_start();
//On vérifie que la variable "username" existe dans le panier lui-même dans la session
$access=false;
if (isset($_SESSION["panier"]))
{
	$panier = $_SESSION["panier"];
	if (isset($panier["username"]) && ($panier["username"] != ""))
	{
		$username=$panier["username"];
		$access=true;
	}
}

if (!$access)
{
	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/login.php");	
	exit;
}
?>
<html>
<head>
<title>Security Level 1</title>
</head>
<body>
Bonjour <?php echo $username;?> : vous êtes au niveau de sécurité 1
</body>
</html>


Test si le panier existe dans le session pour autoriser l'accès

Et le tout en live :

http://www.nobodysperfect.freesurf.fr/fleur2/login.php

le username est : fleur2
le password : flower


Une fois que tu as testé ferme toutes les fenêtres de ton navigateur (ceci met fin à la session), relance ton navaigateur puis essai d'afficher directement la page :

http://www.nobodysperfect.freesurf.fr/fleur2/security_level1.php


Est-ce plus clair ?

0
Re bonsoir,
Oui , un peu plus clair je vais essayer de faire la session demain avec tes conseils, merci et je te dirai sa demain.

Autrement, pour "La solution plus simple : sauvegarder le panier dans le session PHP et pas dans MySQL tant que l'utilisateur n'a pas validé sa commande Bref un panier virtuel uniquement stocké dans la mémoire du serveur", tu fais comment..? avec des cookyes..


Autrement mon idée n'est pas mauvaise, mais j'ai l'impression qu'elle est plus compliqué..lol enfin je vais bien réussir par y arriver j'espère.lol et donc je retire l'auto incrémentde article_com pr le mettre dans com_online pr le num_com..

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
14 juin 2006 à 23:10
Non pas avec des cookies avec les sessions PHP : j'enregistre tout le contenu du panier dans la session.

En fait si tu te rappelles bien à un moment lorsque tu affiches le contenu du panier tu récupères un tableau en php nommé "cde"

$cde = $_POST["cde"];

et bien si à la place tu fais :

$_SESSION["panier"]=$_POST["cde"];

ou

$_SESSION["cde"]=$_POST["cde"];

c'est comme tu veux

ben ca y est tu l'a sauvé dans la session ton panier (enfin j'ai pas testé mais je pense que ça doit fonctionner) : il est en mémoire sur le serveur.

A partir de là ton panier est accessible dans toutes les pages c'est comme si tu l'avais sauvé dans ta base de données.

Alors c'est pas génial les sessions en PHP ?


0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 159
15 juin 2006 à 07:27
je m'inscruste encore pour te demander de l'aide PHP

je te renvoie a mon long message et petit probleme surement pour toi

php et javascript comment integrer ce code
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
15 juin 2006 à 23:04
Bonsoir, j'ai vraiment du mal, parce que avec moi sa ne marche pas, en fait la personne s'identifier ds : sommaire4.php/session.php et donc une autre page s'affiche et la reconnait grace a mysql MAIS la session aprés n'est pas reconnu pour les autres pages dans lequel elle clique.

Autrement elle s'inscrit dans mdp_oublier.php/utilisateur.php
et s'ajout dans la base de donnée et revient a l'accueil, donc ouvre la session de $login.

Donc le principale étant que je voudrais : que lorsque la personne veux ajouter un ou des produits dans le panier= statuette.php/ajout_test_panier1.php que cela teste la session, si elle est ouverte ou non,Mais sa ne fait rien.., j'ai pas tout mis non plus..parce que sa ne marche.




Statuette.php:
<?
echo '<body bgcolor="7EC0EE ">';
include("vars.inc");

$sql="SELECT * FROM article Where article.type_maison = 'statuette' ";

$req=mysql_query($sql)or die ("error de connexion");
echo'<center>';
echo'<font size=6>'.'Liste des articles en forme de Statuette'.'</font>';
echo'<br>'.'<br>';
//creation cu tableau
include("article1.php");
?>

Article1.php :
 
<?
//echo'<form action="ajout_annuler1.php" method="POST">';
echo'<form action="ajout_test_panier1.php" method="POST">';


//epaisseur du tableau, des lignes du quadrillage, enrobage des cellules
echo '<table   border=3 >';
//bgcolor=#CCCCFF  entêtes des colonnes

echo'<td>'.'<center><i><b>Reférence des articles</b></i></center>'.'</td>'.'<td>'.'<center><i><b>Nom</b></i></center>'.'</td>'.'<td>'.'<center><i><b>Prix</b></i></center>'.'</td>'.'<td>'.'<center><i><b>Photo</b></i></center>'.'</td>'.'<td>'.'<center><i><b>Quantité</b></i></center>'.'</td>'.'<tr>';


$nb = mysql_num_rows($req);
if ($nb==0) {echo 'Aucune réponse';}else

{while($resultat=mysql_fetch_array($req))
{
$ref_art=$resultat['ref_art'];
$nom=$resultat['nom'];
$prix=$resultat['prix'];
//$type_maison=$resultat['type_maison']; 
//$description=$resultat['description']; 
$qtite_com=$resultat['qtite_com'];
$fichier_photo=$resultat['fichier_photo'];

echo"<td><font size=5><center>$ref_art</center><input name='cde[".$ref_art."][ref_art]' type='hidden' value=$ref_art></font></td>"; 

echo"<td><font size=5>$nom<input name='cde[".$ref_art."][nom]' type='hidden' value=$nom></td>"; 


echo"<td><font size=5><center>$prix</center><input name='cde[".$ref_art."][prix]' type='hidden' value=$prix></td>";

//adresse de la photo pour mettre dans la base de donnée et s'affiche automatiquement
echo"<td><img src=$fichier_photo><input name='fichier_photo' type='hidden' value=$fichier_photo></a></td>"; 

echo"<td><input name='cde[".$ref_art."][qtite_com]' type='text' value=$qtite_com></td></tr>";



echo'</center>';
}
}

echo'<tr><td align=center widht=33% colspan=5><input type="submit" name="save" value="ajouter les articles du panier"></td></tr></form>';

echo'</table>';
echo'<br>';
echo'<br>';
echo '<table><tr>
<td align=left><a href="sommaire4.php">retour page principale</a></td>
<br>

</table>';

echo'</font>';

?>


ajout_test_panier1.php :

<pre>
<?php
//permet de voir le résultat en détail
//echo var_dump($_POST);

//vérifier la connection de la session : login + mdp correctes et Autorisés avant voir le contenu du panier
include("verification_session.php");

?>
</pre>
<?
$cde=$_POST["cde"]; 

// Test si au moins 1 article est commandé 
$ok = false; 
foreach ($cde as $art=>$donnees) 
{ 
$qtite_com = $donnees["qtite_com"]; 
if ($qtite_com) 
{ 
$ok = true; // on a au moins 1 article en cde 
break; // on sort de la boucle : pas la peine de continuer les tests 
} 
} 

if ($ok) // Si au moins 1 article en cde 
{ echo'<form action="ajout_bd.php" method="POST">';
echo "<u>Contenu de votre panier</u> : <br><br>"; 
foreach ($cde as $art=>$donnees) 
{ 
$ref_art=$donnees["ref_art"];
$nom=$donnees["nom"];
$prix = $donnees["prix"]; 
$qtite_com = $donnees["qtite_com"]; 
if ($qtite_com) 
{ 
// Place ici le code pour sauver dans MySQL 
echo"<table><tr><td>Référence d'article :$ref_art<input name='cde[".$ref_art."][ref_art]' type='hidden' value=$ref_art></td></tr>"; 

echo"<tr><td>Nom :$nom<input name='cde[".$ref_art."][nom]' type='hidden' value=$nom></td></tr>"; 

echo"<tr><td>Quantité :<input name='cde[".$ref_art."][qtite_com]' type='text' value=$qtite_com></td></tr>";

echo"<td>Prix : $prix<input name='cde[".$ref_art."][prix]' type='hidden' value=$prix></td></tr></table>";

} 
} 
echo'<td align=right><input type="submit" name="save" value="Ajouter articles dans bd"></td></tr></form>';

echo"<td align=right><form action='sommaire4.php'  method='POST'><input type='submit' value='Poursuivre Achats'></form>";
} 

else 
{ 
echo "Votre panier est vide !<br />"; 
} 
?>


ajout_bd.php :
<?php 
include("vars.inc"); 
$cde=$_POST["cde"]; 

foreach ($cde as $art=>$donnees) 
{ 
$ref_art=$donnees["ref_art"];
$nom=$donnees["nom"];
$prix = $donnees["prix"]; 
$qtite_com = $donnees["qtite_com"]; 

if ($qtite_com) // si qté différente de zéro 
{ 

// Exécute une requête pour chaque article 
$req="INSERT INTO article_com(ref_art,nom,qtite_com,prix) VALUES('".$ref_art."','".$nom."',".$qtite_com.",".$prix.") "; 

mysql_query($req) or die('erreur'); 

// On récupère le dernier nr de commande = lastinsert id LAST_INSERT_ID() syntaxe MySQL 
//$num_com =mysql_insert_id(); 
//echo"<br>Commande ".$num_com." créée";
} 
} 
include("sommaire4.php");
//include("formulaire_commande.html");
echo"<br>ajout effectuer"; 
?> 


Verification_session.php :
<?php 
session_start();
$access=true;
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{    //session4.php///
//include("session_panier.php");
	// Normalement ici tu vérifies dans MySQL si l'utilisateur est autorisé ou non
	// et pas en "dur" comme ici !
	$access = ($_POST["login"]=="$login") && ($_POST["mdp"]=="$mdp");
}

if (!$access)
{
	// On vide le panier ? Pas obligatoire ...
	//if (isset($_SESSION["panier"])) $_SESSION["panier"] = array();

	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/mdp_oublier.php");	
	exit;
}
?>


Session_panier.php :
<?php 
session_start();
$access=true;
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{    //session4.php///
//include("session_panier.php");
	// Normalement ici tu vérifies dans MySQL si l'utilisateur est autorisé ou non
	// et pas en "dur" comme ici !
	$access = ($_POST["login"]=="$login") && ($_POST["mdp"]=="$mdp");
}

if (!$access)
{
	// On vide le panier ? Pas obligatoire ...
	//if (isset($_SESSION["panier"])) $_SESSION["panier"] = array();

	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/mdp_oublier.php");	
	exit;
}
?>


Donc,voila mes codes... si tu peux m'aider, et,corriger mes erreurs sa sert trés trés GENTIL, STP... MERCI D'AVANCE PHP
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
16 juin 2006 à 15:42
Bjr ,

Tient tu as changé de pseudo ...

Non, ca ne va pas .. :-(

As-tu fait une analyse (sur papier) avant de te lancer dans l'écriture des pages PHP ?

As-tu fait un schéma avec le nom des pages ?

Car on dirait que tu improvises au fur-et-à-mesure des problèmes rencontrés.


Le code n'est pas spécialement faux mais rien ne s'imbrique correctement : c'est pas clair.

Je ne peux pas corriger grand chose : il manque trop d'éléments.

Il faut reprendre par le début :

1) La page d'accueil : je suppose qu'il s'agit de sommaire4.php
Quel est le code ?

2) La page d'identification mdp_oublier.php et utilisateur.php
Quel est le code ?

De plus quel est le code de session.php

Tant que l'identification ne fonctionnera pas tu ne pourras pas aller plus loin.

Alors dans un premier temps laisse de côté le panier et concentre toi sur le login et les sessions.

Première chose faire en sorte que le login fonctionne bien :

Tu fais une page login qui demande à l'utilisateur de s'identifier (login+mdp) ou bien de s'inscrire (en remplissant toutes les infos nécessaires : adresse, mode de règlement, nom etc )

Nota : l'utilisateur doit pouvoir modifier ses coordonnées si elles ont changé !

Tu sauves dans la session son login : $_SESSION["login"] = $login

Tu sauves éventuellement les infos sur le client dans MySQL :
comment s'appelle ta table des clients ?
Je suppose que dans ta table tu enregistres le login qui te sert d'identifiant.

Dans ta page principale tu places un lien vers la page de login et tu testes jusqu'à ce que ça fonctionne.
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
16 juin 2006 à 15:59
Oui, j'ai changé...lol

voila : sommaire4.php

<html>
<body bgcolor=orange>

<form method="POST" action="session4.php">
<table >
<tr><td >

<table border=1>
<tr><td align=left width=18%><center><u>S'identifier</u></center><br>
<center> login : <br><input type="login" name="login"><br>
<center> mot de passe :<br><input type="password" name="mdp"><br><br>
<center><input type="submit"  value="Valider"></form>
<br><br>
mot de passe oublier / devenir Client <a href="mdp_oublier.php"><center>cliquez ici.</center></center></a>


<hr>
<center><font face="Arial, Helvetica, sans-serif">Spéciale </font><br>
<center><a href="fêtes.php" ><font face="Courier New, Courier, mono">Fêtes</a></font><br>
<center><a href="anni.php" >Anniversaire </a><br>
<center><a href="mariage.php" >Mariage </a><br>
<center><a href="naissance.php" >Naissance</a><br>
<hr>
<center><a href="voire_panier.php" >Voir Panier</a><br>
<center><a href="contact.html" >Contact</a><br></center>
</td>
<td align=center width=40%>
<?
include("pageprincipale4.php");
?>
</td>
</tr>
</table></font>
</body>
</html>


Session4.php :
<?
{
$login=$_POST['login'];
$mdp=$_POST['mdp'];

{
include("vars.inc");

$sql="SELECT *FROM utilisateur WHERE (login='$login') AND (mdp='$mdp')";

$query=mysql_query($sql)or die('erreur');

$nb=mysql_num_rows($query);//nbre de ligne du résultat de la requete

if($nb==0)
{
// si passe ok demarre session
session_start();
// initialisation variable autorise = ok

$_SESSION['autorise']="";
echo"Incorrecte,veuillez Vérifier";
}
else
{
// si login et mdp ok demarre session

session_start();

// initialisation variable autorise = ok

//echo"Bienvenue"$email;
$_SESSION['autorise']="ok";
//echo"acces autorise OK";

echo"<center>Bienvenue {$_POST['login']}</center>";
//echo"Bienvenue<a href = pageprincipale4.html target=c></a>";
}
}
}
include("sommaire4.php");
?>


mdp_oublier.php :
<html><body bgcolor=" 63B8FF ">

<table align=center border=1 width=100%><div align=left>

<tr>
<td><center>Mot de passe oublié : </center></td>
<td><center>Identification gratuite : tous les champs sont obligatoires</center>
</td></tr>

<tr>
<td>Saisir votre email , si vous ne vous souvenez plus de votre mot de passe.<br></td>

<td><br><br>Choississez votre mot de passe (de 5 caractères), qui vous permettra d'accéder aux <br>espaces sécurisés pour le suivi de votre commande et à vos services personnalisés.<br><br>Veillez indiquer votre login sans apostrophe, ni caractères spéciaux.<br></td>
</tr>

<tr><td>
<form  method="POST" action="mdp_remplacer.php">
<table  border=0 align=center>

<tr><td></td><td align=center ><u>Déjà client</u>
<br><br></td></tr>

<tr><td >login  : <td><input type="login" name="login"></td></td>

<tr><td >email : <td><input type="text" name="email"></td></tr>

<td><td align=center><input type='submit' value='Valider'></td></td>
</table>
</td></div>
</form>

<td align=left>
<table  border=0 align=center><br>


<form  method="POST" action="utilisateur.php">

<tr><td><td align=center ><u>S'inscrire</u><br><br>
</td></td></tr>

<tr><td align=right > login : <td><input type="login" name="login"></td></tr>

<tr><td align=right>email : <td><input type='email' name="email"></td></tr>

<tr><td align=right>mot de passe : <td><input type="password" name="mdp"></td></tr>

<td><td align=center><input type='submit' value='Valider'></td></td>

</td></tr>
</table>
</form>
</table>

<a href="sommaire4.php">retour à la page principale</a>
</html>


utilisateur.php :
<?php
/* définir les champs à tester*/
$email=$_POST['email'];

$login=$_POST['login'];

$info = array ("login" => "login","email" =>"email","mdp" => "mdp");

foreach($_POST as $clé=>$valeur)
{

/* controler tous les champs sauf celui du telephone*/

if($valeur =="")

{
$champVide[$clé] = "blanc"; 
}
//vérification de la validité des noms propres

//vérifie si login existe déjà ds ma bd ,si oui ,changer le champs incorrects
elseif ($clé =="login")
{include("essai_utilisateur.php");
{if(strlen($valeur)>8)
{ $mauvaisFormat[$clé]= "mauvais";
}
}
}

elseif ($clé =="email")
{if(!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. 
'@'. 
'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'. 
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', 
$valeur)) { $mauvaisFormat[$clé]= "mauvais";
}
}


//elseif ($clé =="mdp" and $clé =="mdp1")
//if ($mdp <> $mdp1)
//{ $mauvaisFormat[$clé]= "mauvais";
//}

//pour ton password (de 4 à 5 caractères alphanumérique seulement)
elseif ($clé =="mdp")
{if(strlen($valeur)<>5)
{if(!eregi("^[a-zA-Z0-9]{4,5}$",$valeur)) 
{ $mauvaisFormat[$clé]= "mauvais";
}
}
}

}// fin de la boucle foreach pour $_POST 

/* si l'un des champs est incorrect, afficher un message */
if(@sizeof($champVide) >0 or @sizeof($mauvaisFormat)>0)
{
if(@sizeof($champVide) >0)
{
/* message pour information manquante */

echo"<b><br>Un des champs obligatoires n'a pas été renseigné.
        Vous devez saisir :</b></br>";

/* affichage du nom des informations requises */
foreach($champVide as $clé =>$valeur)

{
echo "   {$info[$clé]}<br>";
}//fin de la boucle foreach pour les champs vierges 
}
if (@sizeof($mauvaisFormat) >0)

{


/* message pour information invalide */
echo"<b><br>Un ou plusieurs champs contiennent des informations qui semblent incorrectes. Corrigez le format de :</b></br>";
/* affiche la liste des informations incorrectes*/

foreach($mauvaisFormat as $clé => $valeur)
{
echo "   {$info[$clé]}<br>";
}
}

include("reaffichage_utilisateur.inc");
}

echo"<center>Récapitulatif de votre saisie</center>";
echo"Pensez à les mémoriser ou les noter : <br>";
//afficher simplement les noms, prenom...
foreach ($_POST as $info=> $valeur)
{echo "  $info : $valeur<br>";}
include("ajout_utilisateur.php");
echo"Bienvenue {$_POST['login']}";
include("sommaire4.php");
?>



Oui, avant de commencer j'ai schématisé.

Voilà, j'espère que tu prendrai un peu de ton temps pour m'aider et je te serai trés reconnaissance si tu arrives a le faire et a m'aider jusqu'a ce que j'y arrive.
Et oui mes clients sont dans la table utilisateur (login, mdp, et email).
Merci BEaucoup.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
18 juin 2006 à 11:45
Bjr

J'ai pas tout lu parce que ça fait quand même beaucoup de codes LOL

bien, à priori ton code pour s'identifier me semble correct.

par contre dans la page session4.php inutile de sauver "ok" dans la session car cette information ne t'apporte pas grand chose hormis le fait de savoir que l'utilisateur s'est identifié :
 $_SESSION['autorise']="ok"; 


Sauve plutôt le login (attention le login doit être unique ! 2 utilisateurs ne peuvent pas avoir le même login !)
 $_SESSION['login']=$login; 


Pour savoir si un utilisateur est connecté il te suffit de tester

$autorise =  isset($_SESSION['login'])  && ($_SESSION['login'] != "")); 


L'intérêt de conserver le login est que tu vas pouvoir l'enregister ultérieurement dans ta table com_onlin et donc savoir qui à passer telle ou telle commande .


J'ai un peu bricolé ta page sommaire4.php en ajoutant une feuille de style interne et en supprimant les attributs de mise en page devenus inutiles (c'est la feuille de style qui les gère désormais)
De plus j'ai supprimé le tableau imbriqué dans le <td> qui ne servait à rien.

Note l'attribut class="..." dans certaines balises qui permet de faire référence aux styles.

Ca donne :

<html>
<style>

/* Style par défaut pour la page body et toutes les tables */
body, table
{
	font-size : 10pt; 				/* Taille police */
	font-family : Arial, Helvetica, sans-serif;	/* Polices */
	background-color : orange;			/* Couleur du fond */
}

/* Style pour les cellules du tableau */
.cellule_gauche, .cellule_droite
{
	text-align : center;  				/* Centrer le contenu horizontalement */
}


.titre
{
	font-weight : bold; 				/* Mettre en gras */
	text-decoration : underline;			/* Souligné */
}

</style>

<body >
<table border="1">
<tr>
	<td class="cellule_gauche">
		<form method="POST" action="session4.php">
		<span class="titre">S'identifier</span><br /><br />
		login : <br />
		<input type="login" name="login"><br />
		mot de passe :<br />
		<input type="password" name="mdp"><br /><br />
		<input type="submit"  value="Valider"><br /><br />
		Mot de passe oublié / Devenir Client 
		<a href="mdp_oublier.php">cliquez ici.</a>
		<hr />
		<span class="titre">Spécial</span><br />
		<a href="fêtes.php" >Fêtes</a><br />
		<a href="anni.php" >Anniversaire </a><br />
		<a href="mariage.php" >Mariage </a><br /> 
		<a href="naissance.php" >Naissance</a><br />
		<hr />
		<a href="voire_panier.php" >Voir Panier</a><br />
		<a href="contact.html" >Contact</a><br />
		</form>
	</td>

	<td class="cellule_droite">
		<? include("pageprincipale4.php"); ?>
	</td>
</tr>
</table>


</body>
</html>




Qu'est-ce que c'est que cette variable $clé avec un "e acccent aigu" N'utilise pas les accents dans les variables !!!
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
18 juin 2006 à 22:55
bonsoir, php et donc

$autorise = isset($_SESSION['login'] && ($_SESSION['login'] != "")); = il faut que je le met a chaque début de mes pages que je t'ai donné et surtout pour ajout dans le panier..?

Merci de me réprendre et de m'aider STP c'est important pour moi dit arriver.

Merci d'avance et Bonne soirée.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
19 juin 2006 à 11:15
Bjr,

Dans toutes les pages peut-être pas mais dans ajout_bd.php c'est certain.

Tu as dit que tu voulais que l'utilisateur puisse remplir son panier sans forcément s'identifier : donc attend le moment où il va enregistrer sa commande avant de vérifier s'il est identifié.
Naturellement rien n'empêche l'utilisateur de s'identifier dès le départ.

N'oublie pas le session_start() également
0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
19 juin 2006 à 18:14
Bonjour, décidement je n'y arrive pas, j'ai beau changé, transformé testé... soit il reconnait pas la session meme si je l'ai ouverte , soit il l'a reconnait meme si elle est pas ouverte.

Et j'ai changé, je le met plus dans ajout_bd le teste de la session mais avant sa.

Alors j'ai fait la modif , que tu m'avais dit pour la page session4.php :

<?
{
$login=$_POST['login'];
$mdp=$_POST['mdp'];

{
include("vars.inc");

$sql="SELECT *FROM utilisateur WHERE (login='$login') AND (mdp='$mdp')";

$query=mysql_query($sql)or die('erreur');

$nb=mysql_num_rows($query);//nbre de ligne du résultat de la requete

if($nb==0)
{
// si passe ok demarre session
session_start();
// initialisation variable autorise = ok

$_SESSION['login']="";
echo"Incorrecte,veuillez Vérifier";
}
else
{
// si login et mdp ok demarre session

session_start();

// initialisation variable autorise = ok

//echo"Bienvenue"$email;
     //$_SESSION['autorise']="ok";
$_SESSION['login'] = $login;
//echo"acces autorise OK";

echo"<center>Bienvenue {$_POST['login']}</center>";
//echo"Bienvenue<a href = pageprincipale4.html target=c></a>";
}
}
}
include("sommaire4.php");
 //include("session_check_login.php");
?>


Et Donc quand les gens vont appuyer sur le bouton ajouter au panier : ajout_test_panier1.php , la je teste si une session est ouverte ou pas
<?php
//permet de voir le résultat en détail
//echo var_dump($_POST);

//vérifier la connection de la session : login + mdp correctes et Autorisés avant voir le contenu du panier
{
include("verification_session.php");

}
//foreach ($com as $ref_art => $qtite_com) 
//{ echo "Article : ".$ref_art." Nom : ".$nom." Prix : ".$prix." quantité : ".$qtite_com."<br/>"; } 

//$info = array ("ref_art" =>"ref_art","qtit_com" =>"qtite_com","prix" => "prix","nom" => "nom");
$cde=$_POST["cde"]; 

// Test si au moins 1 article est commandé 
$ok = false; 
foreach ($cde as $art=>$donnees) 
{ 
$qtite_com = $donnees["qtite_com"]; 
if ($qtite_com) .....



Et donc c'est ce code qui fait :"soit il reconnait pas la session meme si je l'ai ouverte , soit il l'a reconnait meme si elle est pas ouverte" => verification_ajout_test_panier.php.
<?php 
session_start();
$access=true;
if (isset($_POST["login"]) && isset($_POST["mdp"]))
{   
	// Normalement ici tu vérifies dans MySQL si l'utilisateur est autorisé ou non
	// et pas en "dur" comme ici !
	$access = ($_SESSION["login"]==$login) && ($_SESSION["mdp"]==$mdp);

//La j'ai essayé de mettre mon code comme pr session4.php pr tester le mdp et login : mais marche pas...
	
}
//else
if (!$access)
{
	// On vide le panier ? Pas obligatoire ...
	//if (isset($_SESSION["panier"])) $_SESSION["panier"] = array();

	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/mdp_oublier.php");	
	exit;
}
?>


Voilà, j'espère que tu pourrais me corriger mon code ..

Merci d'avance.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
19 juin 2006 à 20:24
Bonsoir

" Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire arrivent aisément."
Boileau, L'art poétique

sauf que Boileau n'a jamais touché à un ordinateur ! LOL

Dans verification_session.php tu mets

<?php 
session_start();

// Test si l'utilisateur s'est identifié
$access=isset($_SESSION['login'])  && ($_SESSION['login'] != "");


if (!$access)
{   
	// On vide le panier ? Pas obligatoire ...
	//if (isset($_SESSION["panier"])) $_SESSION["panier"] = array();

	// Redirection vers page de login
	// On retourne sur la page login.php : il faut mettre l'url complète après Location: !!!
	header("Location: http://" . $_SERVER['HTTP_HOST']
                     . rtrim(dirname($_SERVER['PHP_SELF']), '/\\')
                     . "/mdp_oublier.php");	
	exit;
}
?>


Test on verra bien ...

Pourquoi as-tu essayé de tester $_SESSION['mdp'] alors qu'on ne l'a même pas sauvé dans la session dans la page session4.php ?

0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
19 juin 2006 à 21:42
Bonsoir, j'ai testé et non sa ne fait rien...

JE fais pas mal de testes, je suis un peu désespérer que sa ne marche pas, alors j'espère que tu ne vas m'abandonner...

Merci de continuer à m'aider.
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
19 juin 2006 à 23:17
C'est quoi toutes ces accolades en trop dans session4.php



<?
$login=$_POST['login'];
$mdp=$_POST['mdp'];

include("vars.inc");


$sql="SELECT * FROM utilisateur WHERE login='".$login."' AND mdp='".$mdp."'";

$query=mysql_query($sql)or die('erreur');
$nb=mysql_num_rows($query);//nbre de ligne du résultat de la requete

if($nb==0)
{
	// si passe ok demarre session
	session_start();
	// initialisation variable autorise = ok

	$_SESSION['login']="";

}
else
{
	// si login et mdp ok demarre session
	session_start();

	// Sauve le login

	$_SESSION['login'] = $login;
}
include("sommaire4.php");
?>


C'est mieux comme ça


0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
20 juin 2006 à 10:55
ouai ya ds tites truc inutiles certes..lol mais sa sa marche donc.lol

stp...aide moi .
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
20 juin 2006 à 14:13
Bjr,

1 ou 2 trucs inutiles ?!!! Un bien beau B _ _ _ _ L oui ! LOL


Ca marche finalement ou non ?

0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
20 juin 2006 à 19:11
non pas si bordélique que sa je trouve.

Et non a mon desespoir sa ne marche toujours pas!

bs
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
20 juin 2006 à 20:27
Bsr

Hé ben j'espère que ca fonctionnera avant d'atteindre la barre symbolique des 100 messages postés !! ! LOL


Reprenons dans l'ordre

Ta page : sommaire4.php elle fonctionne sans pb : OK ?


Lorsque tu cliques sur Valider pour s'identifier la page session4.php fonctionne-t-elle ?


Pour être tout à fait sûr que tout va bien :

tu sauves ce code dans le fichier test_login.php

<html>
<head>
<title>Test login</title>
<style>
.msg
{
	font-size : 24pt;
	font-weight : bold;
	font-family : Arial;
}
</style>

</head>
<body>
<p class="msg">
<?php 
session_start();

// Test si l'utilisateur s'est identifié
$access=isset($_SESSION['login'])  && ($_SESSION['login'] != "");


if (!$access)
{   
	echo "Vous n'êtes pas connecté !";
}
else
{
	echo "Vous êtes bien connecté sous le login ".$_SESSION['login'];
}
?>
</p>

</body>
</html>




Dans ta page sommaire4.php tu ajoutes


<a href="test_login.php">Tester login</a>


Tu t'identifies avec login + mdp puis de retour au sommaire clique sur le lien "Tester login"


0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
21 juin 2006 à 11:03
Bonjour, et oui avec ce que tu m'as donné cela prouve que ma session marche meme qd je vais sur des pages de produits et que je retourne aprés a l'accueil et que je reclique sur teste login sa me mai login..est connectée donc sur sa ya pas de soucis.

C'est pour tester la session ouverte, avant d'ajouter dans le panier qui bloque.

Merci .
0
PhP Messages postés 1770 Date d'inscription lundi 11 décembre 2000 Statut Membre Dernière intervention 23 décembre 2009 606
21 juin 2006 à 13:40
Bjr

Bon c'était juste pour m'assurer que ton provider avait bien autorisé les sessions PHP sur son serveur.


Donc c'est dans ta page ajout_test_panier1.php que ca ne fonctionne pas ?

Ca me paraît curieux qd même ...

Normalement si test_login.php fonctionne alors
ajout_test_panier1.php doit fonctionner également

Modifie ajout_test_panier1.php comme ci-dessous et teste :


ajout_test_panier1.php :

<html>
<body>
<?php
	//vérifier la connection de la session : login + mdp correctes 
	include("verification_session.php");
	echo "Votre login est ".$_SESSION["login"]."<br />";
?>

<?
$cde=$_POST["cde"]; 

// Test si au moins 1 article est commandé 
$ok = false; 
foreach ($cde as $art=>$donnees) 
{ 
	$qtite_com = $donnees["qtite_com"]; 
	if ($qtite_com) 
	{ 
		$ok = true; // on a au moins 1 article en cde 
		break; // on sort de la boucle : pas la peine de continuer les tests 
	} 
} 

if ($ok) // Si au moins 1 article en cde 
{ 
	echo'<form action="ajout_bd.php" method="POST">';
	echo "<u>Contenu de votre panier</u> : <br><br>"; 
	foreach ($cde as $art=>$donnees) 
	{ 
		$ref_art=$donnees["ref_art"];
		$nom=$donnees["nom"];
		$prix = $donnees["prix"]; 
		$qtite_com = $donnees["qtite_com"]; 
		if ($qtite_com) 
		{ 
			// Place ici le code pour sauver dans MySQL 
			echo "<table><tr><td>Référence d'article :$ref_art<input name='cde[".$ref_art."][ref_art]' type='hidden' value=$ref_art></td></tr>"; 

			echo "<tr><td>Nom :$nom<input name='cde[".$ref_art."][nom]' type='hidden' value=$nom></td></tr>"; 

			echo "<tr><td>Quantité :<input name='cde[".$ref_art."][qtite_com]' type='text' value=$qtite_com></td></tr>";

			echo "<td>Prix : $prix<input name='cde[".$ref_art."][prix]' type='hidden' value=$prix></td></tr></table>";

		} 
	} 

	echo '<td align=right><input type="submit" name="save" value="Ajouter articles dans bd"></td></tr></form>';

	echo "<td align=right><form action='sommaire4.php'  method='POST'><input type='submit' value='Poursuivre Achats'></form>";
} 
else 
{ 
	echo "Votre panier est vide !<br />"; 
} 
?>
</body>
</html>


0
edelweiss77 Messages postés 17 Date d'inscription samedi 27 mai 2006 Statut Membre Dernière intervention 28 juin 2006
21 juin 2006 à 14:09
Non c'est bon.

Bonjour, donc le teste de la session avant l'ajout ds le panier marche à peu prés..merci

Maintenant j'en suis à mon panier d'achat pour le visualiser,donc

pour moi je vais retester l'ouverture d'une session et aprés grace a

leur login je vais afficher les produits qu'ils ont commandé et leur

num_com pt etre, aprés je récupére ce num_com pour qu'il soit

identique dans com_online(coordonnées), je vais voir si c'est

faisable.lol

je voulais avoir une précision et traduction en français, je suis pas

sûr : sur le code suivant
$access=(isset($panier["login"]) && ($panier["login"] != ""));

if (!$access)= "autrement" ..? 



Merci d'avance.
0