Fork me on GitHub




(1) 2 »


Même base de donnée pour le SITE et le module OSCOMMERCE
Guest_
Bon apres avoir eu plusieur pb j'y suis arrivé je pensais que la bdd du module oscommerce etait locker en ecriture mais non c'est le format de la date qui bloquai tout et pour ce genre d'erreur pas de message d'erreur donc la date doit etre du type 0000-00-00 pour entrez dans la date ensuit le code doit etre copier tout à la fin de la page register.php
pas oublier de rajouter un nom pour sur le bouton submit pour le if (isset [$_POST['......'] ))
Biensur le code est pas finalisé pour l'enregistrement de tout les champs dans oscommerce mais le plus dur est fait :)
le code est le suivant :
<?php
if(isset($_POST['submit']))
{
function antoine_rand($min = null, $max = null) {
static $seeded;

if (!isset($seeded)) {
mt_srand((double)microtime()*1000000);
$seeded = true;
}

if (isset($min) && isset($max)) {
if ($min >= $max) {
return $min;
} else {
return mt_rand($min, $max);
}
} else {
return mt_rand();
}
}


function antoine_encrypt_password($plain) {
$password = '';

for ($i=0; $i<10; $i++) {
$password .= antoine_rand();
}

$salt = substr(md5($password), 0, 2);

$password = md5($salt . $plain) . ':' . $salt;

return $password;
}
$mysqli = new mysqli("127.0.0.1","root","azertyu", "xoops");
$requete='SELECT * FROM xoops_shop_customers';
$result = $mysqli->query($requete);
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$tab['customers_id'][] = $row['customers_id'];
}
$total = count($tab['customers_id']);

$email_address = $_POST['email'];
$passwordtmp = $_POST['pass'];
$password = antoine_encrypt_password($passwordtmp);
$default = $tab['customers_id'][$total-1];
$default = $default+1;
$dob = "0000-00-00";
$mysqli->query("INSERT INTO xoops_shop_customers (customers_dob,customers_email_address,customers_password,customers_default_address_id) values('$dob','$email_address','$password','$default')");
}
?>

Posté le : 29/06/2006 11:17

Edité par 7wave sur 30/06/2006 11:26:35
Edité par 7wave sur 30/06/2006 11:27:51
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée pour le SITE et le module OSCOMMERCE
Guest_
il ne reste plus pour que ce soit pleinement fonctionnel de modifier le formulaire de la page html mais j'ai pas encore trouvé ou il etait généré mais cela est un autre sujet mais si vous avez la reponse vous pouvez me le dire :)

Posté le : 30/06/2006 11:31
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée pour le SITE et le module OSCOMMERCE
Guest_
bon personne me reponds

Posté le : 30/06/2006 20:30
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée pour le SITE et le module OSCOMMERCE
Aspirant
Inscrit: 05/05/2006 12:20
Messages: 44
es tu alle voir sur le forum de oscommerce.fr ?

Posté le : 01/07/2006 01:39
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée pour le SITE et le module OSCOMMERCE
Guest_
oui je suis allez voir mais ça ne parlais pas de xoops :)
Mais j'ai trouvé je mettrai bientot la reponse complete sur ce forum :)
@ bientot Antoine

Posté le : 04/07/2006 12:15
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée utilisateur pour le SITE et le module OSCOMMERCE
Guest_
Haaa j'y suis arrivé enfin bon faut dire que ça fais un moi que je m'y etait pas remi vu que je travaillais sur un autre site que vous pouvez aller voir ici

Mais revenons à nos moutons la soluce donc pour pouvoir avoir la meme bdd utilisateur entre le site et le module oscommerce ce qui evite la double inscription à nos cher client est :

