[Diskussion] Würfel in RPG's

Ironhide

Na hast du Angst Kleiner?
VIP
Alter Schwede...
okay, ich versteh zwar nur Bahnhof, aber das macht nix xD
Ein wenig steht ja schon da, welcher code wofür ist. Aber man sieht mal, was man alles machen muss, für eine seite damit dort würfel rüberspringen, und da drin ist wohl noch nicht mla richtig das aussehen defeniert, wenn ich das richtige verstehe
"style.css < auch unfertig"
 

Janoko

Phöser Engel
VIP
ja die style.css ist für das aussehen zuständig :)

damit brauche ich das nicht in der html datei zu definieren, sondern kann den entsprechenden punkten ein eindeutiges aussehen zu ordnen, zb kann ich in der ausgabe der würfel seiten die würfel als grafik darstellen alssen und diese grafik in der style.css festlegen ^^

die datei kann auch megadancebimbamborium.css heißen - es ist nru wichtig, das man sie einbindet und das die (reine textdatei) mit css endet ^^
 

Ironhide

Na hast du Angst Kleiner?
VIP
Hehe... also soweit ich weiß, wird diese css datei dann auch mit die größte sein, stimmts?
da ja für jedes optische detail was im code stehen muss, als für jede linie, fläche, punkt usw... oder lieg ich da falsch?
 

Janoko

Phöser Engel
VIP
nein muss nicht die größte sein, da ich bilder auch anders weitig einbinden kann - was weit aus einfach ist.

nein css definiert wei etwas ausschaut, zb wie groß die Schrift ist, welche farbe sie hat usw.

Damit deklariert man zb die farbe, die ein link hat, welche farbe er hat wenn er angeklickt wurde und welche farbe er annimmt, wenn die maus darüber ist :)

sowas kann ich nicht per bild tag machen
 

Ironhide

Na hast du Angst Kleiner?
VIP
okay, das meinte ich eigentlich auch damit^^
aber danke nochmal für die erklärung :) *wieder gefährliches halbwissen aufsaug um beim nächsten mal klugscheißen zu können*
 

Fuma-Snake

Exarch
Hi Leute :)

Ich wollte noch eine Sache nachfragen, zur Planung wegen meinem RPG.
Die Würfel, sind die dir Janoko wirklich so ernst, dass ich davon ausgehen kann, dass sie fertig gestellt werden?
Ich will hier nicht hetzen, keine Zeitangabe und auch sonst nichts, sondern ich würde einfach nur gerne wissen, ob ich mich hier auf euch verlassen kann :]
Wäre nämlich wichtig an der Stelle an der ich gerade Arbeite ^.~
 

Ironhide

Na hast du Angst Kleiner?
VIP
Ich behaupte einfach mal, bei der Arbeit die Janoko dort schon investiert hat, wird sie das auch bei gelegenheit fertig stellen :)
 

Janoko

Phöser Engel
VIP
ja ich bin noch dran, wenn acuh momentan nur sporadisch, genauso wie ales andere, was ich nur sporadisch mache
 

Nu¥eN

Scriptor
Also ich steig in deiner login.php nicht durch. wozu nimmst du da die $_GET[] auseinander und schreibst sie 1 zu 1 in die $get[]? Auf die Variable greifst du später nicht mehr zu... oder kommt das später noch?

Ich sehe auf jeden fall: du bist damit um einiges besser als ich. Ich bin da gerade völlig überfordert mit :-D Aber vielleicht kann dir das noch zum vorteil werden. Immerhin denke ich um einiges einfacher. z.B. würd ich bei so vielen dateien die ganzen html-tags in die index.php auslagern, erst das jeweils benötigte mittels include zusammen führen und dann diverse sachen, die du momentan in jeder datei fest eingegeben hast, durch variablen lösen. wenn ein Link ala index.php?action=login aufgerufen wird führt ein switch den include "login.php" aus (oder vielleicht ohne switch: include $_GET['action'].".php";?) und in der jeweils eingefügten datei erscheint dann ein $title= "Seitentitel";? oder im header zwischen den title-tags ein $_GET[action], oder oder oder... auf jeden fall würd ich nie den kompletten header in jeder datei neu definieren sondern beim aufruf generieren. spart doch ne menge arbeit, oder?

