mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 26.04.2024 11:14 Benutzername: Passwort: Auto-Login

Thema: Memberlogin für E-Shop vom 23.09.2004


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Memberlogin für E-Shop
Seite: 1, 2  Weiter
Autor Nachricht
Woody
Threadersteller

Dabei seit: 12.03.2004
Ort: NRW
Alter: 39
Geschlecht: Männlich
Verfasst Do 23.09.2004 00:33
Titel

Memberlogin für E-Shop

Antworten mit Zitat Zum Seitenanfang

Hi @ll,

ich wollte für einen E-Shop einen Memberlogin programieren, soll auf My-SQL und PHP basieren.

Das ganze soll folgendermasen aufgebaut sein:

Über ein Formular kann sich der Kunde registrieren, er muss hier Username, Passwort, Mail, Vorname, Nachname, Strasse, PLZ und Ort angeben, nachdem er sich registriert hat soll er eine Mail bekommen mit einen Link zur Aktivierung des Acounts.

Nun soll er sich über ein weiteres Formular was auf der Hauptseite zu finden ist einloggen können, das Formular besteht dann aus 2 Form Boxen, eines für den Usernamen und eins für das Passwort, darunter liegt dann der Button zur bestätigung.

Der Benutzer soll eigentlich nur nicht immer gezwungen sein bei einer Bestellung seine volle Lieferadresse anzugeben, daher ein Memberlogin, nur wie code ich so etwas denn ?

Ich hab zwar ein paar Tutorials gefunden, jedoch sind die alle meistens ohne Acount Aktivierung usw, wäre über Links zu Tuts erfreut, finde nämlich rein gar nix oder ich such an den falschen Stellen.

Gegen Open Source hätte ich natürlich erstmal auch nichts einzuwenden, sofern jemand welche kennt und die Links dazu hat.

Schonmal thx.


Zuletzt bearbeitet von Woody am Do 23.09.2004 00:46, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Waschbequen
Account gelöscht


Ort: -

Verfasst Do 23.09.2004 00:49
Titel

Antworten mit Zitat Zum Seitenanfang

Das Konzept steht doch schon, und der einzige Haken ist tatsächlich die Aktivierung - der Rest ist aber nichts weiter, als Select und Insert...

Zur Aktivierung: Füge in die Kundentabelle ein Bitfeld (true/false, 1/0, keine Ahnung wie das in MySQL heißt) hinzu, und ignoriere das beim anlegen des Kundendatensatzes, sprich lass es auf 0. Beim Login überprüfst du jetzt immer zusätzlich neben Kundennummer/Passwort noch auf dieses Feld, und nur wenn es auf 1 steht, kann der User sich einloggen.

Nach der Registrierung generierst du einen eindeutigen Key (Guid, Timestamp + ID o.ä.) - diesen speicherst du in ein weiteres Feld der Kundentabelle und schickst es in ner URL an den Kunden.

Ruft der diese Website auf, guckst du in der DB nach dem Key und setzt das erste Feld auf 1.

Fertig.
 
Anzeige
Anzeige
Woody
Threadersteller

Dabei seit: 12.03.2004
Ort: NRW
Alter: 39
Geschlecht: Männlich
Verfasst Do 23.09.2004 21:27
Titel

Antworten mit Zitat Zum Seitenanfang

THX für deine Antwort, also hab jetzt das Anmeldeformular fertig und das fluppt auch bis auf das Manko das es noch ohne Aktivierung läuft und auch momentan noch ohne MD5 Verschlüssellung Menno!
Das kann man aber später noch optimieren bzw erweitern.

Nun hänge ich an den scheiss Login Formular fest, es muss ja eigentlich nur gecheckt werden ob der Username in der Datenbank mit dem Passwort übereinstimmt, aber wie code ich das ? Hab dafür auch ein paar Tutorials mit Sessions gefunden, aber na ja das eine basiert auf MD5 somit hab ich momentan probs beim Einloggen damit und das andere funzt irgendwie gar net, hat dafür vielleicht jemand Tuts die ich noch net kenne ? Also nur für das Loginformular ?

Nochmal danke *zwinker*

Greetz
Woody
  View user's profile Private Nachricht senden
Woody
Threadersteller

Dabei seit: 12.03.2004
Ort: NRW
Alter: 39
Geschlecht: Männlich
Verfasst Fr 24.09.2004 13:13
Titel

Antworten mit Zitat Zum Seitenanfang

Hab das Loginformular jetzt glaube ich auch fertigbekommen, problem ist jetzt nur das das Login-Script die eingegebenen Passwörter in MD5 kodierung ueberprueft, das möchte ich auch gerne so lassen.

Das Script für die Registrierung jedoch erstellt die Passwörter nicht in MD5, kann der Fehler vielleicht daran liegen das ich mich nicht einloggen kann ? Also wenn das Passwort normal in der db vorliegt ohne MD5-Kodierung und das Script jedoch mit MD5 ueberprueft ?

Falls das so sein sollte hätte da vielleicht jemand kurz die Güte mal folgendes Script durchzuschauen ob das so in Ordnung ist ?

Register.php

Code:
<?
// Einbinden der Datenbankverbindung.
include("dbconnect.php");

// Einbinden der Variablen.
include("Variablen.php");

// Eintragen der Daten in der Datenbank.
$eintrag = "INSERT INTO Members (UserName, UserPass, UserMail,
  Name, Vorname, Strasse, PLZ, Ort) VALUES ('$UserName', '$UserPass',
  '$UserMail', '$Name','$Vorname','$Strasse','$PLZ','$Ort')";

// Aktion Daten eintragen durchführen.
$eintragen = mysql_query($eintrag);
?>


Variablen.php

Code:
<?
  $UserName = $HTTP_POST_VARS["UserName"];
  $UserPass = $HTTP_POST_VARS["UserPass"];
  $UserMail = $HTTP_POST_VARS["UserMail"];
  $Name = $HTTP_POST_VARS["Name"];
  $Vorname = $HTTP_POST_VARS["Vorname"];
  $Strasse = $HTTP_POST_VARS["Strasse"];
  $PLZ = $HTTP_POST_VARS["PLZ"];
  $Ort = $HTTP_POST_VARS["Ort"];
?>


Die Connection word durch eine weitere php Datei aufgebaut, die ist ganz am Anfang includet, also wie man da erkennt wird das Passwort normal in die db eingetragen ohne das vorher zu Kodieren, wäre schön wenn da jemand kurz erklären könnte wie ich das so programieren kann das es aber in md5 kodiert wird.

Hab noch net so den Plan in php und brauch aber solch ein Formular, open source hab ich net gefunden und möchte ich auch nicht wirklich nutzen da es für einen kommerziellen Shop gedacht ist, bedank mich schonmal.

EDIT: Sorry hatte den Code Tag übersehen gehabt, darum hatte ich List genommen *zwinker* Wäre super wenn du da ne Lösung hast, schonmal thx.


Zuletzt bearbeitet von Woody am Fr 24.09.2004 13:21, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
shakadi
Griller Killer

Dabei seit: 21.12.2003
Ort: SHA
Alter: 43
Geschlecht: Männlich
Verfasst Fr 24.09.2004 13:16
Titel

Antworten mit Zitat Zum Seitenanfang

gleich kommts.... "bitte [code] tag benutzen
  View user's profile Private Nachricht senden
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht: Männlich
Verfasst Fr 24.09.2004 13:24
Titel

Antworten mit Zitat Zum Seitenanfang

http://www.php3.de/md5 ?

$HTTP_IRGENDWAS_VARS ist übrigens veraltet, benutze $_GET, $_POST, $_SESSION etc...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
rob

Dabei seit: 11.12.2003
Ort: ~/
Alter: 46
Geschlecht: Männlich
Verfasst Fr 24.09.2004 13:30
Titel

Antworten mit Zitat Zum Seitenanfang

also erstmal: dein script ist sehr gefährlich für dich. damit kann man fast problemlos vollzugriff auf deine datenbank erlangen. alles was man tun muß ist, etwas code per post an dein formular zu schicken.

mach mal aus:
$UserName = $HTTP_POST_VARS["UserName"];
das hier:
$UserName = mysql_escape_string( $HTTP_POST_VARS["UserName"] );

So verhinderst du die Möglichkeit eines Angriffs mittels SQL-Injection.

Wieso arbeitest du denn eigentlich mit $HTTP_POST_VARS statt mit $_POST ? Darfst dich nicht wundern, wenn dein Provider auf PHP 5 umsteigt und deine Scripte nicht mehr funktionieren...

Zitat:
Das Script für die Registrierung jedoch erstellt die Passwörter nicht in MD5, kann der Fehler vielleicht daran liegen das ich mich nicht einloggen kann ?

Klar. Dann vergleichst Du Passwörter im Klartext mit md5-Hashes und logischerweise sind die nicht gleich. Dann bräuchte man die Hashes ja nicht errechnen...
md5 ist ein asymmetrisches Verfahren, d.h. kurzgesagt, man kann die Passwörter nicht wieder entschlüsseln. Darum müssen die verschlüsselten Hashes verglichen werden.

Zitat:
wäre schön wenn da jemand kurz erklären könnte wie ich das so programieren kann das es aber in md5 kodiert wird.

einfach die Funktion md5() nutzen:
$UserPass = md5( mysql_escape_string( $_POST["UserPass"] ) );
  View user's profile Private Nachricht senden
Woody
Threadersteller

Dabei seit: 12.03.2004
Ort: NRW
Alter: 39
Geschlecht: Männlich
Verfasst Fr 24.09.2004 13:46
Titel

Antworten mit Zitat Zum Seitenanfang

rob hat geschrieben:
also erstmal: dein script ist sehr gefährlich für dich. damit kann man fast problemlos vollzugriff auf deine datenbank erlangen. alles was man tun muß ist, etwas code per post an dein formular zu schicken.

mach mal aus:
$UserName = $HTTP_POST_VARS["UserName"];
das hier:
$UserName = mysql_escape_string( $HTTP_POST_VARS["UserName"] );

So verhinderst du die Möglichkeit eines Angriffs mittels SQL-Injection.

Wieso arbeitest du denn eigentlich mit $HTTP_POST_VARS statt mit $_POST ? Darfst dich nicht wundern, wenn dein Provider auf PHP 5 umsteigt und deine Scripte nicht mehr funktionieren...

Zitat:
Das Script für die Registrierung jedoch erstellt die Passwörter nicht in MD5, kann der Fehler vielleicht daran liegen das ich mich nicht einloggen kann ?

Klar. Dann vergleichst Du Passwörter im Klartext mit md5-Hashes und logischerweise sind die nicht gleich. Dann bräuchte man die Hashes ja nicht errechnen...
md5 ist ein asymmetrisches Verfahren, d.h. kurzgesagt, man kann die Passwörter nicht wieder entschlüsseln. Darum müssen die verschlüsselten Hashes verglichen werden.

Zitat:
wäre schön wenn da jemand kurz erklären könnte wie ich das so programieren kann das es aber in md5 kodiert wird.

einfach die Funktion md5() nutzen:
$UserPass = md5( mysql_escape_string( $_POST["UserPass"] ) );


Danke für deine Antwort und für deine Tipps, das Problem mit dem Registrieren hast du gelöst und der verschlüsselt die Daten jetzt in md5, der code sieht jetzt folgendermasen aus:

Variablen.php

Code:
<?
  $UserName = mysql_escape_string($_POST["UserName"]);
  $UserPass = md5(mysql_escape_string($_POST["UserPass"]));
  $UserMail = mysql_escape_string($_POST["UserMail"]);
  $Name = mysql_escape_string($_POST["Name"]);
  $Vorname = mysql_escape_string($_POST["Vorname"]);
  $Strasse = mysql_escape_string($_POST["Strasse"]);
  $PLZ = mysql_escape_string($_POST["PLZ"]);
  $Ort = mysql_escape_string($_POST["Ort"]);
?>


Trotzdessen sagt mir der Login aber das die Daten die ich eingegeben habe falsch wären, aber die sind einwandfrei korrekt.

login.php

Code:
<?php
include("config.inc.php");
session_start();

if($login)
{
$UserName = $_POST['name'];
$UserPass = $_POST['pass'];

$UserPass = md5($UserPass);

$check = "SELECT * FROM `".$my_table."` WHERE name LIKE '".$UserName."' AND pass = '".$UserPass."'";
$check_result = mysql_query($check);
$result = mysql_num_rows($check_result);

if($result > 0)
{
$logedin = TRUE;
session_register("logedin");
echo "Login erfolgreich!<br>Bitte klicken Sie <a href=\"index.php\">hier</a> um zur Startseite zu gelangen.";
}
else
{
echo "Die Daten waren falsch.";
}
}
?>


Ist an den Code vielleicht irgendwas falsch ? Wie gesagt haut der mich raus und wirft mir das echo "Die Daten waren falsch." aus obwohl die Daten aber korrekt sind, jetzt auch mit md5 kodierung.

Nochmals danke für eure Hilfe *zwinker*


Zuletzt bearbeitet von Woody am Fr 24.09.2004 14:00, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
 
Ähnliche Themen SHOP: xtCommerce oder 1&1-Shop ?HILFE!
Photo Shop vs. Paint Shop Pro
Web- Shop
fehler bei shop tut.
Shop-System CMS
Online Shop
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.