<html>
<head>
<script language="javascript" type="text/javascript">
function Controle ()
{
if (document.register.pseudo.value =="")
{
alert ("Vous devez entrer votre pseudo SVP");
document.register.pseudo.focus();
return false;
}
else if (document.register.prenom.value =="")
{
alert ("Vous devez entrer votre prenom SVP");
document.register.prenom.focus();
return false;
}
else if (document.register.nom.value =="")
{
alert ("Vous devez entrer votre nom SVP");
document.register.nom.focus();
return false;
}
else if (document.register.mail.value =="")
{
alert ("Vous devez entrer votre E-mail SVP");
document.register.mail.focus();
document.register.mail.select();
return false;
}
else if (document.register.tel.value=="")
{
alert ("Vous devez entrez votre numéro de téléphone SVP");
document.register.tel.focus();
document.register.tel.select();
return false;
}
else if (isNaN (document.register.tel.value))
{
alert ("Votre numéro de telephone ne dois comporter que des chiffres");
document.register.tel.focus();
document.register.tel.select();
return false;
}
else if(document.register.tel.value.length != 10)
{
alert ("Votre numéro de telephone dois comporter 10 chiffres");
document.register.tel.focus();
document.register.tel.select();
return false;
}
else if (document.register.adr.value =="")
{
alert ("Vous devez entrer votre adresse postale SVP");
document.register.adr.focus();
document.register.adr.select();
return false;
}
else if (document.register.Cpost.value=="")
{
alert ("Vous devez entrer votre code postale SVP");
document.register.Cpost.focus();
document.register.Cpost.select();
return false;
}
else if (isNaN(document.register.Cpost.value))
{
alert ("Le code postale ne doit comporter que des chiffres");
document.register.Cpost.focus();
document.register.Cpost.select();
return false;
}
else if(document.register.Cpost.value.length != 5)
{
alert ("Le code postal doit comporter 5 chiffres");
document.register.Cpost.focus();
document.register.Cpost.select();
return false;
}
else if (document.register.ville.value=="")
{
alert ("Vous devez entrer votre le nom de votre ville SVP");
document.register.ville.focus();
document.register.ville.select();
return false;
}
else if (document.register.region.value == "")
{
alert ("vous devez entrez votre region SVP");
document.register.region.focus();
document.register.region.select();
return false;
}
else if (document.register.pays.selectedIndex == "")
{
alert ("vous devez choisir votre pays SVP");
document.register.pays.focus();
return false;
}
else if (document.register.pass.value == "")
{
alert ("vous devez entrez votre mot de passe SVP");
document.register.pass.focus();
document.register.pass.select();
return false;
}
else if (document.register.vpass.value == "")
{
alert ("vous devez confirmer votre mot de passe SVP");
document.register.vpass.focus();
document.register.vpass.select();
return false;
}
else if (document.register.pass.value!=document.register.vpass.value)
{
alert("la confirmation du mot de passe est incorecte veuillez retapper vos mots de passe svp");
document.register.pass.value="";
document.register.vpass.value="";
document.register.pass.focus();
return false;
}
else
{
return verifMail(document.register.mail.value);
}

}
function verifMail(a)
{
testm = false;
for (var j=1; j<(a.length); j++)
{
if (a.charAt(j)=='@')
{
if (j<(a.length-4))
{
for (var k=j ; k<(a.length-2) ; k++)
{
if (a.charAt(k)=='.')
{
testm = true;
}
}
}
}
}
if (testm==false)
{
alert('Votre adresse e-mail est incorrecte elle doit être du type:\n'+' pseudo@xx.xx.');
document.register.mail.focus();
document.register.mail.select();
return false;
}
else
{
return true;

}
}
</script>
<style type="text/css">
<!--
.etoile {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #FF0000;
text-decoration: blink;
}
-->
</style>
</head>
<body>
<?php
$xoopsOption['pagetype'] = 'user';

include 'mainfile.php';
include 'header.php';
function antoine_rand($min = null, $max = null) {
static $seeded;

if (!isset($seeded)) {
mt_srand((double)microtime()*1000000);
$seeded = true;
}

if (isset($min) && isset($max)) {
if ($min >= $max) {
return $min;
} else {
return mt_rand($min, $max);
}
} else {
return mt_rand();
}
}


function antoine_encrypt_password($plain) {
$password = '';

for ($i=0; $i<10; $i++) {
$password .= antoine_rand();
}

$salt = substr(md5($password), 0, 2);

$password = md5($salt . $plain) . ':' . $salt;

return $password;
}
if(isset($_POST['submitok']))
{
/* connection BDD */
$mysqli = new mysqli("127.0.0.1","root","azertyu", "xoops");
/* debut requete sql pour os commerce */
$requete='SELECT * FROM xoops_shop_customers';
$result = $mysqli->query($requete);
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$tab['customers_id'][] = $row['customers_id'];
}
$total = count($tab['customers_id']);
if (isset($_POST['comp']))
{
$comp = $_POST['comp'];
}
else if (!isset($_POST['comp']))
{
$comp = "";
}
if (isset($_POST['sct']))
{
$sct = $_POST['sct'];
}
else if (!isset($_POST['sct']))
{
$sct = "";
}
/* fin requete sql pour os commerce */

