За последние 24 часа нас посетили 59725 программистов и 1852 робота. Сейчас ищут 1126 программистов ...

Данные не заносятся в БД, но ошибки нет.

Тема в разделе "PHP и базы данных", создана пользователем Kaner, 17 фев 2011.

  1. Kaner

    Kaner Активный пользователь

    С нами с:
    6 янв 2011
    Сообщения:
    58
    Симпатии:
    0
    Форма регистрации:
    PHP:
    1. <?php include('header.php') ?>
    2. <center>
    3. <table bgcolor="#C0C0C0" border="3" bordercolor="#858585"><tr><td><font size="5">Регистрация нового пользователя:</font></td></tr></table>
    4. <br>
    5. <form action="register_new.php" method="POST">
    6. <table bgcolor="#C0C0C0" border="3" bordercolor="#858585">
    7. <tr><td>Логин(Ник)</td><td><input type="text" name="nickname" size="25"></td></tr>
    8. <tr><td>Пароль<br>(более 6 символов)</td><td><input type="password" name="pass" size="25"></td></tr>
    9. <tr><td>Повторите пароль</td><td><input type="password" name="re_pass" size="25"></td></tr>
    10. <tr><td>E-mail</td><td><input type="text" name="email" size="25"></td></tr>
    11. <tr><td>Повторите E-mail</td><td><input type="text" name="email2" size="25"></td></tr>
    12. <tr><td>Страна</td><td><input type="text" name="country" size="25"></td></tr>
    13. <tr><td>Из какой вы области</td><td><input type="text" name="obl" size="25"></td></tr>
    14. <tr><td>Дата рождения(гггг-мм-дд)</td><td><input type="text" name="birthday" size="25"></td></tr>
    15. <tr><td colspan="2"><center><input type="SUBMIT" name="submit" value="Регистрация"></center></td></tr>
    16. </table>
    17. </form>
    18. <font color="#FF0000">
    19. *Все поля являются обязательными к заполнению!
    20. </font>
    21. </center>
    22.  
    Файл register_new.php :
    PHP:
    1. <?php
    2. $nickname=$_POST['nickname'];
    3. $password1=$_POST['pass'];
    4. $password2=$_POST['re_pass'];
    5. $email=$_POST['email'];
    6. $email2=$_POST['email2'];
    7. $country=$_POST['country'];
    8. $obl=$_POST['obl'];
    9. $birthday=$_POST['birthday'];
    10. include('header.php');
    11. try
    12. {
    13.  if(!filled_out($_POST))
    14.  {
    15.  throw new Exception('Заполнены не все поля.Пожалуйста, заполните форму вновь.');
    16.  }
    17.  if(!valid_email($email))
    18.  {
    19.  throw new Exception('Недопустимый адрес электронной почты. Пожалуйста, вернитесь на форму и повторите попытку.');
    20.  }
    21.  if((strlen($password1)<6) || (strlen($password1)>16))
    22.  {
    23.  throw new Exception('Пароль должен содержать от 6 до 16 символов.');
    24.  }
    25.  if($password1 != $password2)
    26.  {
    27.  throw new Exception ('Введенные вами пароли отличаются.Повторите ввод.');
    28.  }
    29.  if($email != $email2)
    30.  {
    31.  throw new Exception ('Введенные адреса эл. почты отличаются.Повторите ввод.');
    32.  }
    33.  register($nickname,$password1,$email,$country,$obl,$birthday);
    34.  
    35.  $_SESSION['valid_user']=$nickname;
    36.  echo 'Регистрация прошла успешно!';
    37. }
    38. catch(Exception $e)
    39. {
    40. echo"<h1>Возникла проблема:</h1>";
    41. echo $e->getMessage();
    42. }
    43. ?>
    44.  
    Файл header.php :
    PHP:
    1. <?php
    2. include('functions.php');
    3. echo"<body background=images/fon_son.jpg>
    4. <a href=register.php ><font color=RED>Зарегистрироваться</font></a>
    5. <center><table border=5>
    6. <tr><td colspan=8><img src=images/logo_son.jpg align=TOP></td></tr>
    7. <tr bgcolor=#C0C0C0><td><center>Главная страница</center></td><td><center>Цели сайта</center></td><td><center>Поиск</center></td>
    8. <td><center>Форум</center></td><td><center>FFFFFF</center></td>
    9. <td><center>FFFFF</center></td><td><center>FFFFF</center></td>
    10. <td><center>Войти</center></td></tr>
    11. </table></center></body>";
    12.  
    13. check_valid_user();
    14. echo"<br><br>";
    15. ?>
    Файл functions.php :
    PHP:
    1. <?php
    2. function db_connect()
    3. {
    4. $result=new mysqli('localhost','root','1','chtovamsnilos');
    5. if(!$result)
    6. {
    7. throw new Exception ('Невозможно подключиться к серверу баз данных');
    8. }
    9. else
    10. {
    11. return $result;
    12. }
    13. }
    14. function filled_out($form_vars)
    15. {
    16. foreach($form_vars as $key => $value)
    17. {
    18.  if((!isset($key)) || ($value == ''))
    19.  return false;
    20. }
    21.  return true;
    22. }
    23. function valid_email($address)
    24. {
    25. if(ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $address))
    26. {
    27. return true;
    28. }
    29. else
    30. {
    31. return false;
    32. }
    33. }
    34. function register($nickname,$password,$email,$country,$obl,$birthday)
    35. {
    36. $conn= db_connect();
    37. $result=$conn->query("select * from userlist where nickname='".$nickname."'");
    38. if(!$result)
    39.  {
    40.  throw new Exception ('В данный момнет невозможно выполнить запрос к БД.');
    41.  }
    42. if($result->num_rows>0)
    43.  {
    44. throw new Exception ('Это имя уже занято, пожалуйста выберите себе другое имя.');
    45.  }
    46.  $password1=sha1($password);
    47. $result=$conn->query("insert into userlist values ('".$nickname."','".$password1."','".$email."','".$country."','".$obl."','".$birthday."')");
    48. return true;
    49. }
    50. function check_valid_user()
    51. {
    52. if(isset($_SESSION['valid_user']))
    53. {
    54. echo "<center><table><tr><td colspan=7><font color=#FF0000> Вы вошли в систему под именем ".$_SESSION['valid_user'].".</font> </td></tr></table></center> <br>";
    55. }
    56. else
    57. {
    58. echo "<center><table><tr><td colspan=7><font color=#800000> Вы не вошли в систему.</font> </td></tr></table></center>";
    59. //exit;
    60. }
    61. }
    62. function login($nickname,$password)
    63. {
    64. $conn=db_connect;
    65. $password1=sha1($password);
    66. $result=$conn->query("select * from userlist where nickname='".$nickname."' and password='".$password1."'");
    67. if(!$result)
    68.  {
    69.  throw new Exception ('Вход в систему невозможен.');
    70.  }
    71. if($result->num_rows>0)
    72.  {
    73.  return true;
    74.  }
    75.  else
    76.  { throw new Exception ('Вход в систему невозможен.');
    77.  }
    78. }
    79. ?>
    После регистрации пишет: Вы успешно зарегистрировались.
    Функция check_valid_user() выводит: Вы вошли как...

    Но бд остаётся пуста.
     
  2. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  3. Kaner

    Kaner Активный пользователь

    С нами с:
    6 янв 2011
    Сообщения:
    58
    Симпатии:
    0
    Пишет Incorrect string value for column country.
    Как сделать чтобы воспринималась кириллица?
     
  4. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    SET NAMES "нужная кодировка"
    после коннекта
     
  5. Kaner

    Kaner Активный пользователь

    С нами с:
    6 янв 2011
    Сообщения:
    58
    Симпатии:
    0
    Padaboo
    Спасибо большое за помощь!=)
    И ещё вопрос теперь всё добавляется но при попытке залогиниться выдаёт ошибку в функции логин (строка с ошибкой выделена жирным):
    PHP:
    1. function login($nickname,$password)
    2. {
    3. $conn=db_connect;
    4. $password1=sha1($password);
    5. [b]$result=$conn->query("select * from userlist where nickname='".$nickname."' and password='".$password1."'");[/b]
    6. if(!$result)
    7.  {
    8.  throw new Exception ('Ошибка');
    9.  }
    10. if($result->num_rows>0)
    11.  {
    12.  return true;
    13.  }
    14.  else
    15.  { throw new Exception ('Такого логина нет.');
    16.  }
    17. }
    Ошибка:Fatal error. Call to a member function query() on a non-object in...
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1