Das war aber so auf den ersten Blick das einzige, was mir spanisch vorkam. falls du zufällig noch irgendwo einen Code hast, der nicht macht was er soll, bei dem du den Fehler nicht findest (könnte ich nachvollziehen wenn ich mir so ansehe, wie umfangreich das Projekt schon ist), dann poste ihn ruhig. beim einlesen in anderer leute Scripte bin ich um einiges besser als beim schreiben eigener projekte.
Übrigens, du schreibst da was von emails überprüfen. wie schickst du die denn? weil: nicht jeder server unterstützt mail(). Ich könnte aber noch irgendwo eine php-datei in einem meiner alten backups rumfliegen haben, mit dem du selbst eine mail()-funktion schreiben kannst. und wenn nicht hätt ich noch ne andere alternative für dich ;-)

In jedem fall aber noch viel erfolg beim umsetzen des projektes. bist aus meiner Sicht schon sehr gut dabei :-)
 

Janoko

Phöser Engel
VIP
ich benutze den x-mailer von php, der standart mäßig aktiviert ist =)

ich greife schon auf die $get[] zu ....

ich weiß das es durch aus einfacher ist die index.php mit dem ganzen zu füttern, doch muss man erstmal das grund gerüst haben, dann kann man es umbauen :)

weil die html sachen kann man dann ja wieder umschieben und einfügen, wobei ich dann ja in jeder form action die jeweilige php wieder definieren muss und die als framework unter die index.php setzen :)


außerdem bin ich mir teilweise echt nicht sciher ob ich die css so richtig hin bekomme ^^

scriptteile die fertig sind:

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>


PHP:
//danke.php

<html>
<head>
<title>Danke</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<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">Danke</h3>
      <h4>Registration kompletiert.!</h4>
<?php      '<p><font size="2" face="Arial, Helvetica, sans-serif">Eine Aktivierungs-Email wurde an deine Emailadresse' . $adress . 'gesendet. Nachdem du deinen Account aktiviert hast kannst du dich <a href="login.php">hier</a> einloggen.</font></p>' ?>
      <p>&nbsp;</p>
	   
      <p align="right">&nbsp; </p></td>
    <td width="196" valign="top">&nbsp;</td>
  </tr>
  <tr> 
    <td colspan="3">&nbsp;</td>
  </tr>
</table>

</body>
</html>
wusste mir echt nicht anders zu helfen -.-





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:

Janoko

Phöser Engel
VIP
PHP:
//admin.php
<?php 
include 'connection.php';
page_protect();

if(!checkAdmin()) {
header("Location: login.php");
exit();
}

$page_limit = 10; 


$host  = $_SERVER['HTTP_HOST'];
$host_upper = strtoupper($host);
$login_path = @ereg_replace('admin','',dirname($_SERVER['PHP_SELF']));
$path   = rtrim($login_path, '/\\');

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

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

if($post['doBan'] == 'Ban') {

if(!empty($_POST['u'])) {
	foreach ($_POST['u'] as $uid) {
		$id = filter($uid);
		mysql_query("update users set banned='1' where id='$id'");
	}
 }
 $ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];;
 
 header("Location: $ret");
 exit();
}

if($_POST['doUnban'] == 'Unban') {

if(!empty($_POST['u'])) {
	foreach ($_POST['u'] as $uid) {
		$id = filter($uid);
		mysql_query("update users set banned='0' where id='$id'");
	}
 }
 $ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];;
 
 header("Location: $ret");
 exit();
}

if($_POST['doDelete'] == 'Delete') {

if(!empty($_POST['u'])) {
	foreach ($_POST['u'] as $uid) {
		$id = filter($uid);
		mysql_query("delete from users where id='$id'");
	}
 }
 $ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];;
 
 header("Location: $ret");
 exit();
}

if($_POST['doApprove'] == 'Approve') {

if(!empty($_POST['u'])) {
	foreach ($_POST['u'] as $uid) {
		$id = filter($uid);
		mysql_query("update users set approved='1' where id='$id'");
		
	list($to_email) = mysql_fetch_row(mysql_query("select user_email from users where id='$uid'"));	
 
$message = 
"Hallo,\n
Danke das du dich registiert hast, dein Account wurde frei geschaltet.\n

*****LOGIN LINK*****\n
http://$host$path/login.php

Danke,

Administrator
$host_upper
______________________________________________________
Dies ist eine Automatisch generierte E-Mail, nicht antworten.
";

@mail($to_email, "User Activation", $message,
    "From: \"Member Registration\" <auto-reply@$host>\r\n" .
     "X-Mailer: PHP/" . phpversion()); 
	 
	}
 }
 
 $ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];	 
 header("Location: $ret");
 exit();
}

$rs_all = mysql_query("select count(*) as total_all from users") or die(mysql_error());
$rs_active = mysql_query("select count(*) as total_active from users where approved='1'") or die(mysql_error());
$rs_total_pending = mysql_query("select count(*) as tot from users where approved='0'");						   

list($total_pending) = mysql_fetch_row($rs_total_pending);
list($all) = mysql_fetch_row($rs_all);
list($active) = mysql_fetch_row($rs_active);


?>
<html>
<head>
<title>Administration Main Page</title>
<meta http-equiv="Content-Type" content="text/html">
<link href="styles.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="14%" valign="top"><?php
	if (isset($_SESSION['user_id'])) {?>
<div class="myaccount">
  <p><strong>Mein Account</strong></p>
  <a href="myaccount.php">My Account</a><br>
  <a href="mysettings.php">Einstellungen</a><br>
    <a href="logout.php">Logout </a>
	
 
<?php }
if (checkAdmin()) {

?>
      <p> <a href="admin.php">Admin CP </a></p>
	  <?php } ?>
	</td>
    <td width="74%" valign="top" style="padding: 10px;"><h2><font color="#FF0000">Administrations 
        Seite</font></h2>
      <table width="100%" border="0" cellpadding="5" cellspacing="0" class="myaccount">
        <tr>
          <td>Total users: <?php echo $all;?></td>
          <td>Active users: <?php echo $active; ?></td>
          <td>Pending users: <?php echo $total_pending; ?></td>
        </tr>
      </table>
      <p><?php 
	  if(!empty($msg)) {
	  echo $msg[0];
	  }
	  ?></p>
      <table width="80%" border="0" align="center" cellpadding="10" cellspacing="0" style="background-color: #E4F8FA;padding: 2px 5px;border: 1px solid #CAE4FF;" >
        <tr>
          <td><form name="form1" method="get" action="admin.php">
              <p align="center">Search 
                <input name="q" type="text" id="q" size="40">
                <br>
                [Email oder Username] </p>
              <p align="center"> 
                <input type="radio" name="qoption" value="pending">
                Bedürfen der Freischaltung
                <input type="radio" name="qoption" value="recent">
                Grade registiert 
                <input type="radio" name="qoption" value="banned">
                Bebante User <br>
                <br>
                [Suche kann leer gelassen werden, wenn Optionen benutz werden]</p>
              <p align="center"> 
                <input name="doSearch" type="submit" id="doSearch2" value="Search">
              </p>
              </form></td>
        </tr>
      </table>
      <p>
        <?php if ($get['doSearch'] == 'Search') {
	  $cond = '';
	  if($get['qoption'] == 'pending') {
	  $cond = "where `approved`='0' order by date desc";
	  }
	  if($get['qoption'] == 'recent') {
	  $cond = "order by date desc";
	  }
	  if($get['qoption'] == 'banned') {
	  $cond = "where `banned`='1' order by date desc";
	  }
	  
	  if($get['q'] == '') { 
	  $sql = "select * from users $cond"; 
	  } 
	  else { 
	  $sql = "select * from users where `user_email` = '$_REQUEST[q]' or `user_name`='$_REQUEST[q]' ";
	  }

	  
	  $rs_total = mysql_query($sql) or die(mysql_error());
	  $total = mysql_num_rows($rs_total);
	  
	  if (!isset($_GET['page']) )
		{ $start=0; } else
		{ $start = ($_GET['page'] - 1) * $page_limit; }
	  
	  $rs_results = mysql_query($sql . " limit $start,$page_limit") or die(mysql_error());
	  $total_pages = ceil($total/$page_limit);
	  
	  ?>
      <p>Approve -&gt; A notification email will be sent to user notifying activation.<br>
        Ban -&gt; No notification email will be sent to the user. 
      <p><strong>*Note: </strong>Once the user is banned, he/she will never be 
        able to register new account with same email address. 
      <p align="right"> 
        <?php 
	  
	  // outputting the pages
		if ($total > $page_limit)
		{
		echo "<div><strong>Pages:</strong> ";
		$i = 0;
		while ($i < $page_limit)
		{
		
		
		$page_no = $i+1;
		$qstr = ereg_replace("&page=[0-9]+","",$_SERVER['QUERY_STRING']);
		echo "<a href=\"admin.php?$qstr&page=$page_no\">$page_no</a> ";
		$i++;
		}
		echo "</div>";
		}  ?>
		</p>
		<form name "searchform" action="admin.php" method="post">
        <table width="100%" border="0" align="center" cellpadding="2" cellspacing="0">
          <tr bgcolor="#E6F3F9"> 
            <td width="4%"><strong>ID</strong></td>
            <td> <strong>Date</strong></td>
            <td><div align="center"><strong>User Name</strong></div></td>
            <td width="24%"><strong>Email</strong></td>
            <td width="10%"><strong>Approval</strong></td>
            <td width="10%"> <strong>Banned</strong></td>
            <td width="25%">&nbsp;</td>
          </tr>
          <tr> 
            <td>&nbsp;</td>
            <td width="10%">&nbsp;</td>
            <td width="17%"><div align="center"></div></td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <?php while ($rrows = mysql_fetch_array($rs_results)) {?>
          <tr> 
            <td><input name="u[]" type="checkbox" value="<?php echo $rrows['id']; ?>" id="u[]"></td>
            <td><?php echo $rrows['date']; ?></td>
            <td> <div align="center"><?php echo $rrows['user_name'];?></div></td>
            <td><?php echo $rrows['user_email']; ?></td>
            <td> <span id="approve<?php echo $rrows['id']; ?>"> 
              <?php if(!$rrows['approved']) { echo "Pending"; } else {echo "Active"; }?>
              </span> </td>
            <td><span id="ban<?php echo $rrows['id']; ?>"> 
              <?php if(!$rrows['banned']) { echo "no"; } else {echo "yes"; }?>
              </span> </td>
            <td> <font size="2"><a href="javascript:void(0);" onclick='$.get("do.php",{ cmd: "approve", id: "<?php echo $rrows['id']; ?>" } ,function(data){ $("#approve<?php echo $rrows['id']; ?>").html(data); });'>Approve</a> 
              <a href="javascript:void(0);" onclick='$.get("do.php",{ cmd: "ban", id: "<?php echo $rrows['id']; ?>" } ,function(data){ $("#ban<?php echo $rrows['id']; ?>").html(data); });'>Ban</a> 
              <a href="javascript:void(0);" onclick='$.get("do.php",{ cmd: "unban", id: "<?php echo $rrows['id']; ?>" } ,function(data){ $("#ban<?php echo $rrows['id']; ?>").html(data); });'>Unban</a> 
              <a href="javascript:void(0);" onclick='$("#edit<?php echo $rrows['id'];?>").show("slow");'>Edit</a> 
              </font> </td>
          </tr>
          <tr> 
            <td colspan="7">
			
			<div style="display:none;font: normal 11px arial; padding:10px; background: #e6f3f9" id="edit<?php echo $rrows['id']; ?>">
			<form name="edit<?php echo $rrows['id']; ?>" action="" method="get"> 
			<input type="hidden" name="id<?php echo $rrows['id']; ?>" id="id<?php echo $rrows['id']; ?>" value="<?php echo $rrows['id']; ?>">
			User Name: <input name="user_name<?php echo $rrows['id']; ?>" id="user_name<?php echo $rrows['id']; ?>" type="text" size="10" value="<?php echo $rrows['user_name']; ?>" >
			User Email:<input id="user_email<?php echo $rrows['id']; ?>" name="user_email<?php echo $rrows['id']; ?>" type="text" size="20" value="<?php echo $rrows['user_email']; ?>" >
			Level: <input id="user_level<?php echo $rrows['id']; ?>" name="user_level<?php echo $rrows['id']; ?>" type="text" size="5" value="<?php echo $rrows['user_level']; ?>" > 1->user,5->admin
			<br><br>New Password: <input id="pass<?php echo $rrows['id']; ?>" name="pass<?php echo $rrows['id']; ?>" type="text" size="20" value="" > (leave blank)
			<input name="doSave" type="button" id="doSave" value="Save" 
			onclick='$.get("do.php",{ cmd: "edit", pass:$("input#pass<?php echo $rrows['id']; ?>").val(),user_level:$("input#user_level<?php echo $rrows['id']; ?>").val(),user_email:$("input#user_email<?php echo $rrows['id']; ?>").val(),user_name: $("input#user_name<?php echo $rrows['id']; ?>").val(),id: $("input#id<?php echo $rrows['id']; ?>").val() } ,function(data){ $("#msg<?php echo $rrows['id']; ?>").html(data); });'> 
			<a  onclick='$("#edit<?php echo $rrows['id'];?>").hide();' href="javascript:void(0);">close</a>
		  </form>
		  <div style="color:red" id="msg<?php echo $rrows['id']; ?>" name="msg<?php echo $rrows['id']; ?>"></div>
		  </div>
		  
		  </td>
          </tr>
          <?php } ?>
        </table>
	    <p><br>
          <input name="doApprove" type="submit" id="doApprove" value="Approve">
          <input name="doBan" type="submit" id="doBan" value="Ban">
          <input name="doUnban" type="submit" id="doUnban" value="Unban">
          <input name="doDelete" type="submit" id="doDelete" value="Delete">
          <input name="query_str" type="hidden" id="query_str" value="<?php echo $_SERVER['QUERY_STRING']; ?>">
          <strong>Note:</strong> If you delete the user can register again, instead 
          ban the user. </p>
        <p><strong>Edit Users:</strong> To change email, user name or password, 
          you have to delete user first and create new one with same email and 
          user name.</p>
      </form>
	  
	  <?php } ?>
      &nbsp;</p>
	  <?php
	  if($_POST['doSubmit'] == 'Create')
{
$rs_dup = mysql_query("select count(*) as total from users where user_name='$post[user_name]' OR user_email='$post[user_email]'") or die(mysql_error());
list($dups) = mysql_fetch_row($rs_dup);

if($dups > 0) {
	die("The user name or email already exists in the system");
	}

if(!empty($_POST['pwd'])) {
  $pwd = $post['pwd'];	
  $hash = PwdHash($post['pwd']);
 }  
 else
 {
  $pwd = GenPwd();
  $hash = PwdHash($pwd);
  
 }
 
mysql_query("INSERT INTO users (`user_name`,`user_email`,`pwd`,`approved`,`date`,`user_level`)
			 VALUES ('$post[user_name]','$post[user_email]','$hash','1',now(),'$post[user_level]')
			 ") or die(mysql_error()); 



$message = 
"Danke für deine registierung, deine Login-Daten.\n

User Email: $post[user_email] \n
Passwd: $pwd \n

*****LOGIN LINK*****\n
http://$host$path/login.php

Danke

Administrator
$host_upper
______________________________________________________
Dies ist eine Automatisch generierte E-Mail, nicht antworten.
";

if($_POST['send'] == '1') {

	mail($post['user_email'], "Login Details", $message,
    "From: \"Member Registration\" <auto-reply@$host>\r\n" .
     "X-Mailer: PHP/" . phpversion()); 
 }
echo "<div class=\"msg\">User created with password $pwd....done.</div>"; 
}

	  ?>
	  
      <h2><font color="#FF0000">Create New User</font></h2>
      <table width="80%" border="0" cellpadding="5" cellspacing="2" class="myaccount">
        <tr>
          <td><form name="form1" method="post" action="admin.php">
              <p>User ID 
                <input name="user_name" type="text" id="user_name">
                (Type the username)</p>
              <p>Email 
                <input name="user_email" type="text" id="user_email">
              </p>
              <p>User Level 
                <select name="user_level" id="user_level">
                  <option value="1">User</option> 
                  <option vaule="2">SL</option>
                  <option value="5">Admin</option>
                </select>
              </p>
              <p>Passwort 
                <input name="pwd" type="text" id="pwd">
                (if empty a password will be auto generated)</p>
              <p> 
                <input name="send" type="checkbox" id="send" value="1" checked>
                Send Email</p>
              <p> 
                <input name="doSubmit" type="submit" id="doSubmit" value="Create">
              </p>
            </form>
            <p>**Alle so erstellten User werden automatisch akzeptiert**</p></td>
        </tr>
      </table>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      <p>&nbsp;</p></td>
    <td width="12%">&nbsp;</td>
  </tr>
</table>
</body>
</html>
damit wäre die admin.php auch abgeharkt... jetzt erstmal ne pause von php ~~~~
 

Nu¥eN

Scriptor
tut mir leid, deine Pause muss ich leider unterbrechen.
PHP:
<?php      '<p><font size="2" face="Arial, Helvetica, sans-serif">Eine Aktivierungs-Email wurde an deine Emailadresse' . $adress . 'gesendet. Nachdem du deinen Account aktiviert hast kannst du dich <a href="login.php">hier</a> einloggen.</font></p>' ?>
Da definierst du in der danke.php einen String. und was soll damit passieren? das hast du dem Script nämlich nicht gesagt. wie wäre, vor dem String ein echo zu platzieren und ihn mit nem ; ab zu schließen? momentan dürfte da nämlich nicht viel passieren, außer vielleicht eine Fehlermeldung wegen unerwartetem T_String oder wie sich das nannte... ^^

Und was ich bei dir nach wie vor nicht verstehe: if($post['doban'] == 'ban')...?
wieso nicht einfach als wert 0 oder 1 übergeben? dann reicht if($post['doban']), wenn der Wert 1 ist ist die Abfrage True und wenn der Wert 0 ist ist die Abfrage False. boolean frisst weniger speicher als ein string, ne 1 ist schneller getippt als 'ban', würd also sowohl deine Arbeit als auch die des Servers beschleunigen. überhaupt ergibt if in dem Stil nur sinn, wenn der User manuell eintippen muss, welchen wert die Variable hat, oder wenn eine variable mehrere funktionen erfüllt. if($post['action'] == 'ban') z.B., wobei $post['action'] dann für alle Aktionen des Admins verantwortlich wäre. in dem fall hättest du dann plötzlich nurnoch eine variable, die du dir merken müsstest, also wieder ne möglichkeit, deine arbeitsgeschwindigkeit zu erhöhen.

Deine Fehlermeldungen bei den Verbindungen zur DB würde ich dagegen etwas erweitern.
PHP:
//Du benutzt:
die(mysql_error())
//Ich dagegen würde schreiben:
die(mysql_errno()."\r\n".mysql_error())
Ich denke mir: die User schreiben sich eher mal ne Nummer auf und teilen sie mir mit als ne komplette Fehlermeldung ab zu schreiben. Ich persönlich geh prinzipiell so vor, wenn mir ein fehler-code zur verfügung steht.
Übrigens: wäre es nicht möglich, in den die() eine automatische weiterleitung ein zu fügen, zu einem bugreport oder so, der dem admin dann komplett selbstständig ne übergebene Variable zuschickt? ich kenn die funktionsweise von die() nun nicht so genau, aber wenn sich damit ne weiterleitung realisieren ließe könnte man doch ne $_GET-variable mir mysql_errno() füttern... würd dem User schonmal die Arbeit abnehmen, den Fehler selbst melden zu müssen. ;-)

So weit von mir. angenehme Nachtruhe ^^
 

Janoko

Phöser Engel
VIP
wollte nur sagen das das projekt noch läuft, nur ich garde keine zeit dafür habe :)

edit:

PHP:
die(mysql_errno()."\r\n".mysql_error());
uff, ich hatte eigentlich nicht vor mir unendliche viele fehler nummern zu bauen ^^;;

das ich n String mit echo einleiten sollte.. ja, auch ich vergess gern mal was... x(

außerdem sind mir noch einige andere fehler aufgefallen d:

zb das ich in einer mail vergessen habe die ' ' um einen array zu setzen den ich aus einer variable haben will ( $data['pwd'] )
dann glaiche ich kann ich meine funktion zum aktivierungscode deutlich kürzen
da es mit
PHP:
<?PHP

echo md5(uniqid(rand(), TRUE));

?>
wohl doch etwas kürzer ist ^^

Kurzerklärung:

Ich lasse mir einen wert in microsekunden angeben, der um den brooelischen LCG wert erweitert wird und dann noch md5 verschlüsselt = 32lange, einzigartiger ID-Schlüssel....

edit²:

ich werde, wie vor egschlagen, das ganze html zeugs per switch und include in eine index hauen, ist mir doch n bisschen zu verwirrend das ganze wenn ich schauen muss wo ich welche scheiße gebaut habe ^^

muss nur noch schauen, wie ich was unterbringe ^^

weil ich kann auch in den jeweiligen login/logout dateien eigentlich weg lassen wenn ich einen switch baue, nur mit der funktion von php bin ich mal so gar nicht vertraut, da ich die kaum bis gar nicht benutzt habe.
 
Zuletzt bearbeitet:
Oben