/* debut requete sql pour xoops */
$requete2 = 'SELECT * FROM xoops_users';
$result2 = $mysqli->query($requete2);
while ($row2 = $result2->fetch_array(MYSQLI_ASSOC))
{
$tab2['uid'][] = $row2['uid'];
$tab2['user_regdate'][] = $row2['user_regdate'];
}
$total2 = count($tab2['uid']);
/* fin requete sql pour xoops */
/*debut variable oscommerce*/
$genre = $_POST['genre'];
$pseudo = $_POST['pseudo'];
$prenom = $_POST['prenom'];
$nom = $_POST['nom'];
$mail = $_POST['mail'];
$tel = $_POST['tel'];
$adr = $_POST['adr'];
$Cpost =$_POST['Cpost'];
$ville = $_POST['ville'];
$region = $_POST['region'];
$pays = $_POST['pays'];
$passwordtmp = $_POST['pass'];
$password = antoine_encrypt_password($passwordtmp);
$default = $tab['customers_id'][$total-1];
$adress_id = $default+1;
$dob = "0000-00-00";
$zone = "0";
$fax = "0000000000";
/*fin variable pour oscommerce*/

/*debut variable pour xoops*/
$uname = $_POST['pseudo'];
$mail2 = $_POST['mail'];
$avatar = "blank.gif";
$user_regdate = (($tab2['user_regdate'][$total2-1])+1);
$user_from = $_POST['ville'];
$user_sig = $_POST['pseudo'];
$user_viewemail = "1";
$password2 = md5($passwordtmp);
$post ="0";
$attachsig = "0";
$rank = "0";
$level = "1";
$timezone_offset = "1.0"; //gmt +1
$lastlog ="0";
$umode = "nest";
$uorder = "0";
$notify_method = "1";
$notify_mode = "0";
$bio = " ";
$user_mailok = "1";
$groupid ="2";
$linky = (($tab2['uid'][$total2-1])+1);
/*fin variable pour xoops*/

/*debut insertion sql pour os commerce*/
$mysqli->query("INSERT INTO xoops_shop_customers (customers_gender,customers_firstname,customers_lastname,customers_dob,customers_email_address,customers_telephone,customers_fax,customers_password,customers_default_address_id) values('$genre','$prenom','$nom','$dob','$mail','$tel','$fax','$password','$adress_id')");
$mysqli->query("INSERT INTO xoops_shop_address_book (customers_id,entry_gender,entry_company,entry_firstname,entry_lastname,entry_street_address,entry_suburb,entry_postcode,entry_city,entry_state,entry_country_id,entry_zone_id) values('$adress_id','$genre','$sct','$nom','$prenom','$adr','$comp','$Cpost','$ville','$region','$pays','$zone')");
/*fin insertion sql pour os commerce*/

/* debut insertion sql pour xoops */
$mysqli->query("INSERT INTO xoops_users (uname, email, user_avatar, user_regdate, user_from, user_sig, user_viewemail, pass, posts, attachsig, rank, level, timezone_offset, last_login, umode, uorder, notify_method, notify_mode, bio, user_mailok) values ('$uname', '$mail2', '$avatar', '$user_regdate', '$user_from', '$user_sig', '$user_viewemail', '$password2', '$post', '$attachsig', '$rank', '$level', '$timezone_offset', '$lastlog', '$umode', '$uorder', '$notify_method', '$notify_mode', '$bio', '$user_mailok')");
$mysqli->query("INSERT INTO xoops_groups_users_link (groupid,uid) values ('$groupid','$linky')");

/* fin insertion sql pour xoops */
echo "Merci pour votre inscription ".$prenom." ".$nom."<br><br> Votre pseudo est : ".$uname." et votre mot de passe est : ".$passwordtmp." Votre email est : ".$mail." :)";
echo "<BR><br><br><h3>IMPORTANT</h3><br>Pour vous connecter au site Internet, munissez vous de votre pseudo et de votre mot de passe.<br>Pour accéder à la boutique saisissez votre email et votre mot de passe.";
echo "<br><br>Cordialement l'équipe P2P INFORMATIQUE";
}
else {?>
<form name="register" method="post" onSubmit="return Controle();" >
<table border="1">
<td>Vous êtes </td><td>un homme : <input type="radio" name="genre" checked value="m"> &nbsp;&nbsp;une femme : <input type="radio" name="genre" value="f"></td></tr>
<tr>
<td>Votre pseudo : </td><td><input type="text" name="pseudo" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre prenom : </td><td><input type="text" name="prenom" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre nom : </td><td><input type="text" name="nom" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre E-mail : </td><td><input type="text" name="mail" value="" /><span class="etoile">*</span></td></tr>
<tr>
<td>Votre telephone : </td><td><input type="text" name="tel" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre adresse : </td><td><input type="text" name="adr" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Complement adresse : </td><td><input type="text" name="comp" value=""></td></tr>
<tr>
<td>Votre societé : </td><td><input type="text" name="sct" value="" /></td></tr>
<tr>
<td>Votre code postale : </td><td><input type="text" name="Cpost" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre ville : </td><td><input type="text" name="ville" value=""><span class="etoile">*</span></td></tr>
<tr>
<td>Votre Région : </td><td><input type="text" name="region" value="" /><span class="etoile">*</span></td></tr>
<tr>
<td>Votre pays : </td><td><select name="pays">
<option value=" "> </option>
<option value="240">France</option>
<option value="241">Etranger</option>
</select><span class="etoile">*</span></td></tr>
<tr>
<td>Votre mot de passe : </td><td><input type="password" name="pass" value="" /><span class="etoile">*</span></td></tr>
<tr>
<td>Confirmez mot de passe : </td><td><input type="password" name="vpass" value="" /><span class="etoile">*</span></td></tr>
<tr>
<td><input type="submit" name="submitok" value="ENVOI"></td></tr>
</table>
</form>
<?php }
include 'footer.php';
?>
</body>
</html>

