Page 1 sur 1

Créer un site e-commerce avec DW cs4 php/mysql

Posté : 25 sept. 2011, 22:52
par brother
Bonjour,

Je travail sur un sujet du livre Le Campus (Créer un site e-commerce avec DW cs4 php/mysql).
Je précise que je ne travail pas avec DW…
Les exemples fournis avec le livre fonctionnent très bien en localhost avec WampServer Version 2.1.
Maintenant je passe en ligne avec (Nuxit php5) avec les changements des mots de passe etc.
Le site fonctionne à moitié, je peux rentrer les données à la place du client en faisant (Nouveau)…
Je peux visionner les articles…
Par contre si je simule l’ID et le mot de passe d’une personne enregistrée et bien la connexion ne se fait pas.
Je n’ai pas de message d’erreur car il ne se passe rien…

Le site fonctionne avec un login (e-mail unique) et un mot de passe.
Le code de connexion ressemble à ça :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<li>
<h2>Espace Clients</h2>
<?php if (!isset($_SESSION[’MM_Username’])) { ?>
<ul>
<form action="" method="post" name="login" id="login">
<p>adresse mail :
<input name="email" type="text" id="email">
<br>
mot de passe :
<input name="mdp" type="password" id="mdp">
<input type="submit" name="Submit" value="Se connecter">
</p>
</form>
</ul></li>
<?php } else { ?>
<ul>

// doit apparaitre une fois la connexion etablit
<p><a href=" compte_client.php ">Mon espace client</a> <br>
<a href="logout.php">Se déconnecter</a></p>
</ul>
</li><?php } ?>

Dans la page index il y a ce code :
<?php
include('../include/calendrier.php'); 
include('../include/menu.php'); 
?> 
<?php require_once('connect.php'); ?>
<?php
if(!isset($_SESSION)) 
{ 
session_start(); 
}
?>
<?php
@mysql_select_db($Nom_bdd, $connection_base);
$query_Cat = "SELECT * FROM table_categories ORDER BY intitule ASC";
$Cat = mysql_query($query_Cat, $connection_base) or die(mysql_error());
$row_Cat = @mysql_fetch_assoc($Cat);
$totalRows_Cat = mysql_num_rows($Cat);
?>
<?php

if(!isset($_SESSION)) 
{ 
session_start(); 
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
  $GLOBALS['PrevUrl'] = $accesscheck;
  session_register('PrevUrl');
}

if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['mdp'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "compte_client.php";
  $MM_redirectLoginFailed = "login_failed.php";
  $MM_redirecttoReferrer = false;
  @mysql_select_db($Nom_bdd, $connection_base);
  
  $LoginRS__query=sprintf("SELECT mail, mdp FROM table_client WHERE mail='%s' AND mdp='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 
   
  $LoginRS = mysql_query($LoginRS__query, $connection_base) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
  
    $GLOBALS['MM_Username'] = $loginUsername;
    $GLOBALS['MM_UserGroup'] = $loginStrGroup;	      


    session_register("MM_Username");
    session_register("MM_UserGroup");

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<?php
if(!isset($_SESSION)) 
{ 
session_start(); 
}
?>
Quelqu’un connait-il ce livre avec les codes source ?
Si oui d’où vient cette erreur ?
Pourquoi cette différence avec un serveur en local et en ligne ?
Quelle correction dois-je apporter pour résoudre ce problème ?

Merci

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 25 sept. 2011, 23:11
par moogli
Salut,

Je ne connais ni le sort ne le bouquin par contre :
<?php
if(!isset($_SESSION)) 
{ 
session_start(); 
}
?>
c'est totalement inutile car les supers globales sont toujours déclarée meme si tu les utilise pas, le isset c'est a utiliser sur les indexs car eux tu ne peux pas savoir s'ils existent !

Vire les @ devant les fonctions car elle suppriment les messages d'erreurs c'est une mauvaise idée d'utiliser ça car tu ne peux etre sur de ce qui se passe dans ton script.

Session_register() est une fonction obsolète regarde sur les tutos de phpfrance ou sur phpdebutant.org ou lephpfacile.com pour voir comment on fait maintenant ;)

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 27 sept. 2011, 19:55
par brother
Bonjour moogli,

Merci, j'ai fait les corrections dans tous les dossiers :
La page index:
<?php
include('../include/calendrier.php'); 
include('../include/menu.php'); 
?> 
<?php require_once('connect.php'); ?>
<?php
mysql_select_db($Nom_bdd, $connection_base);
$query_Cat = "SELECT * FROM table_categories ORDER BY intitule ASC";
$Cat = mysql_query($query_Cat, $connection_base) or die(mysql_error());
$row_Cat = mysql_fetch_assoc($Cat);
$totalRows_Cat = mysql_num_rows($Cat);
?>
<?php
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
  $GLOBALS['PrevUrl'] = $accesscheck;
  $_SESSION['PrevUrl'] = $PrevUrl;
}

