Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Скрипт регистрации!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Проблема с БД
Zeross
Отправлено: 25 Августа, 2014 - 02:54:21
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




В общем люди! решил написать свой первый скрипт, нормальный скрипт! вроде как все работает, но с формы в базу передаются пустые значения. Я уже все мозги себе вынес пытаясь отыскать ошибку, но все в пустую. В общем нужна помощь! Напомню что я пытаюсь сделать регистрацию)))

Форма отправки данных:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div id="registration">
  3.     <form action="reg_action.php" method="post">
  4.         <label>Ваше имя:<input name="name" type="text" maxlength="30" required /></label>        <label>Ник:<input name="login" type="text" maxlength="24" required /></label>        <label>E-mail:<input name="email" type="text" maxlength="40" required /></label>        <label>Пароль<input name="pass" type="password" required/></label>        <input name="bottom" type="submit" value="Отправить" />
  5.     </form>
  6. </div>
  7.  


Функции для обработки
PHP:
скопировать код в буфер обмена
  1.  
  2. require('db.php');    
  3. function clear_int(){
  4.     return abs((int)$data);
  5. }
  6. function clear_str(){
  7.     global $link;
  8.     return mysqli_real_escape_string($link, trim(strip_tags($data)));
  9. }      
  10. function reg_user($name, $login, $email, $pass){
  11.     $sql = "INSERT INTO user (name, login, email, pass)
  12.                            VALUES ('$name','$login','$email','$pass')";
  13.     if($_SERVER[REQUEST_METHOD] == POST){
  14.         global $link;
  15.         $query = mysqli_query($link, $sql) or die (mysqli_error($link));
  16.     }
  17. }
  18.  


обработчик PHP
PHP:
скопировать код в буфер обмена
  1.  
  2. require 'lib.php';
  3. require 'db.php';
  4.  
  5.         $name = clear_str($_POST['name']);
  6.     $login = clear_str($_POST['login']);
  7.     $email = clear_str($_POST['email']);
  8.     $pass = clear_str($_POST['pass']);
  9.     if(!reg_user($name, $login, $email, $pass)){
  10.         echo 'Вы успешно зарегистрировались на сайте';
  11.        
  12.     }else{
  13.         echo 'произошла ошибка при регистрации';
  14.     }
  15.  


Вот такой простенький скрипт, но мозг вынес мне полностью! Заранее благодарен.
 
 Top
dcc0
Отправлено: 25 Августа, 2014 - 09:04:06
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




А функция правильно работает? Передача и возврат значения.
Т.е. не должно ли быть там


И вот с этой строчкой советую разобраться:


А зачем это?


Непонятно что и для чего сделано.
Вообще ничего непонятно.

(Отредактировано автором: 25 Августа, 2014 - 09:09:57)



-----
Март 2021. Бросил программирование
 
 Top
esterio
Отправлено: 25 Августа, 2014 - 11:01:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Zeross пишет:
if($_SERVER['REQUEST_METHOD'] == 'POST'){


http://phpfaq.ru/debug

(Отредактировано автором: 25 Августа, 2014 - 11:03:38)

 
 Top
Zeross
Отправлено: 25 Августа, 2014 - 16:04:12
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Цитата:
И вот с этой строчкой советую разобраться:


а что с этой строчкой не так? эта строка фильтрует данные отправлены через форму, что бы пользователи случайно JS не запихнули в форму.

Цитата:
А зачем это?


это к скрипту не относится, это функция на будущие, на нее не смотри.

Цитата:
Непонятно что и для чего сделано.
Вообще ничего непонятно.

Если не понятно, зачем тогда советовать! этот скрипт прост как носки, только ошибку найти не могу, вроде как все правильно!
 
 Top
IGORtrue
Отправлено: 25 Августа, 2014 - 16:14:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Zeross пишет:
а что с этой строчкой не так? эта строка фильтрует данные отправлены через форму, что бы пользователи случайно JS не запихнули в форму.

Там не в строчке проблема, а в том что, вы передаёте данные в функцию:

А не принимаете:

Замените на:
PHP:
скопировать код в буфер обмена
  1.  
  2. function clear_str($data){
  3.     global $link;
  4.     return mysqli_real_escape_string($link, trim(strip_tags($data)));
  5. }    
  6.  

Не понимаю зачем инверсия тут, и в самой функции добавьте return true\false:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(!reg_user($name, $login, $email, $pass))
  3.  

Что должно делать это:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SERVER[REQUEST_METHOD] == POST){
  3.         global $link;
  4.         $query = mysqli_query($link, $sql) or die (mysqli_error($link));
  5.     }
  6.  

(Отредактировано автором: 25 Августа, 2014 - 16:15:22)

 
 Top
Zeross
Отправлено: 25 Августа, 2014 - 17:22:19
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Цитата:
Что должно делать это:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($_SERVER[REQUEST_METHOD] == POST){
  3.         global $link;
  4.         $query = mysqli_query($link, $sql) or die (mysqli_error($link));
  5.     }
  6.  


Если данные с формы пришли методом пост, то выполняем Sql запрос.
PHP:
скопировать код в буфер обмена
  1.  
  2. $sql = "INSERT INTO user (name, login, email, pass)
  3.                           VALUES ('$name','$login','$email','$pass')";

(Добавление)
установил денвер, там данные вообще не идут в базу, пишет ошибку "Unknown column '' in 'field list'"; че за бред?
(Добавление)
Кароче код исправил, теперь данные приходят, но в базе не отображает русские символы, то есть в поле имя ввожу русское имя, в базе оно не отображается, на английском все норм! как исправить?
(Добавление)
Кароче код исправил, теперь данные приходят, но в базе не отображает русские символы, то есть в поле имя ввожу русское имя, в базе оно не отображается, на английском все норм! как исправить?
 
 Top
IGORtrue
Отправлено: 25 Августа, 2014 - 19:41:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Zeross пишет:
Кароче код исправил, теперь данные приходят, но в базе не отображает русские символы, то есть в поле имя ввожу русское имя, в базе оно не отображается, на английском все норм! как исправить?

А там можно создать бд в другой кодировке? Я уже забыл, помоему utf-8 должно быть
 
 Top
Zeross
Отправлено: 25 Августа, 2014 - 20:04:24
Post Id


Новичок


Покинул форум
Сообщений всего: 53
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




IGORtrue пишет:
Zeross пишет:
Кароче код исправил, теперь данные приходят, но в базе не отображает русские символы, то есть в поле имя ввожу русское имя, в базе оно не отображается, на английском все норм! как исправить?

А там можно создать бд в другой кодировке? Я уже забыл, помоему utf-8 должно быть

у меня и так стоит кодировка utf8_general_si
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB