[Diskussion] Würfel in RPG's

Nu¥eN

Scriptor
Was mir beim ersten Lesen aufgefallen ist:
PHP:
echo "Damit du mir keinen Unfug mit dem Würfel baust, sind dein $username und deine IP ( $address ) in die Datenbank eingetragen worden."
Also 2 Details fallen mir da auf... zum einen würde, falls ich dieses Script je benutzen sollte, bei mir folgendes erscheinen:
Code:
Damit du mir keinen Unfug mit dem Würfel baust, sind dein Nu¥eN und deine IP ( 1.2.3.4 ) in die Datenbank eingetragen worden.
Ich denke, du solltest das $username evtl in Klammern setzen und vor diese Klammern noch Username schreiben. Du weißt ja, Variablen in einem Echo mit " werden durch ihren Wert ersetzt.
Und, müsste nach dem schließenden " nicht ein ; kommen?

Dann fällt mir in deiner Schleife auf, dass ich
PHP:
for ($i = 0; $i < $count; $i++)
geschrieben hätte, aber das ist reine geschmackssache ;-)

Zu deinem Problem fällt mir auf: in deinem Insert finde ich zwar die Anzahl und die Seitenzahlen der Würfel, sowie Username und IP, aber nirgendwo wird auf das Array $save[] zugegriffen. An Stelle des bisherigen Insert-Querys empfehle ich folgendes:
PHP:
foreach ($save as $number => $value)
{
  mysql_query("INSERT INTO Wurfe (Username,Address,Count,Sides,Dice,Value) 
             VALUES ($username,$address,$count,$sides,$number,$value)");
}
Auf grund der bekannten Fehleranfälligkeit meinerseits empfehle ich, nochmal drüber zu lesen. Aber prinzipiell sollte das so stimmen, zumal ich zu 90% copy&paste betrieben hab.
Siehe hierzu übrigens auch: PHP.net zum thema foreach-Schleife

Ich hoffe ich konnte helfen ^^

Edit:
Etwas, womit ich mich selbst auch oft genug identifizieren kann:

Kleiner Scherz am Rande, ich hoffe du nimmst ihn mir nicht übel ;-)
 
Zuletzt bearbeitet:

Janoko

Phöser Engel
VIP
den $save habe ich in der tat vergessen.

wobei ich jetzt dazu übergegangen bin, jedem wurf eine eindeutige id zu zuweisen und die jeweiligen würfe in einer eigenen Tabelle zu speichern.
 

Nu¥eN

Scriptor
Wenn du die Würfe in einer eigenen Tabelle speicherst, wie verbindest du sie dann noch mit den Usern? Ich mein wenn 2 User gleichzeitig das script nutzen (unwahrscheinlich, aber wenn es stärker genutzt wird definitiv möglich) ist die Zeit kein eindeutiges bindungsglied mehr...
Oder schreibst du den Usernamen oder die User-ID neben die ID des wurfes?
 

Janoko

Phöser Engel
VIP
du kannst tabellen in mysql verknüpfen, indem du eine superid setzt, heißt:

Tabelle: wurf
Code:
id |sides | username | address
1  | 6    | ich      | 127.0.0.1
2  | ...
Tabelle: ergebnisse
Code:
wurf_id | save
1       | 5
1       | 4
1       | 4
2       | 3
2       | ...
 

Nu¥eN

Scriptor
Ja, das ist ungefähr das, was ich mir vorgestellt hab. Das, was ich in meiner Frage als User-ID bezeichnet hab entspricht dem, was du als Super-ID bezeichnest.
Allerdings sollte jeder Wurf noch eine eigene, absolut einmalige ID bekommen. In deinem Beispiel hast du schon gezeigt, warum: du hast drei Würfe gemacht, zwei davon ergaben 4. Wie unterscheidet man diese beiden, die ja beide Wurf-ID 1 und Save 4 haben?

Und nachdem du das hast, was machst du als nächstes? Die Ausgabe oder den Login?
Die Ausgabe dürfte relativ leicht sein, man muss ja nur ausgeben lassen, was in der DB steht. Der Login wird prinzipiell auch leicht, aber leicht = unsicher... In dem Punkt kann ich dir auch nicht helfen, von Verschlüsselungen hab ich bisher keine Ahnung...
 

Janoko

Phöser Engel
VIP
natürlich kann ich auch noch eine save_id vergeben ;) ist ja nicht so, das das nicht erweiterbar wäre =)
 

Ironhide

Na hast du Angst Kleiner?
VIP
Inzwischen versteh ich nur noch bahnhof xD
aber... also wenn cih das richtig verstehe... ihr seit grad dabei am diskutieren, wie ihr das mitd er liste macht?
 

Janoko

Phöser Engel
VIP
joar.


was login betrifft, da kann man sich leicht einen guten und funktionierenden kopieren, wozu hab ich die orginalen php dateien eines vb? ^^
 

Nu¥eN

Scriptor
naja, das erweiterbare... meiner erfahrung nach kann es recht nervig sein, eine Tabelle um eine spalte zu erweitern. hab mir irgendwann vorgenommen, immer eine eigene tabelle mit 4 spalten zu basteln... die hatte dann schlicht die funktion "ID X aus Tabelle Y gehört zu ID A aus Tabelle B", stark vereinfacht formuliert. Dann fiel mir auf, dass diese Verknüpfungen auch ID's brauchten, damit ich sie gezielt anwählen und editieren kann. Seit dem hat jede meiner Datenbanken eine mindestens 5 spalten breite Verknüpfungstabelle sowie in jeder anderen Tabelle 1 - 2 ID-spalten... Hab dann, nachdem die Datenbank langsam zu etwas wurde, das meinem Projekt gewachsen wäre, erst das Interesse und dann die backups verloren.

Lange rede, kurzer unsinn: einerseits sollte man sich möglichst früh auf möglichst viel vorbereiten, um nicht kurz vor der fertigstellung zu merken, dass eine Spalte, die bisher nicht da ist, absolut unerlässlich wäre. andererseits kann man sich dabei auch schnell verzetteln und völlig den überblick sowie u.U. das interesse verlieren.

Deswegen hab ich übrigens beschlossen, keine eigenen Projekte mehr auf die Beine zu stellen sondern höchstens noch beratende funktionen zu übernehmen, damit andere nicht in die selben Stolperfallen treten wie ich damals ^^


Code von anderen zu kopieren, vor allem wenn er für was anderes geschrieben wurde, kann auch leicht nach hinten los gehen. In jedem fall muss man den gesamten Code durchlesen und wesentlich mehr anpassen, als man zunächst glauben mag. Und allein das einlesen in anderer Leute code kann schnell sehr kompliziert werden. Ich erinnere mich da nur an meinen Versuch, ein LoGD an zu passen. Hab 2 Tage gebraucht, um die Datei auf zu spüren, in der der <head> definiert wurde :-D
Will sagen ich wüsste keinen Grund, nicht direkt selbst was zu schreiben. Dauert auch nicht viel länger als das kopieren und einarbeiten, ist aber zu 100% vertraut und definitiv mit dem eigenen Projekt kompatibel.
 

Janoko

Phöser Engel
VIP
jo schon klar, ich werde ihn mir selbst schreiben, ich hatte das ganze auch mehr als referenz gedacht, da der login in vB ja auch wirklich gut funktioniert.


Wenn wir nun also einen Login programmieren, fliegt aus der ganzen Form sache der suer anme raus, da ich den ja durch den login herausfinden kann bzw die Session id rückkoppeln kann und damit den usernamen in der DB stehen habe.

was die DB angeht, so ist diese nichtmal angelegt. Der ganze Code der hier steht ist bis jetzt rein theroretisch bzw ungetestet.
 

Ironhide

Na hast du Angst Kleiner?
VIP
Heißt das, mit dem Login würdest du dir es sparen, dei ganzen Usernamen nochmal extra ab zu fragen, bzw das man ihn eingeben muss usw?
 

Janoko

Phöser Engel
VIP
jep, so kann ich auch jeden Wurf einer eindeutigen User ID zu weisen.heißt: User ID + Wurf ID + Ergebniss ID ergeben am ende den Datensatz den wir haben möchten.
 

Fuma-Snake

Exarch
Charakterverbesserung durch würfeln? War ich noch nie dafür. Ein Charakter sollte sich so entwickeln wie es der Spieler und die Ereignisse wollen, nicht wie es irgendein Würfel sagt.
Interessant fände ich es viel eher auf Charakterwert zu würfeln um Erfolg oder Misserfolg von Charateraktionen zu ermitteln, aber darum geht es hier ja nicht...
Argh! Missverständniss vorraus!
Nein, Captain, du hast das leider falsch verstanden. Es geht nämlich um genau das, über Erfolg doer Misserfolg zu bestimmen. Nicht darüber wie sich der Char. verbessert.

@ Janoko und NuYen:

O-M-F-G!
Leute, ihr seid so super. Ich habe ja mit so mancher enttäuschung gerechnet wenn ich hier wieder in den threas gucke, aber ihr seid so genial! Es begeistert mich gerade richtig wie viel Arbeit ihr da rein steckt *super breites grinsen*
Meine Proggramier Fähigkeiten halten sich, wie ich schonmal sgate, ja absolut in Grenzen, aber wenn ich euch sonst IRGENDWIE helfen kann: Sagt es mir bitte :]
 

Janoko

Phöser Engel
VIP
PHP:
// wurf.php 
<?php
include("connection.php"); //DB-Connection :)

//Jetzt holen wir uns unsere Daten aus dem Formular
$count = $_POST['count'];
$sides = $_POST['sides'];
/* $username = $_POST['username']; ich denke den werden wir aus der Session bzw dem login bekommen */
// Noch was, damit ihr keinen Unfug anstellen könnt
$ip = $_SERVER['REMOTE_ADDR'];

//Ich werd hier noch ne Sicherheitsabfrage reinbauen, grad aber keinen Nerv für.
 

//Daten haben wir jetzt, nun fehlt unsere eigentliche Funktion.

$save = array()

for ($i = 1; $i <= $count; $i++)
 {
   $wurf = rand(0, $sides);
   echo ("$i .te Würfel. Du hast eine $wurf geworfen.")
  $save[] = $wurf
 } 
  
mysql_query("INSERT INTO Wurfe (Save) 
             VALUES ($save)");

echo " $username, damit du mir keinen Unfug mit dem Würfel baust, wurde deine IP ( $address ) in die Datenbank eingetragen.";

/* damit ahben wir den Variablen unfug etwas verändert... =)

?>
Jetzt versuch ich mich mal an nehm Login/Logout...


PHP:
// logout.php
<?php
include 'connection.php';
logout();
?>
gaaaanz einfach, aber sollte so klappen, oder?

PHP:
//login.php

<?php 
include 'connection.php';

$err = array();

foreach($_GET as $key => $value) {
	$get[$key] = filter($value);
}

if ($_POST['doLogin']=='Login')
{

foreach($_POST as $key => $value) {
	$data[$key] = filter($value);
}


$user_email = $data['usr_email'];
$pass = $data['pwd'];


if (strpos($user_email,'@') === false) {
    $user_cond = "user_name='$user_email'";
} else {
      $user_cond = "user_email='$user_email'";
    
}

	
$result = mysql_query("SELECT `id`,`pwd`,`full_name`,`approved`,`user_level` FROM users WHERE 
           $user_cond
			AND `banned` = '0'
			") or die (mysql_error()); 
$num = mysql_num_rows($result);

  // Sucht den Account udn gibt n fehler aus, wenn er nicht aktiviert ist.
    if ( $num > 0 ) { 
	
	list($id,$pwd,$full_name,$approved,$user_level) = mysql_fetch_row($result);
	
	if(!$approved) {
	//$msg = urlencode("Account nicht aktiviert. &Uuml;berpr&uuml;fe deine Emails f&uuml; den Aktivierungscode.");
	$err[] = "Account nicht aktiviert. &Uuml;berpr&uuml;fe deine Emails f&uuml; den Aktivierungscode.";
	
	//header("Location: login.php?msg=$msg");
	 //exit();
	 }
	 
		//check  salt
	if ($pwd === PwdHash($pass,substr($pwd,0,9))) { 
	if(empty($err)){			

     // Der eigentliche Login ist genau HIER 
       session_start();
	   session_regenerate_id (true); 

	   // Variablen für die Session :) 
		$_SESSION['user_id']= $id;  
		$_SESSION['user_name'] = $full_name;
		$_SESSION['user_level'] = $user_level;
		$_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
		
		//Key und Zeit des Cookies erneuern
		$stamp = time();
		$ckey = GenKey();
		mysql_query("update users set `ctime`='$stamp', `ckey` = '$ckey' where id='$id'") or die(mysql_error());
		
		//Cookie setzen
		
	   if(isset($_POST['remember'])){
				  setcookie("user_id", $_SESSION['user_id'], time()+60*60*24*COOKIE_TIME_OUT, "/");
				  setcookie("user_key", sha1($ckey), time()+60*60*24*COOKIE_TIME_OUT, "/");
				  setcookie("user_name",$_SESSION['user_name'], time()+60*60*24*COOKIE_TIME_OUT, "/");
				   }
		  header("Location: myaccount.php");
		 }
		}
		else
		{
		//$msg = urlencode("Fehlerhafter Login, bitte &uuml;berpr&uuml;fe deine Email-Adresse / Passwort.");
		$err[] = "Fehlerhafter Login, bitte &uuml;berpr&uuml;fe deine Email-Adresse / Passwort.";
		//header("Location: login.php?msg=$msg");
		}
	} else {
		$err[] = "Fehlerhafter Login, bitte &uuml;berpr&uuml;fe deine Eingaben";
	  }		
}
					 
					 

?>
<html>
<head>
<title>Member Login</title>
<meta http-equiv="Content-Type" content="text/html">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery.validate.js"></script>
  <script>
  $(document).ready(function(){
    $("#logForm").validate();
  });
  </script>
<link href="styles.css" rel="stylesheet" type="text/css">

</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
  <tr> 
    <td width="160" valign="top"><p>&nbsp;</p>
      <p>&nbsp; </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
    <td width="732" valign="top"><p>&nbsp;</p>
      <h3 class="titlehdr">User Login
      </h3>  
	  <p>
	  <?php //Errors ausgeben 


	  if(!empty($err))  {
	   echo "<div class=\"msg\">";
	  foreach ($err as $e) {
	    echo "$e <br>";
	    }
	  echo "</div>";	
	   }
  


	  
	  ?>
      </p>
      <form action="login.php" method="post" name="logForm" id="logForm" >
        <table width="65%" border="0" cellpadding="4" cellspacing="4" class="loginform">
          <tr> 
            <td colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="28%">Username / Email</td>
            <td width="72%"><input name="usr_email" type="text" class="required" id="txtbox" size="25"></td>
          </tr>
          <tr> 
            <td>Passwort</td>
            <td><input name="pwd" type="password" class="required password" id="txtbox" size="25"></td>
          </tr>
          <tr> 
            <td colspan="2"><div align="center">
                <input name="remember" type="checkbox" id="remember" value="1">
                Eingelogt bleiben?</div></td>
          </tr>
          <tr> 
            <td colspan="2"> <div align="center"> 
                <p> 
                  <input name="doLogin" type="submit" id="doLogin3" value="Login">
                </p>
                <p><a href="register.php">Registeren</a><font color="#FF6600"> 
                  |</font> <a href="forgot.php">Passwort vergessen?</a> <font color="#FF6600"> 
                  </font></p>
            </td>
          </tr>
        </table>
        <div align="center"></div>
        <p align="center">&nbsp; </p>
      </form>
      <p>&nbsp;</p>
	   
      </td>
    <td width="196" valign="top">&nbsp;</td>
  </tr>
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
</table>

</body>
</html>




PHP:
//register.php

<?php 
include 'connection.php';

$err = array();
					 
if($_POST['doRegister'] == 'Register') 
{ 


foreach($_POST as $key => $value) {
	$data[$key] = filter($value);
}
		

/* jetzt wirds kompliziert...

Erstmal das ganze abfragen, was Falsch sein kann ^^

 User Name*/
if (!isUserID($data['username'])) {
$err[] = "Fehler - Unzul&auml;ssiger Username.<br />
                           Der Username kann A-Z, a-z, 0-9 und _ enthalten.";
//header("Location: register.php?msg=$err");
//exit();
}

// E-mail Verifikation - ihr könnt mich mal *gg*
if(!isEmail($data['usr_email'])) {
$err[] = "Fehler - Unzul&auml;ssige E-Mail Adresse.";
//header("Location: register.php?msg=$err");
//exit();
}
// Hier mach ichs mir einfach...
if (!checkPwd($data['pwd'],$data['pwd2'])) {
$err[] = "Fehler - Passw&ouml;rter stimmen nicht &uuml;berein oder das Passwort ist zu kurz. <br />
                Bitte 5 oder mehr Zeichen eingeben";
//header("Location: register.php?msg=$err");
//exit();
}
	  
$ip = $_SERVER['REMOTE_ADDR'];

//Hash vom passwort
$sha1pass = PwdHash($data['pwd']);

// Etwas Serverseitiges, ist später noch wichtig...
$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$path   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');

// Aktivierungscode wird generiert

function charRand() 
{
    $randString = '';
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'; //ja ich mag euch *gg*
    for ($i=0;$i<17;$i++)
   {
        $randNum = mt_rand(0, strlen($chars)-1);
        $randString .= $chars[$randNum];
    }
    return $randString;
}
$activ_code = $randString;

// Soderle, jetzt der Wichtigste Kram für euch: Name und Email xD
$usr_email = $data['usr_email'];
$username = $data['username'];

/*Serverseitige Überprüfung des vorhanden seins der Email Adresse / des Usernamens
*/

$rs_duplicate = mysql_query("select count(*) as total from users where user_email='$usr_email' OR username='$username'") or die(mysql_error());
list($total) = mysql_fetch_row($rs_duplicate);

if ($total > 0)
{
$err[] = "Die angegebene E-mail Adresse / der angegebene Username ist bereits in Benutzung.<br />
               Hast du vielleicht dein <a href=\"forgot.php\">Passwort vergessen?</a>";
//header("Location: register.php?msg=$err");
//exit();
}
/*

Nun in die Datenbank damit...

*/


if(empty($err)) {

$sql_insert = "INSERT into `users`
  			(`user_email`,`pwd`, `date`,`users_ip`,`activation_code`, `username`
			)
		    VALUES
		    ('$usr_email','$sha1pass', now(),'$ip','$activ_code','$username'
			)
			";

/* Zur Erklärung: 
User Email - Sollte klar sein
PWD - password, in Codierter Form, heißt, ich weiß nicht was ihr da so egschrieben habt, Plaintext wäre hier absolut ungeeignet
Date - Datum, wir wollen ja wissen wann ihr euch registiert habt =)
Users IP - naja, eure IP will ich dann doch gerne auch hier wissen, damit mich keien Bots zuspammen
Act. Code - Sollte auch klar sein, ich muss den Speichern, damit er auch funktioniert.
Username - Ja was soll ich dazu sagen...
*/

			
mysql_query($sql_insert,$link) or die("Insertion Failed:" . mysql_error());
$user_id = mysql_insert_id($link);  
$md5_id = md5($user_id);
mysql_query("update users set md5_id='$md5_id' where id='$user_id'");
//	echo "<h3>Danke.</h3> f&uuml;r deine Registierung.<br />
//               Eine Email wurde an $usr_email versendet, sie enth&auml;lt einen Aktivierungslink f&uuml;r deinen Account.";

if($user_registration)  {
$a_link = "
*****Aktivierungslink*****\n
http://$host$path/activate.php?user=$md5_id&code=$activ_code
"; 
} else {
$a_link = 
"Dein Account befindet sich in der Aktivierungsphase durch einen Adminestrator.
";
}

$message = 
"Hallo, \n
danke f&uuml;r deine Registierung, hier sind deine Login-Daten\n

User ID: $user_name
Email: $usr_email \n 
Passwort: $data[pwd] \n

$a_link \n

(Dieser Link MUSS best&auml;tigt werden.)

Noch viel Spa&szlig;,
$host_upper
______________________________________________________
Dies ist eine Automatisierte E-Mail.
Bitte *NICHT* Antworten.
";

	mail($usr_email, "Login Details", $message,
    "From: \"Registration auf RPG-Dicer\" <noreply@$host>\r\n" .
     "X-Mailer: PHP/" . phpversion());

  header("Location: danke.php");  
  exit();
	 
	 } 
 }					 

?>
<html>
<head>
<title>Registration auf RPG-Dicer</title>
<meta http-equiv="Content-Type" content="text/html">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery.validate.js"></script>

  <script>
  $(document).ready(function(){
    $.validator.addMethod("username", function(value, element) {
        return this.optional(element) || /^[a-z0-9\_]+$/i.test(value);
    }, "Username darf nur Buchstaben, Zahlen und unterstriche enthalten.");

    $("#regForm").validate();
  });
  </script>

<link href="styles.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
  <tr> 
    <td width="160" valign="top"><p>&nbsp;</p>
      <p>&nbsp; </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
    <td width="732" valign="top"><p>
	<?php 
	 if (isset($_GET['done'])) { ?>
	  <h2>Danke</h2> Die Registration ist abgeschlossen. Du kannst dich nun<a href="login.php">hier</a> einloggen";
	 <?php exit();
	  }
	?></p>
      <h3 class="titlehdr">Registration</h3>
      <p>Du musst dich registieren um den Online-W&uuml;rfel des RPG-Dicers benutzen zu können.
        Die Registrationgeht schnell und einfach. Bitte beachte, das Felder die makiert sind (<span class="required">*</span>) 
        gebraucht werden.</p>
	 <?php	
	 if(!empty($err))  {
	   echo "<div class=\"msg\">";
	  foreach ($err as $e) {
	    echo "* $e <br>";
	    }
	  echo "</div>";	
	   }
	 ?> 
	 
	  <br>
      <form action="register.php" method="post" name="regForm" id="regForm" >
        <table width="95%" border="0" cellpadding="3" cellspacing="3" class="forms">
            <td colspan="2"><h4><strong>Login Details</strong></h4></td>
          </tr>
          <tr> 
            <td>Username<span class="required"><font color="#CC0000">*</font></span></td>
            <td><input name="username" type="text" id="username" class="required username" minlength="3" > 
              <input name="btnAvailable" type="button" id="btnAvailable" 
			  onclick='$("#checkid").html("Bitte warten..."); $.get("checkuser.php",{ cmd: "check", user: $("#username").val() } ,function(data){  $("#checkid").html(data); });'
			  value="Check Availability"> 
			    <span style="color:red; font: bold 12px verdana; " id="checkid" ></span> 
            </td>
          </tr>
          <tr> 
            <td>Deine Email<span class="required"><font color="#CC0000">*</font></span> 
            </td>
            <td><input name="usr_email" type="text" id="usr_email3" class="required email"> 
              <span class="example">username@domain.tld</span></td>
          </tr>
          <tr> 
            <td>Passwort<span class="required"><font color="#CC0000">*</font></span> 
            </td>
            <td><input name="pwd" type="password" class="required password" minlength="5" id="pwd"> 
              <span class="example">Das Passwort muss mindestens 5 zeichen lang sein</span></td>
          </tr>
          <tr> 
            <td>Passwort wiederholen<span class="required"><font color="#CC0000">*</font></span> 
            </td>
            <td><input name="pwd2"  id="pwd2" class="required password" type="password" minlength="5" equalto="#pwd"></td>
          </tr>
          <tr> 
            <td colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            </td>
          </tr>
        </table>
        <p align="center">
          <input name="doRegister" type="submit" id="doRegister" value="Registeren">
        </p>
      </form>
	   
      </td>
    <td width="196" valign="top">&nbsp;</td>
  </tr>
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
</table>

</body>
</html>

jetzt das für den vergessenen Login...

PHP:
//forgot.php

<?php 
include 'connection.php';



if ($_POST['doReset']=='Reset')
{
$err = array();
$msg = array();

foreach($_POST as $key => $value) {
	$data[$key] = filter($value);
}
if(!isEmail($data['user_email'])) {
$err[] = "Ohne Emailadresse kann ich dir kein neues Passwort geben. "; 
}

$user_email = $data['user_email'];

$rs_check = mysql_query("select id from users where user_email='$user_email'") or die (mysql_error()); 
$num = mysql_num_rows($rs_check);
 
    if ( $num <= 0 ) { 
	$err[] = "Entschuldigung, aber der angebebene Account existiert nicht.";
	//header("Location: forgot.php?msg=$msg");
	//exit();
	}


if(empty($err)) {

$new_pwd = GenPwd();
$pwd_reset = PwdHash($new_pwd);
//$sha1_new = sha1($new);	

$rs_activ = mysql_query("update users set pwd='$pwd_reset' WHERE 
						 user_email='$user_email'") or die(mysql_error());
						 
$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);						 
						 
//send email

$message = 
"Deine neuen Logindaten:\n
User Email: $user_email \n
Passwd: $new_pwd \n


$host_upper
______________________________________________________
Dies ist eine Automatisierte E-Mail.
Bitte *NICHT* Antworten.
";

	mail($user_email, "Reset Password", $message,
    "From: \"Member Registration\" <noreply@$host>\r\n" .
     "X-Mailer: PHP/" . phpversion());						 
						 
$msg[] = "Das passwort f&uuml;r deinen Account wurde zur&uumlt; gesetzt und ein neues an deine Emailadresse gesendet.";						 
						 
//$msg = urlencode();
//header("Location: forgot.php?msg=$msg");						 
//exit();
 }
}
?>
<html>
<head>
<title>Passwort vergessen?</title>
<meta http-equiv="Content-Type" content="text/html">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script language="JavaScript" type="text/javascript" src="js/jquery.validate.js"></script>
  <script>
  $(document).ready(function(){
    $("#actForm").validate();
  });
  </script>
<link href="styles.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="5" class="main">
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
  <tr> 
    <td width="160" valign="top"><p>&nbsp;</p>
      <p>&nbsp; </p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
    <td width="732" valign="top">
<h3 class="titlehdr">Passwort vergessen?</h3>

      <p> 
        <?php

//mal wieder die fehler überprüfung ^^

	if(!empty($err))  {
	   echo "<div class=\"msg\">";
	  foreach ($err as $e) {
	    echo "* $e <br>";
	    }
	  echo "</div>";	
	   }
	   if(!empty($msg))  {
	    echo "<div class=\"msg\">" . $msg[0] . "</div>";

	   }
  
	  ?>
      </p>
      <p>Wenn du dein passwort vergessen hast, kannst du dir hier ein neues an deine Emailadresse gesendet</p>
	 
      <form action="forgot.php" method="post" name="actForm" id="actForm" >
        <table width="65%" border="0" cellpadding="4" cellspacing="4" class="loginform">
          <tr> 
            <td colspan="2">&nbsp;</td>
          </tr>
          <tr> 
            <td width="36%">Your Email</td>
            <td width="64%"><input name="user_email" type="text" class="required email" id="txtboxn" size="25"></td>
          </tr>
          <tr> 
            <td colspan="2"> <div align="center"> 
                <p> 
                  <input name="doReset" type="submit" id="doLogin3" value="Reset">
                </p>
              </div></td>
          </tr>
        </table>
        <div align="center"></div>
        <p align="center">&nbsp; </p>
      </form>
	  
      <p>&nbsp;</p>
	   
      <p align="left">&nbsp; </p></td>
    <td width="196" valign="top">&nbsp;</td>
  </tr>
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
</table>

</body>
</html>
noch ausstehend:
Danke.php
myaccount.php < eure account seite
mysettings.php < Eure Einstellungen
admin.php < beschreibt sich selbst, oder? ^^
do.php < ist fürs Benachrichtigen zuständig, ansatzweise fertig.
activate.php < mit die Wichtigste Sache, die noch nicht fertig ist.
Die Javascripte, auf die ich referiere sidn auch noch nicht ganz fertig ^^
style.css < auch unfertig
 
Zuletzt bearbeitet:
Oben