if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=$_POST['mdp'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "compte_client.php";
  $MM_redirectLoginFailed = "login_failed.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($Nom_bdd, $connection_base);
  
  $LoginRS__query=sprintf("SELECT mail, mdp FROM table_client WHERE mail='%s' AND mdp='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 
   
  $LoginRS = mysql_query($LoginRS__query, $connection_base) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
  
    $GLOBALS['MM_Username'] = $loginUsername;
    $GLOBALS['MM_UserGroup'] = $loginStrGroup;	      


   $_SESSION['MM_Username'] = $MM_Username;
   $_SESSION['MM_UserGroup'] = $MM_UserGroup;

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
Le code de connexion :
<?php if (!isset($_SESSION['MM_Username'])) { ?>

<form action="" method="post" name="login" id="login">
  <p>adresse mail : 
    <input name="email" type="text" id="email"/>
    <br/>
    mot de passe : 
    <input name="mdp" type="password" id="mdp"/>
    <input type="submit" name="Submit" value="Se connecter"/>
</p>
</form>

<?php } else { ?>

 <p><a href="compte_client.php"><span class="lien_droite">Mon espace client</span></a> <br/>
  <a href="logout.php"><span class="lien_droite">Se d&eacute;connecter</span></a></p>
 
<?php } ?>
J'ai supprimé :
<?php
if(!isset($_SESSION)) 
{ 
session_start(); 
}
?>
J'ai modifié tous les (session_register) :
 
//Avant
session_register('PrevUrl');
//Apres
$_SESSION['PrevUrl'] = $'PrevUrl';
//Etc....
J'ai supprimé les (@) devant mysql et rien ne ce passe..
Aucun message d'erreur !
Et puis maintenant j'ai le même problème en localhost ...

Comment faire ?

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 28 sept. 2011, 00:28
par moogli
ça c'est pas bon : $_SESSION['PrevUrl'] = $'PrevUrl'; faut virer les '

je pense qu'au final tu ne comprend pas trop le code ?

parce que la c'est un fourbis incommensurable :mrgreen:

- une seul mysql_select_db est utile
- il y a une tonne de variable qui sortent de nulle part
- je te conseil ce tuto pour comprendre la validation des formulaire.
- essai de créer un formulaire de connexion simple, seul dans un fichier a part et lorsque cela fonctionne adapte au reste de ton code :)

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 28 sept. 2011, 10:06
par brother
Bonjour,

Effectivement je suis DEBUTANT et j’apprends seul dans mon coin au fin fond de la campagne !
Si je comprenais, et bien je ne poserais pas tant de questions, et notamment dans les débutants.
Surtout que ce code vient d’un CD du livre (Le Campus) acheté dans le commerce, alors si la source n’est pas bonne !
Comment puis-je le savoir et apprendre correctement ?
Bon, je vais faire des recherches et j’espère tomber sur du code qui fonctionne.
En apprenant seul c’est très dur, j’apprends pour mon plaisir…
Et puis en regardant mon code, je n'est pas du tout écrit les ('), il s'agit d'une erreur lorsque j'ai recopié !
Je l'ai écrit depuis mon portable, le clavier est petit !!!
$_SESSION['PrevUrl'] = $PrevUrl;
Je n'ai pas de soucis avec les formulaires, c'est une histoire de connexion.
Voici mon site que j’aimerais réaliser entièrement en PHP:

http://www.ruche-apiculture.org
J’ai encore plein de choses à améliorer.
Merci de tes conseils.

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 28 sept. 2011, 15:32
par moogli
Je suis moi aussi autodidacte meme si cela fait plus longtemps.

Ce que tu cherche a faire n'est pas simple, et je pense que comprendre le code fournit par ton cd est primordiale.
Le problème c'est que c'est dedié a un logiciel et bien sur on ne peux pas savoir quand on commence :)

Je ne peux pas exactement savoir ce que tu sais ou pas simplement je vois en fonction du code et des questions que l'on pose.

Je ne t'invite pas a trouver un code qui fonctionne mais plutôt a construire le tiens petit a petit on sera la pour te répondre si tu a des question ;)

Pour ce qui est de ton code les problème est que l'on ne sais pas exactement la conf serveur qui joue énormément dans certain cas ;)

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 28 sept. 2011, 22:28
par brother
Bonsoir, :D

Merci beaucoup pour ton soutient.
Alors je vais apprendre ce bout de code sans SGBD....Une petite page à accès réservé par une authentification.
<?php
session_start();
if ($_POST['login'] == "admin" &&  $_POST['mdp'] == "123")
	{
		$_SESSION['acces'] = "oui";
		$_SESSION['nom'] = $_POST['login'];
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Site</title>
</head>
<body>
<div>
	
<form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
<fieldset>
<legend>Accès réservé</legend>
<label>Login : </label><input type="text" name="login"/>
<label>Pass :  &nbsp;</label><input type="password" name="mdp"/>
<input type="submit" name="envoi" value="Entrer"/>
</fieldset>
</form>
Visiter les pages du site <br />
<ul>
 
<li><a href="article.php">Page article </a>
<? if(isset($_SESSION['page_article'])) echo " vue ". $_SESSION['page_article']. " fois"; ?>  </li> 

<li><a href="commande.php">Page commande</a>
<? if(isset($_SESSION['page_commande'])) echo " vue ". $_SESSION['page_commande']. " fois"; ?>  </li>
 
</ul>
</div>
</body>
</html>
Ca fonctionne, mais je n'arrive pas à me dépétrer de ce message d'erreur, uniquement sur la page index.:
Notice: Undefined index: login in /web/rucheapiculture/www/1/index.php on line 4
Pour les deux autres pages, ça fonctionne.
Voici la ligne 4 :

if ($_POST['login'] == "admin" &&  $_POST['mdp'] == "123")

Dans un autre post, pour autre chose, on ma répondu que :
Le message « undefined index etc..» fait référence à un tableau dont tu tentes d'utiliser la valeur d'un index inexistant.
Dans ce cas, ou est l'erreur ?
Avec ce genre d'exemple Je comprend mieux les ($_SESSION) ...
Une variable de session définie dans une page est visible dans les autres pages.... #-o
Je finirais bien par comprendre, un jour ! :priere:
Merci bien

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 28 sept. 2011, 22:43
par moogli
En fait c'est au 1ère affichage et lorsque l'on affiche la page quand le formulaire n'a pas été soumis.

Pour éviter ça utilise isset ;)

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 29 sept. 2011, 20:49
par brother
Bonjour,

Très bien ....

Ca fonctionne avec deux résultats.

Le premier :

          if (isset($_POST['login']) && isset($_POST['mdp']) == "admin" && "123")

Le deuxième :

         if (isset($_POST['login']) == "admin"  &&  isset($_POST['mdp']) == "123")


Sachant qu'après je remplacerais le login et le mot de passe par des posts, quel est la meilleurs solution ?

