Quote database webapp
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

login.php 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?PHP
  2. require_once('inc/database.php');
  3. require_once('inc/account.php');
  4. require_once('inc/settings.php');
  5. if (isset($_POST['openid_url']) || isset($_REQUEST['openid_mode'])) {
  6. // OpenID login in progress
  7. require_once('openid/processor.php');
  8. } else if (isset($_SESSION['openid']) && $_SESSION['openid']['validated']) {
  9. // OpenID login succeeded
  10. $sql = 'SELECT user_id, user_name, user_standing FROM users WHERE user_name = ';
  11. $sql .= '\'' . m($_SESSION['openid']['identity']) . '\'';
  12. $res = mysql_query($sql);
  13. if (mysql_num_rows($res) == 0) {
  14. $sql = 'INSERT INTO users (user_name, user_pass) VALUES (\'' . m($_SESSION['openid']['identity']);
  15. $sql .= '\', \'openid user\')';
  16. $res = mysql_query($sql);
  17. $_SESSION['uid'] = mysql_insert_id();
  18. $_SESSION['uname'] = $_SESSION['openid']['identity'];
  19. $_SESSION['standing'] = 0;
  20. } else {
  21. $row = mysql_fetch_assoc($res);
  22. $_SESSION['uid'] = $row['user_id'];
  23. $_SESSION['uname'] = $row['user_name'];
  24. $_SESSION['standing'] = $row['user_standing'];
  25. }
  26. unset($_SESSION['openid']);
  27. if (isset($_POST['remember'])) {
  28. $row = mysql_fetch_array(mysql_query('SELECT user_hash FROM users WHERE user_id = '.$_SESSION['uid']));
  29. if (strlen($row[0]) != 32) {
  30. $row[0] = md5(uniqid($_SESSION['uid']).time());
  31. mysql_query('UPDATE users SET user_hash = \''.$row[0].'\' WHERE user_id = '.$_SESSION['uid']);
  32. }
  33. setcookie('quotedbperm', $row[0], time()+60*24*24*365.24);
  34. }
  35. header('Location: '.BASE);
  36. exit;
  37. } else if (isset($_SESSION['openid']['error'])) {
  38. // OpenID login failed
  39. define('MESSAGE', $_SESSION['openid']['error']);
  40. unset($_SESSION['openid']['error']);
  41. } else if (isset($_POST['user']) && isset($_POST['pass'])) {
  42. // Normal login
  43. $sql = 'SELECT user_id, user_name, user_standing FROM users ';
  44. $sql .= 'WHERE user_name = \''.m($_POST['user']).'\' AND user_pass = \''.m(md5($_POST['user'].$_POST['pass'])).'\'';
  45. $res = mysql_query($sql);
  46. if (mysql_num_rows($res) == 0) {
  47. define('MESSAGE', 'Login failed. Please check your username and password.');
  48. } else {
  49. $row = mysql_fetch_array($res);
  50. $_SESSION['uid'] = $row['user_id'];
  51. $_SESSION['uname'] = $row['user_name'];
  52. $_SESSION['standing'] = $row['user_standing'];
  53. if (isset($_POST['remember'])) {
  54. $row = mysql_fetch_array(mysql_query('SELECT user_hash FROM users WHERE user_id = '.$_SESSION['uid']));
  55. if (strlen($row[0]) != 32) {
  56. $row[0] = md5(uniqid($row['user_id']).time());
  57. mysql_query('UPDATE users SET user_hash = \''.$row[0].'\' WHERE user_id = '.$_SESSION['uid']);
  58. }
  59. setcookie('quotedbperm', $row[0], time()+60*24*24*365.24);
  60. }
  61. header('Location: '.BASE);
  62. exit;
  63. }
  64. }
  65. define('TITLE', 'Login');
  66. require_once('inc/header.php');
  67. ?>
  68. <div class="oneThird right">
  69. <h2>Why login?</h2>
  70. <p>
  71. Because of the public nature of this quotes database (there are no
  72. moderators or admins, just users), and the way we reward good users
  73. and punish bad ones (standings), we require that you be logged in in
  74. order to rate a quote or add a new one.
  75. </p>
  76. <p>
  77. You can still browse quotes without being logged in, but to contribute
  78. to the site at all you'll have to login.
  79. </p>
  80. </div>
  81. <div>
  82. <h2>Login</h2>
  83. <?PHP
  84. if (defined('MESSAGE')) {
  85. echo '<div id="message">'.MESSAGE.'</div>';
  86. }
  87. ?>
  88. <p>
  89. If you don't have an account, <a href="<?PHP echo BASE; ?>register">
  90. register one</a> in a few seconds.
  91. </p>
  92. <form action="<?PHP echo BASE; ?>login" method="post">
  93. <table class="form">
  94. <tr>
  95. <th>Username</th>
  96. <td><input type="text" name="user"></td>
  97. </tr>
  98. <tr>
  99. <th>Password</th>
  100. <td><input type="password" name="pass"></td>
  101. </tr>
  102. <tr>
  103. <th>Remember?</th>
  104. <td><input type="checkbox" name="remember" style="width: 20px;"> (Requires cookies)</td>
  105. </tr>
  106. </table>
  107. <input type="submit" value="Login">
  108. </form>
  109. <p>Alternatively, you can log in using OpenID:</p>
  110. <form action="<?PHP echo BASE; ?>login" method="post">
  111. <table class="form">
  112. <tr><th>Identifier</th>
  113. <td>
  114. <input type="text" name="openid_url" id="openid_url" style="background: url('openid/openid.gif') no-repeat; padding-left: 20px;">
  115. </td></tr>
  116. <tr>
  117. <th>Remember?</th>
  118. <td><input type="checkbox" name="remember" style="width: 20px;"> (Requires cookies)</td>
  119. </tr>
  120. </table>
  121. <input type="submit" value="Login">
  122. </form>
  123. </div>
  124. <?PHP
  125. require_once('inc/footer.php');
  126. ?>