Login Script

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Login Script

    Hallo,
    ich habe habe mich mal wieder mit PHP befasst um ein bisschen was dazu zu lernen und meinen Horizont zu erweitern.
    Jetzt habe ich mir dieses Login Panel angeschaut.

    Davon habe ich die Demo verwendet und ein bisschen verändert.
    So das dies entstanden ist.

    index.php

    PHP-Quellcode

    1. <?php
    2. define('INCLUDE_CHECK',true);
    3. //require 'connect.php';
    4. require 'functions.php';
    5. // Those two files can be included only if INCLUDE_CHECK is defined
    6. session_name('Login');
    7. // Starting the session
    8. session_set_cookie_params(2*7*24*60*60);
    9. // Making the cookie live for 2 weeks
    10. session_start();
    11. if($_SESSION['id'] && !isset($_COOKIE['Remember']) && !$_SESSION['rememberMe'])
    12. {
    13. // If you are logged in, but you don't have the Remember cookie (browser restart)
    14. // and you have not checked the rememberMe checkbox:
    15. $_SESSION = array();
    16. session_destroy();
    17. // Destroy the session
    18. }
    19. if(isset($_GET['logoff']))
    20. {
    21. $_SESSION = array();
    22. session_destroy();
    23. header("Location: index.php");
    24. exit;
    25. }
    26. if($_POST['submit']=='Login')
    27. {
    28. // Checking whether the Login form has been submitted
    29. $error = array();
    30. // Will hold our errors
    31. if(!$_POST['username'] || !$_POST['password'])
    32. $error[] = 'Alle Felder müssen ausgefüllt sein!';
    33. if(!count($error))
    34. {
    35. $_POST['username'] = mysql_real_escape_string($_POST['username']);
    36. $_POST['password'] = mysql_real_escape_string($_POST['password']);
    37. $_POST['rememberMe'] = (int)$_POST['rememberMe'];
    38. // Escaping all input data
    39. $row = mysql_fetch_assoc(mysql_query("SELECT id,user FROM members WHERE user='{$_POST['username']}' AND password='".md5($_POST['password'])."'"));
    40. if($row['user'])
    41. {
    42. // If everything is OK login
    43. $_SESSION['user']=$row['user'];
    44. $_SESSION['id'] = $row['id'];
    45. $_SESSION['rememberMe'] = $_POST['rememberMe'];
    46. // Store some data in the session
    47. setcookie('Remember',$_POST['rememberMe']);
    48. }
    49. else $error[]='Falscher Username oder Password!';
    50. }
    51. if($error)
    52. $_SESSION['msg']['login-error'] = implode('<br />',$error);
    53. // Save the error messages in the session
    54. header("Location: index.php");
    55. exit;
    56. }
    57. else if($_POST['submit']=='Register')
    58. {
    59. // If the Register form has been submitted
    60. $error = array();
    61. if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
    62. {
    63. $error[]='Dein Benutzername ist zu kurz oder zu lang!!';
    64. }
    65. if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
    66. {
    67. $error[]='Dein Benutzername enthält unerlaubte zeichen!';
    68. }
    69. if(!checkEmail($_POST['email']))
    70. {
    71. $error[]='E-Mail Adresse überprüfen!';
    72. }
    73. if(!count($error))
    74. {
    75. // If there are no errors
    76. $password = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
    77. // Generate a random password
    78. $_POST['email'] = mysql_real_escape_string($_POST['email']);
    79. $_POST['username'] = mysql_real_escape_string($_POST['username']);
    80. // Escape the input data
    81. mysql_query(" INSERT INTO members(user,password,email,regIP,date)
    82. VALUES(
    83. '".$_POST['username']."',
    84. '".md5($password)."',
    85. '".$_POST['email']."',
    86. '".$_SERVER['REMOTE_ADDR']."',
    87. NOW()
    88. )");
    89. if(mysql_affected_rows($link)==1)
    90. {
    91. send_mail( 'demo-test@tutorialzine.com',
    92. $_POST['email'],
    93. 'Registration System Demo - Your New Password',
    94. 'Your password is: '.$password);
    95. $_SESSION['msg']['reg-success']='We sent you an email with your new password!';
    96. }
    97. else $error[]='Der Benutzername existiert bereits!';
    98. }
    99. if(count($error))
    100. {
    101. $_SESSION['msg']['reg-error'] = implode('<br />',$error);
    102. }
    103. header("Location: index.php");
    104. exit;
    105. }
    106. $script = '';
    107. if($_SESSION['msg'])
    108. {
    109. // The script below shows the sliding panel on page load
    110. $script = '
    111. <script type="text/javascript">
    112. $(function(){
    113. $("div#panel").show();
    114. $("#toggle a").toggle();
    115. });
    116. </script>';
    117. }
    118. ?>
    119. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    120. <html xmlns="http://www.w3.org/1999/xhtml">
    121. <head>
    122. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    123. <title>A Cool Login System With PHP MySQL &amp jQuery | Tutorialzine demo</title>
    124. <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    125. <link rel="stylesheet" type="text/css" href="login_panel/css/slide.css" media="screen" />
    126. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    127. <!-- PNG FIX for IE6 -->
    128. <!-- http://24ways.org/2007/supersleight-transparent-png-in-ie6 -->
    129. <!--[if lte IE 6]>
    130. <script type="text/javascript" src="login_panel/js/pngfix/supersleight-min.js"></script>
    131. <![endif]-->
    132. <script src="login_panel/js/slide.js" type="text/javascript"></script>
    133. <?php echo $script; ?>
    134. </head>
    135. <body>
    136. <!-- Panel -->
    137. <div id="toppanel">
    138. <div id="panel">
    139. <div class="content clearfix">
    140. <div class="left">
    141. <h1>Fast-Execution</h1>
    142. <h2>A register/login solution</h2>
    143. <p class="grey">You are free to use this login and registration system in you sites!</p>
    144. <h2>A Big Thanks</h2>
    145. <p class="grey">This tutorial was built on top of <a href="http://web-kreation.com/index.php/tutorials/nice-clean-sliding-login-panel-built-with-jquery" title="Go to site">Web-Kreation</a>'s amazing sliding panel.</p>
    146. </div>
    147. <?php
    148. if(!$_SESSION['id']):
    149. ?>
    150. <div class="left">
    151. <!-- Login Form -->
    152. <form class="clearfix" action="" method="post">
    153. <h1>Login</h1>
    154. <?php
    155. if($_SESSION['msg']['login-error'])
    156. {
    157. echo '<div class="error">'.$_SESSION['msg']['login-error'].'</div>';
    158. unset($_SESSION['msg']['login-error']);
    159. }
    160. ?>
    161. <label class="grey" for="username">Benutzername:</label>
    162. <input class="field" type="text" name="username" id="username" value="" size="23" />
    163. <label class="grey" for="password">Passwort:</label>
    164. <input class="field" type="password" name="password" id="password" size="23" />
    165. <label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Eingeloggt bleiben</label>
    166. <div class="clear"></div>
    167. <input type="submit" name="submit" value="Login" class="bt_login" />
    168. </form>
    169. </div>
    170. <div class="left right">
    171. <!-- Register Form -->
    172. <form action="" method="post">
    173. <h1>Registrieren!</h1>
    174. <?php
    175. if($_SESSION['msg']['reg-error'])
    176. {
    177. echo '<div class="error">'.$_SESSION['msg']['reg-error'].'</div>';
    178. unset($_SESSION['msg']['reg-error']);
    179. }
    180. if($_SESSION['msg']['reg-success'])
    181. {
    182. echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
    183. unset($_SESSION['msg']['reg-success']);
    184. }
    185. ?>
    186. <label class="grey" for="username">Benutzername:</label>
    187. <input class="field" type="text" name="username" id="username" value="" size="23" />
    188. <label class="grey" for="email">Email:</label>
    189. <input class="field" type="text" name="email" id="email" size="23" />
    190. <label>Ein Passwort wird per Email versendet</label>
    191. <input type="submit" name="submit" value="Register" class="bt_register" />
    192. </form>
    193. </div>
    194. <?php
    195. else:
    196. ?>
    197. <div class="left">
    198. <h1>Benutzer Panel</h1>
    199. <p>You can put member-only data here</p>
    200. <a href="registered.php">View a special member page</a>
    201. <p>- or -</p>
    202. <a href="?logoff">Log off</a>
    203. </div>
    204. <div class="left right">
    205. </div>
    206. <?php
    207. endif;
    208. ?>
    209. </div>
    210. </div> <!-- /login -->
    211. <!-- The tab on top -->
    212. <div class="tab">
    213. <ul class="login">
    214. <li class="left">&nbsp;</li>
    215. <li>Hallo <?php echo $_SESSION['user'] ? $_SESSION['user'] : 'Gast';?>!</li>
    216. <li class="sep">|</li>
    217. <li id="toggle">
    218. <a id="open" class="open" href="#"><?php echo $_SESSION['id']?'Öffnen':'Panel Öffnen';?></a>
    219. <a id="close" style="display: none;" class="close" href="#">Panel Schließen</a>
    220. </li>
    221. <li class="right">&nbsp;</li>
    222. </ul>
    223. </div> <!-- / top -->
    224. </div> <!--panel -->
    225. <div class="pageContent">
    226. <div id="main">
    227. <div class="container">
    228. <h1>A Cool Login System</h1>
    229. <h2>Easy registration management with PHP &amp; jQuery</h2>
    230. </div>
    231. <div class="container">
    232. <p>This is a simple example site demonstrating the <a href="http://tutorialzine.com/2009/10/cool-login-system-php-jquery/">Cool Login System tutorial</a> on <strong>Tutorialzine</strong>. You can start by clicking the <strong>Log In | Register</strong> button above. After registration, an email will be sent to you with your new password.</p>
    233. <p><a href="registered.php" target="_blank">View a test page</a>, only accessible by <strong>registered users</strong>.</p>
    234. <p>The sliding jQuery panel, used in this example, was developed by <a href="http://web-kreation.com/index.php/tutorials/nice-clean-sliding-login-panel-built-with-jquery" title="Go to site">Web-Kreation</a>.</p>
    235. <p>You are free to build upon this code and use it in your own sites.</p>
    236. <div class="clear"></div>
    237. </div>
    238. <div class="container tutorial-info">
    239. This is a tutorialzine demo. View the <a href="http://tutorialzine.com/2009/10/cool-login-system-php-jquery/" target="_blank">original tutorial</a>, or download the <a href="demo.zip">source files</a>. </div>
    240. </div>
    241. </div>
    242. </body>
    243. </html>
    Alles anzeigen


    functions.php

    PHP-Quellcode

    1. <?php
    2. if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
    3. function checkEmail($str)
    4. {
    5. return preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $str);
    6. }
    7. function send_mail($from,$to,$subject,$body)
    8. {
    9. $headers = '';
    10. $headers .= "From: $from\n";
    11. $headers .= "Reply-to: $from\n";
    12. $headers .= "Return-Path: $from\n";
    13. $headers .= "Message-ID: <" . md5(uniqid(time())) . "@" . $_SERVER['SERVER_NAME'] . ">\n";
    14. $headers .= "MIME-Version: 1.0\n";
    15. $headers .= "Date: " . date('r', time()) . "\n";
    16. mail($to,$subject,$body,$headers);
    17. }
    18. ?>
    Alles anzeigen


    connect.php

    PHP-Quellcode

    1. <?php
    2. if(!defined('INCLUDE_CHECK')) die('You are not allowed to execute this file directly');
    3. /* Database config */
    4. $db_host = 'localhost';
    5. $db_user = 'UserDataBase';
    6. $db_password = 'UserDataBase';
    7. $db_database = 'members';
    8. /* End config */
    9. $link = mysql_connect($db_host,$db_user,$db_password,$db_database) or die('Unable to establish a DB connection');
    10. mysql_select_db($db_database,$link);
    11. mysql_query("SET names UTF8");
    12. ?>
    Alles anzeigen


    registered.php

    PHP-Quellcode

    1. <?php
    2. session_name('Login');
    3. session_set_cookie_params(2*7*24*60*60);
    4. session_start();
    5. ?>
    6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    7. <html xmlns="http://www.w3.org/1999/xhtml">
    8. <head>
    9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    10. <title>Registered Users</title>
    11. <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
    12. </head>
    13. <body>
    14. <div id="main">
    15. <div class="container">
    16. <h1>Diese Seite ist nur für registrierte Benutzer</h1>
    17. <h2></h2>
    18. </div>
    19. <div class="container">
    20. <?php
    21. if($_SESSION['id'])
    22. echo '<h1>Hallo, '.$_SESSION['user'].'! Du bist eingeloggt!</h1>';
    23. else echo '<h1>Bitte, <a href="index.php">einloggen</a>! </h1>';
    24. ?>
    25. </div>
    26. </div>
    27. </body>
    28. </html>
    Alles anzeigen


    table.sql

    SQL-Abfrage

    1. --
    2. -- Table structure for table `tz_members`
    3. --
    4. CREATE TABLE `members` (
    5. `id` int(11) NOT NULL auto_increment,
    6. `user` varchar(32) collate utf8_unicode_ci NOT NULL default '',
    7. `password` varchar(32) collate utf8_unicode_ci NOT NULL default '',
    8. `email` varchar(255) collate utf8_unicode_ci NOT NULL default '',
    9. `regIP` varchar(15) collate utf8_unicode_ci NOT NULL default '',
    10. `date` datetime NOT NULL default '0000-00-00 00:00:00',
    11. PRIMARY KEY (`id`),
    12. UNIQUE KEY `user` (`user`)
    13. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
    Alles anzeigen


    Ich möchte aber nicht das ein Passwort per Email versendet wird sondern das es bei der Registrierung selber ausgewählt werden kann.
    Bei der Registrierung soll es aber doppelt angeben werden und überprüft werden ob sie überein stimmen.

    Ich hoffe mir kann jemand helfen.
  • Ich denke du solltest ein Login-Scrpt prinzipiell schonmal nicht auf etwas fremden aufbauen.
    Die von dir gewünschten Funktionen sind sehr einfach. Daher solltest du dich lieber etwas mit PHP befassen, selber was prockeln und dich damit hier zur Not melden, anstatt ne fertige Demo zu nehmen und da was ändern zu wollen, ohne jegliche Kenntnisse.
    Drasko@easy-scripting.net since 31.12.2011
    [Blockierte Grafik: http://files.tzdev.de/banner.png]