Dans l'une des pages supportant la session, dont voici le code :
<?php
session_start();

if ($_SESSION['acces']!="oui") 
{
header("Location: index.php");
}
else
{   
	echo "<h4>Bonjour ". $_SESSION['nom']."</h4>";
	$_SESSION['page_commande'] ++;
	
}
?>
La ligne qui sert à comptabilisé le nombre de visite
$_SESSION['page_commande'] ++;
est-elle correcte ?

Merci

Et pour finir, comment fait-on sur ce forum pour mettre résolu sur un post ?


Cordialement

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 29 sept. 2011, 21:50
par moogli
if (isset($_POST['login']) && isset($_POST['mdp']) == "admin" && "123")
if (isset($_POST['login']) == "admin" && isset($_POST['mdp']) == "123")

non dans les deux cas, cela fonction c'est sur mais simplement par auto conversion de type !

je m'explique, quelque soit le langage on ne peux comparer que des types identiques (tous comme on ne compare un range de carotte avec un rang de voiture dans une casse).

Que se passe t'il ?

php va chercher à comparer les deux cotés de l'égalité et pour cela essayer de trouver un type identique. or isset retourne un booléen, donc php va convertir l'autre partie ('admin' ou '123') en booléen.

Le truc c'est que tous ce qui est différent de 0 (ou null je crois) va être 'transformé' (on dit "caster" en bon français :mrgreen: ) comme vrai (true) donc l'égalité sera vrai tant que le formulaire fournira ce champ.
D'ailleurs si tu test avec des valeurs bidon tu devrais pourvoir le constater.

comment corriger cela ?

if (isset($_POST['login']) && isset($_POST['mdp']) && ($_POST['login'] == "admin") && ($_POST['mdp'] == "123"))

Après cela dépend où sont stocké les login / mot de passe correct. si c'est en base de donnée tu commence par les isset puis une requete sql pour récupérer le mot de passe et ensuite un if de comparaison des mot de passe s'il y a un retour.

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 29 sept. 2011, 22:17
par brother
:oops: #-o :priere:
Sans commentaire ...
Tu lis quoi comme livre sur PHP ?
Que me conseilles-tu en bouquin ?

Après je te laisse tranquille ...

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 30 sept. 2011, 03:19
par moogli
livre sur php ? un version version de php5 avancé (deuxième edition sont à 5 je crois ^^)

ceci dit ce livre me sert plutot d'aide mémoire ;)

Généralement je préfère les lectures numériques, les forums permettent de ce confronter a des cas tous différent et apportent aussi des infos permettant d'en apprendre en aidant les gens :)

sinon des articles sur le net comme sur mageekblog, developpez.net, phpfrance biensur :) et tout un tas d'autre

Après il y a des infos plus généraliste sur la programmation, comme la modélisation (uml, merise), le SQL etc etc tu a tout a profusion sur le net, n'hésite pas à lire plusieurs articles sur le sujet pour les confronter et te forger ton opinion (par exemple je refourgue allégrement le lien vers l'article du site du zéro sur PDO bien que je ne soit pas du tout d'accord avec l'utilisation de requête préparée à l'aveugle).


enfin bref plein de lecture sur le net c'est déjà pas mal ;)

@+

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 09 nov. 2011, 11:31
par niko80400
bonjour a vous tous quelqun pourait maider je voudrais creer une page avec mais liens de jeux et pour y rentrer lui mettre un code et un speudo enfin si quelqun peut mexpliquer tuos je lui laisse mon msn [email protected]

Re: Créer un site e-commerce avec DW cs4 php/mysql

Posté : 09 nov. 2011, 17:10
par moogli
désolé ici ce n'est que du support si tu veux tu tout cuit c'est dans le forum recrutement ;)

pour commencer => http://www.phpdebutant.org

reprendre un sujet qui ne parle pas du même sujet est intile.

lit les tutos, commence quelque chose et si tu des soucis pose tes questions sur le forum, il y aura, normalement, toujours quelqu'un pour t'aider.


@+