Вниз  PHP и мелкие вопросы
- 15.05.2012 / 22:32
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
TAPAHbl4, ой :hack:
- 16.05.2012 / 06:55
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
ktktj, зачем тебе это? написать не проблема
__________________
 Магистр Мёда
- 16.05.2012 / 10:23
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
  1. <?php
  2. $captcha_error='';
  3. $reg=$auto_user=$error=$db_error=false;
  4. session_start();
  5. $db_server= mysql_connect("openserver","root","");
  6. if (!$db_server) $db_error='Помилка підкулючення до бази данних. Код:' . mysql_error() . '<br />';
  7. if (!mysql_select_db("ukrnet")) $db_error.='Помилка вибору бази данних. Код:' . mysql_error() . '<br />';
  8. if (User($auto_user))
  9. {
  10. header("Location: /");
  11. mysql_close("ukrnet");
  12. exit;
  13. }
  14. elseif (!empty($_POST['submit']))
  15. {
  16. $login=$_POST['login'];
  17. $password=$_POST['password'];
  18. $email=$_POST['email'];
  19. $error.=Valid($login,"логін") . Valid($password,"парол") . ValidEmail($email) . ValidCaptcha($_POST['captcha']) . $db_error;
  20. if ($error) $reg=false;
  21. else $reg=true;
  22. }
  23. header("Cache-Control: no-store, no-cache, must-revalidate");
  24. header("Cache-Control: post-check=0, pre-check=0", false);
  25. header("Pragma: no-cache");
  26. $im=@imagecreate(100,50) or $captcha_error='Каптча не відображається.<br />';
  27. $char=$_SESSION['captcha'];
  28. $bg=imagecolorallocate($im,9,131,9);
  29. for ($i=0; $i<=100; $i++)
  30. {
  31. $color=imagecolorallocate($im,rand(140,160),rand(160,180),rand(140,180));
  32. imagesetpixel($im,rand(2,89),rand(2,30),$color);
  33. }
  34. for ($i=0;$i<strlen($char);$i++)
  35. {
  36. $color=imagecolorallocate($im,131,152,131);
  37. $x=5+$i*20;
  38. $y = rand(1, 6);
  39. imagechar ($im, 5, $x, $y, $char[$i], $color);
  40. }
  41. echo '<?xml version="1.0" encoding="UTF-8"?>
  42. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  43. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  44. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  45. <head>
  46. <title>Реєстрація</title>
  47. <link rel="stylesheet"  href="../style/style.css" type="text/css" />
  48. </head>
  49. <body>
  50. <table>
  51. <tr><td><img src="../logo.jpg" alt="logo"></td><td></td></tr>
  52. <tr><td colspan=2><font class="menu">Реєстрація</font><a href="nojs.php" class="menu" id="button">Назад</a></td></tr>
  53. <tr><td>';
  54. if ($error) echo '<br /><div class="error">' . $error . '</div><br />';
  55. if ($reg == true)
  56. {
  57. echo 'Дякуємо за успішну реєстрацію.<br />
  58. Логін: ' . $login . '<br />
  59. Пароль: ' . $password . '<br />
  60. E-mail: ' . $email . '<br />';
  61. $password=md5($password);
  62. $q=mysql_query("INSERT INTO `user` SET `login`='$login', `password`='$password', `email`='$email'");
  63. mysql_close($db_server);
  64. echo '<a href="enter.php">Авторизуйтесь</a>';
  65. }
  66. else
  67. {
  68. echo '<form method="post" action="reg.php" />
  69. Логін:  <input type="text" name="login" /><br /><br />
  70. Пароль:  <input type="text" name="password" /><br /><br />
  71. E-mail:  <input type="text" name="email" /><br /><br />
  72. Ведіть код з картинки:  ';
  73. $_SESSION['captcha']=substr(md5(uniqid("")),0,4);
  74. imagepng ($im);
  75. echo '<input type="text" name="captcha" /><br /><br />
  76. <input type="hidden" name="submit" value="yes" />
  77. <input type="submit" value="Реєстрація" />
  78. </form>
  79. <script>
  80. document.getElementById(\'button\').onclick = function()
  81. {
  82. history.back();
  83. return false;
  84. }
  85. </script>';
  86. }
  87. echo '</table></body></html>';
  88. function Valid($error,$param)
  89. {
  90. if (!$error)
  91. {
  92. if ($param == "логін") return $error.='Запоніть обов\'язково поле ' . $param . '.<br />';
  93. elseif ($param == "парол") return $error.='Запоніть обов\'язково поле ' . $param . 'ь.<br />';
  94. }
  95. else
  96. {
  97. $l=0;
  98. if ($param == "логін" && !mysql_query("SELECT * FROM `user` WHERE `login` = '$error'"))
  99. {
  100. return $error.=' - данний логін уже використовується.<br />';
  101. $l=1;
  102. }
  103. elseif ($l == 0)
  104. {
  105. if (preg_match("/[\W]/", $error)) return $error.='В ' . $param. 'i допускаються тільки символи a-z, A-Z, 0-9, _<br />';
  106. else return "";
  107. if (5 > strlen($error) && strlen($error)< 28) return $error.='В ' . $param . 'i повинно бути не менше 5 та не більше 28 символів<br />';
  108. else return "";
  109. }
  110. else return "";
  111. }
  112. }
  113. function ValidEmail($error)
  114. {
  115. if (!$error) return $error='Запоніть обов\'язково поле e-mail.<br />';
  116. else
  117. {
  118. if (!mysql_query("SELECT * FROM `user` WHERE `email` = '$error'")) return $error.=' - данний e-mail уже використовується.<br />';
  119. else
  120. {
  121. if (5 > strlen($error) && strlen($error)< 28) return $error.='В e-mail\'i повинно бути не менше 5 та не більше 28 символів<br />';
  122. else return "";
  123. if (preg_match("/^[-_a-zA-Z0-9]+@[-a-zA-Z0-9]+.[-a-zA-Z0-9]+$/", $error)) return $error.='E-mail має невірний формат.';
  124. else return "";
  125. }
  126. }
  127. }
  128. function ValidCaptcha ($captcha_error)
  129. {
  130. if (empty($_POST['captcha']) && empty($_SESSION['code'])) return 'Введіть код з картинки';
  131. elseif ($_POST['captcha'] != $_SESSION['captcha']) return 'Не вірно введений код з картинки';
  132. else return false;
  133. }
  134. function User ($auto_user)
  135. {
  136. if (!empty($_COOKIE['login']) && !empty($_COOKIE['login']))
  137. {
  138. $login=$_COOKIE['login'];
  139. $password=$_COOKIE['password'];
  140. if (mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'"))
  141. {
  142. return true;
  143. mysql_close($db_server);
  144. }
  145. else return false;
  146. }
  147. else return false;
  148. }
  149. ?>
Где мне отправить заголовок header("Content-type: image/png"); ну или как отобразить картинку капчи? Без заголовка отображает кракозябры вместо капчи, а куда его всунуть, чтобы весь файл как картинка отображался не знаю
- 16.05.2012 / 12:36
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
Не стал мучаться, просто показ каптчи в оттдельный файл запихнул.
- 16.05.2012 / 13:00
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
Было все ок. Вижу, два раза в бд одного и того же пользователя занесло, решил проверить еще раз. Ввел данные в форму, и тут бац. Уже выводит "Не верно введен код с картинки" и ошибку в 109 строке
Undefined variable: _SESSIONНе могу понять, что не так? После удачной реги в файлах ниче не изменял, тогда ошибку не писало, а сейчас на тебе.
reg.php
  1. <?php
  2. $reg=$auto_user=$error=$db_error=false;
  3. $db_server= mysql_connect("openserver","root","");
  4. if (!$db_server) $db_error='Помилка підкулючення до бази данних. Код:' . mysql_error() . '<br />';
  5. if (!mysql_select_db("ukrnet")) $db_error.='Помилка вибору бази данних. Код:' . mysql_error() . '<br />';
  6. if (User($auto_user))
  7. {
  8. header("Location: /");
  9. mysql_close("ukrnet");
  10. exit;
  11. }
  12. elseif (!empty($_POST['submit']))
  13. {
  14. $login=$_POST['login'];
  15. $password=$_POST['password'];
  16. $email=$_POST['email'];
  17. $error.=Valid($login,"логін") . Valid($password,"парол") . ValidEmail($email) . ValidCaptcha($_POST['captcha']) . $db_error;
  18. if ($error) $reg=false;
  19. else $reg=true;
  20. }
  21. echo '<?xml version="1.0" encoding="UTF-8"?>
  22. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  23. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  24. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  25. <head>
  26. <title>Реєстрація</title>
  27. <link rel="stylesheet"  href="../style/style.css" type="text/css" />
  28. </head>
  29. <body>
  30. <table>
  31. <tr><td><img src="../logo.jpg" alt="logo"></td><td></td></tr>
  32. <tr><td colspan=2><font class="menu">Реєстрація</font><a href="nojs.php" class="menu" id="button">Назад</a></td></tr>
  33. <tr><td>';
  34. if ($error) echo '<br /><div class="error">' . $error . '</div><br />';
  35. if ($reg == true)
  36. {
  37. echo 'Дякуємо за успішну реєстрацію.<br />
  38. Логін: ' . $login . '<br />
  39. Пароль: ' . $password . '<br />
  40. E-mail: ' . $email . '<br />';
  41. $password=md5($password);
  42. $q=mysql_query("INSERT INTO `user` SET `login`='$login', `password`='$password', `email`='$email'");
  43. mysql_close($db_server);
  44. echo '<a href="enter.php">Авторизуйтесь</a>';
  45. }
  46. else
  47. {
  48. echo '<form method="post" action="reg.php" />
  49. Логін:  <input type="text" name="login" /><br /><br />
  50. Пароль:  <input type="text" name="password" /><br /><br />
  51. E-mail:  <input type="text" name="email" /><br /><br />
  52. Ведіть код з картинки: <img src="../captcha.php" alt="Каптча не отображается" /><br /><br />
  53. <input type="text" name="captcha" /><br /><br />
  54. <input type="hidden" name="submit" value="yes" />
  55. <input type="submit" value="Реєстрація" />
  56. </form>
  57. <script>
  58. document.getElementById(\'button\').onclick = function()
  59. {
  60. history.back();
  61. return false;
  62. }
  63. </script>';
  64. }
  65. echo '</table></body></html>';
  66. function Valid($error,$param)
  67. {
  68. if (!$error)
  69. {
  70. if ($param == "логін") return $error.='Запоніть обов\'язково поле ' . $param . '.<br />';
  71. elseif ($param == "парол") return $error.='Запоніть обов\'язково поле ' . $param . 'ь.<br />';
  72. }
  73. else
  74. {
  75. $l=0;
  76. if ($param == "логін" && !mysql_query("SELECT * FROM `user` WHERE `login` = '$error'"))
  77. {
  78. return $error.=' - данний логін уже використовується.<br />';
  79. $l=1;
  80. }
  81. elseif ($l == 0)
  82. {
  83. if (preg_match("/[\W]/", $error)) return $error.='В ' . $param. 'i допускаються тільки символи a-z, A-Z, 0-9, _<br />';
  84. else return "";
  85. if (5 > strlen($error) && strlen($error)< 28) return $error.='В ' . $param . 'i повинно бути не менше 5 та не більше 28 символів<br />';
  86. else return "";
  87. }
  88. else return "";
  89. }
  90. }
  91. function ValidEmail($error)
  92. {
  93. if (!$error) return $error='Запоніть обов\'язково поле e-mail.<br />';
  94. else
  95. {
  96. if (!mysql_query("SELECT * FROM `user` WHERE `email` = '$error'")) return $error.=' - данний e-mail уже використовується.<br />';
  97. else
  98. {
  99. if (5 > strlen($error) && strlen($error)< 28) return $error.='В e-mail\'i повинно бути не менше 5 та не більше 28 символів<br />';
  100. else return "";
  101. if (preg_match("/^[-_a-zA-Z0-9]+@[-a-zA-Z0-9]+.[-a-zA-Z0-9]+$/", $error)) return $error.='E-mail має невірний формат.';
  102. else return "";
  103. }
  104. }
  105. }
  106. function ValidCaptcha ($captcha_error)
  107. {
  108. if (empty($_POST['captcha']) && empty($_SESSION['captcha'])) return 'Введіть код з картинки';
  109. elseif ($_POST['captcha'] != $_SESSION['captcha']) return 'Не вірно введений код з картинки';
  110. else return false;
  111. }
  112. function User ($auto_user)
  113. {
  114. if (!empty($_COOKIE['login']) && !empty($_COOKIE['login']))
  115. {
  116. $login=$_COOKIE['login'];
  117. $password=$_COOKIE['password'];
  118. if (mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'"))
  119. {
  120. return true;
  121. mysql_close($db_server);
  122. }
  123. else return false;
  124. }
  125. else return false;
  126. }
  127. ?>
captcha.php
  1. <?php
  2. session_start();
  3. $_SESSION['captcha']=substr(md5(uniqid()),0,4);
  4. header("Cache-Control: no-store, no-cache, must-revalidate");
  5. header("Cache-Control: post-check=0, pre-check=0", false);
  6. header("Pragma: no-cache");
  7. $im=imagecreate(80,20);
  8. $char=$_SESSION['captcha'];
  9. $bg=imagecolorallocate($im,130,151,130);
  10. for ($i=0; $i<=100; $i++)
  11. {
  12. $color=imagecolorallocate($im,rand(140,160),rand(160,180),rand(140,180));
  13. imagesetpixel($im,rand(2,80),rand(2,20),$color);
  14. }
  15. for ($i=0;$i<strlen($char);$i++)
  16. {
  17. $color=imagecolorallocate($im,180,0,0);
  18. $x=5+$i*20;
  19. $y = rand(1, 6);
  20. imagechar ($im, 5, $x, $y, $char[$i], $color);
  21. }
  22. header("Content-type: image/png");
  23. imagepng($im);
  24. ?>

- 16.05.2012 / 14:03
Naik
  Пользователь

Naik 
Сейчас: Offline
Dinisimys1, сворачуй код в спойлер, а то страница уже километровая
- 16.05.2012 / 14:08
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
Naik, ок.
Изменил функцию ValidCaptcha:
Открыть спойлер
Вывод ит "Помилка сесії", тоесть $_SESSION['captcha'] почему-то пустая :-(
- 16.05.2012 / 16:00
TAPAHbl4
  Пользователь

TAPAHbl4 
Сейчас: Offline
Dinisimys1, сессия не стартуется походу в первом скрипте
- 16.05.2012 / 16:21
Dinisimys1
  Пользователь

Dinisimys1 
Сейчас: Offline
Люблю я аннимон.ком, за то,
Что на вопросы долго отвечают,
Я сам решаю все проблемы,
А аниммоновци скучают.
Но если б быстро отвечали,
Решали все задачи вмиг
Чего бы научился я?
Я был бы нубом
Но не судьба,
Спросил - молчат,
а я истериком кричу,
не захожу я в чат,
где допишу, что доучу,
а анимоновци молчат.
Вот так решаю я судьбу,
скрипт изменю, потом смотрю,
в какой строке ошибка там,
но все же науйду я ее,
изменю код то тут, то там,
и радуюсь новым мечтам,
как бы улучшить мне его,
задам вопрос опять я вам,
но решу проблемку эту,
так и учу я пиашпи,
только не обзывайте меня пии...
здесь бан за мат дают,
но и оффтоп, и флуд не пропускают
  :) :-D :hack:

Изменено Dinisimys1 (16.05 / 16:22) (всего 2 раза)
- 16.05.2012 / 17:19
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
белый стих прям гг
__________________
 Магистр Мёда
Наверх  Всего сообщений: 4740
Фильтровать сообщения
Поиск по теме
Файлы топика (129)