Bon ok c'est long mais ça vaut le coup :)
Fais 100% Maison
N'ésitez pas à me laisser des suggestions pour l'ameliorer

Posté le : 02/08/2006 17:03
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée utilisateur pour le SITE et le module OSCOMMERCE
Guest_
PS : c'est des requetes Mysqli pensez à les changer si vous vous servez du code

Posté le : 03/08/2006 17:15
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée utilisateur pour le SITE et le module OSCOMMERCE
Guest_
B'soir,

Je souhaite avoir des précisions sur la solution proposée par 7wave pour contourner la double identification avec XosCommerce. Si quelqu'un l'a expérimentée (ou si 7wave est dispo), j'ai quelques questions... Pour les étourdis je précise que je ne connais rien en programmation (1000 excuses donc pour les questions à pas chères).


1 ► ce que j'ai pigé : le problème posé par le Module XosCommerce (et qui semble résolu par le hack de 7wave)

Le Module XosCommerce dispose, tout comme Xoops, d’un formulaire d’inscription. Pour XosCommerce la table où est enregistrée le compte de l’utilisateur est ..._shop_custommers tandis que pour Xoops, la table est ..._users (les pointillés remplacent le préfixe de la table, donnée qui varie selon la saisie effectuée lors de l’installation de xoops).

On obtient 2 comptes utilisateurs pour la même personne ce qui est vraiment pas pratique (et à la limite rend l’utilisation combinée de Xoops et d’OsCommerce peu opportune) :

• en admettant que l’accès au module XosCommerce soit accordé à tous les Groupes, y compris les Utilisateurs anonymes (ce qui est logique, lorsque l’on met en place une boutique ce n’est pas pour la dissimuler derrière un formulaire de connection !), pour passer commande l’utilisateur devra s’identifier via le formulaire de connection de XosCommerce. Jusque là tout va bien, c’est le fonctionnement classique d’une boutique...
• en admettant à présent que le site dispose de modules Xoops nécessitant une connexion pour être affichée (forum par exemple, même si en l’occurrence permettre à ses clients d’échanger des opinions sur les articles achetés n’est peut être pas une bonne idée...) : l’utilisateur sera contraint de s’identifier une seconde fois, cette fois-ci via le formulaire de connexion de Xoops


2 ► ce que je crois comprendre de la solution proposée par 7wave:

a / la modification du code a pour objectif la création d’un compte unique, que l’utilisateur va employer pour tous les modules de Xoops qui le nécessitent, y compris pour accéder à son compte client dans XosCommerce

b / ce compte unique va être créé depuis le formulaire standard d’inscription de Xoops ( à savoir le lien “Inscrivez-vous maintenant” qui pointe vers le formulaire “Enregistrement Membre”), soit via la page register.php

c / le formulaire d’inscription d’un membre est contenu dans la page register.php. Il convient de le modifier pour que lorsque le nouvel arrivant valide son formulaire d’inscription, les tables ..._user (Xoops) et ..._shop_custommers (XosCommerce) soient mises à jour en même temps et contiennent rigoureusement les mêmes informations

d / une variable de session est commune à tous les Modules et lorsque l’utilisateur s’identifie, tous les Modules nécessitant une identification deviennent accessibles en même temps : y compris pour l’utilisteur d’XosCommerce, l’accès à son Compte personnel


3 ► ce que je ne comprends pas :

a / Que se passe-t-il si l’utilisateur s’enregistre, non pas via le formulaire d’inscription de Xoops, mais via le formlaire d’inscription du Module XosCommerce ? Est-ce que la table ..._user est mise à jour en même temps que la table ..._shop_custommers ?

b / Que se passe-t-il s’il s’identifie via le formulaire login / mdp disponible dans le Module XosCommerce ? Est-ce que tous les Modules de Xoops qui nécessitent une identification deviennent du même coup disponibles ?


4 ► ce que je ne comprends pas du tout

a / Les posts du 30 /06 et du 02/08 se complètent-ils ou le second remplace-t-il le premier ?

b / concernant le post du 30 / O6 : il est quetion d’ajouter une portion de code à la page register.php. Faut-il simplement faire un copier / coller en fin de script (comprenant les balises <? ... ?> et en modifiant les “azertyu” et “xoops”) ?

c / concernant le post du 30 / O6 : le format de date “bloque tout”. Est-ce qu’il est nécessaire de modifier une table via PhpMyAdmin, si oui laquelle ?

d / concernant le post du 30 / O6 : “le code n’est pas finalisé pour tous les enregistrements”... quelqu’un a une idée de la suite du script ? Et que signifie ajouter un nom au bouton Submit (à quel n° de ligne se situe-t-il) ?

e / concernant le post du 02 /08 : où doit-on placer ce script ?

f / concernant le post du 03 / 08 : quelle est la différence et surtout que doit-on modifier si l’on fonctionne en MySql ?


Question annexe : j'utilise Xoops 2.0.14, faut-il retourner à une version antérieure pour mettre le Module XosCommerce en production ?


Merci d'avance !
PS : si un admin passe devant ce post, peut-il retirer la mention "résolu" ?

Y a personne qui veut faire du commerce avec Xoops ? 7wave où es-tu ?!

Posté le : 23/08/2006 01:29

Edité par Burning sur 23/08/2006 10:32:24
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée utilisateur pour le SITE et le module OSCOMMERCE
Guest_
hOp ! hOp ! hOp !

C'est au cas où vous n'ayez pas encore lu mes questions ...j'y crois pas trop, 316 consultations et pô 1 réponse !

Merci d'avance !

Posté le : 23/08/2006 18:09
Partager Twitter Partagez cette article sur GG+
Re: Même base de donnée utilisateur pour le SITE et le module OSCOMMERCE
Guest_
Salut Burning je remet le post en résolu car comme le nom du sujet l'indique le code que je propose permet d'avoir un formulaire d'inscription créé deux comptes users en une inscription, mais celà n'evite pas une double identification ce qui n'est pas tres genant comme je te l'ai dis dans le mail que je t'ai envoyé

Ensuite si les users s'inscrive via le formulaire du module oscommerce il y a pas de probleme car il suffit de copier le dans la page create_account.php de ce module ensuite ce que j'ai fais ce n'est pas vraiment un hack j'ai tout simplement réecrit un formulaire d'inscription qui rempli les tables xoops_shop_customers , xoops_shop_address_book pour le module oscommerce et xoops_users , xoops_groups_users_link pour xoops ensuite les differentes variables que j'ai mis en dur me permette à enregistré correctement mes données dans la bdd comment par exemple :

$dob = "0000-00-00";
$zone = "0";
$fax = "0000000000";

$dob me permet d'inseré une date nul egallement pour zone et fax qui sont propre uniquement oscommerce et l'utilisateur poura les modifiés ulterieurment s'il le souhaite.

Ensuite

$xoopsOption['pagetype'] = 'user';

include 'mainfile.php';
include 'header.php';

et include 'footer.php'; tout à la fin me permet d'inserer mon code dans une page type de xoops pour reprendre le theme la mise en page les feuilles de style ect ...

le javascript me permet de faire le controle de formulaire

voilà

tu peux aller voir ce que ça dis sur le site de la boite ou je suis en stage http://www.p2p-informatique.fr et tu vera que c'est pleinement fonctionnel

Ensuite le dernier code que j'ai poste annule et remplace les premiers code que j'ai poster

tu copie le tout dans la page register.php(xoops) et create_account.php (module oscommerce) Je te conseil biensur de sauvegarder c'est deux pages avant de le faire

Ensuite pour passer du mysqli au mysql c'est pas tres compliqué, il faut juste changer tout ce qui est requete sql

je reposte de suite la soluce complete avec le requette mysql là j'ai du taff --->> win 2003 server capricieux au niveau des strategies de groupe

ps : j'oublié le fait de mettre un nom sur le bouton submit me permet de checker si le formulaire à ete ensuite

<input type="submit" name="submitok" value="ENVOI">

et dans le php
if(isset($_POST['submitok'])) (condition)
{
(action)
}

Posté le : 24/08/2006 10:40
Partager Twitter Partagez cette article sur GG+

 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

112 Personne(s) en ligne (108 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 112 | Plus ...