Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 13:52   #1
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию Форма не передает данные

Собственно, не могу понять в чем проблема, есть форма и есть файл, переменные из формы приходят пустые.
Форма:
PHP код:
<form name="login_user" action="login.php" method="post">
    <
input type="text" name="login" maxlength="16" />
    <
input type="password" name="pass" maxlength="16" />
    <
input type="submit" name="login_usr" value="Login" />
    </
form
и файл в который все это приходит
PHP код:
<?php
session_start
();
define('INCLUDE_CHECK',true);
include 
"config/dbconf.php";

if(empty(
$_POST['login']))
{
    exit(
'<p>exit1</p>');
}

if(empty(
$_POST['pass']))
{
    exit(
'<p>exit2</p>');
}

$login stripslashes($login);
$login htmlspecialchars($login);
$login trim($login);

$pass stripslashes($pass);
$pass htmlspecialchars($pass);
$pass trim($pass);

$passd md5($pass) . md5($pass);
$login mysql_real_escape_string($login);

$query "SELECT `id`, `group`, `ulang` FROM `users` WHERE `login`='$login' AND `pass`='$passd' LIMIT 1";
$sql mysql_query($query);
$rows mysql_num_rows($sql);
if(
$rows == 0)
{
    exit(
'<p>exit3</p>');
}
$row mysql_fetch_array($sql);
$uid $row['id'];
$group $row['group'];
$ulang $row['ulang'];

$_SESSION['uid'] = $uid;
$_SESSION['gr'] = $group;
$_SESSION['ul'] = $ulang;
$_SESSION['lg'] = $login;

echo 
'<meta http-equiv="refresh" content="0";url="index.php">';
?>
файл выдает сообщение exit1, тоесть из формы через пост ничего не приходит.
помогите, в чем может быть проблема?
AvernuS вне форума Ответить с цитированием
Старый 06.07.2011, 14:35   #2
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

на первый взгляд все верно.
Проверьте в самом начале Login.php


if($_POST['login_usr']) { echo "wroks";}
else { echo "fail";}

тем самым проверите была ли нажата кнопка "login", после чего построчно проверьте все остальное.
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 06.07.2011, 14:37   #3
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

и да, на всякий случай дайте инпутам айдишники и свйоство value пустое
ну типа
<input type="text" name="login" id="login" maxlength="16" value=""/>
<input type="password" name="pass" id="pass" maxlength="16" value="" />
<input type="submit" name="login_usr" id="login_usr" value="Login" />
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 06.07.2011, 15:03   #4
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

Сделал проверку для кнопки как вы и сказали, выдает фейл.
не могу понять почему, другая подобная форма (для регистрации) написанная также только больше полей и названия у них немного другие работает нормально
AvernuS вне форума Ответить с цитированием
Старый 06.07.2011, 15:19   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Внутри файла dbconf.php что с $_POST делаете? Небось чистите?
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 06.07.2011, 15:23   #6
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
Внутри файла dbconf.php что с $_POST делаете? Небось чистите?
dbconf.php
PHP код:
<?php
if(!defined('INCLUDE_CHECK')) die('У вас нет прав на выполнение этого файла!');

$dbhost "localhost";
$dbuser "root";
$dbpass "rootpass";
$dbname "ndv";

$dbconnect mysql_connect($dbhost$dbuser$dbpass);
mysql_select_db($dbname$dbconnect);
mysql_set_charset('cp1251');
?>
Но теперь заметил одну маленькую особенность, если поле пароль оставить пустым в форме, то выдает что кнопка нажате и соответсвенно 2 и 3 ошибки (переменная с паролем пустая и не находит совпадений в базе).
В чем может быть дело?
AvernuS вне форума Ответить с цитированием
Старый 06.07.2011, 16:24   #7
dacorp
Пользователь
 
Регистрация: 12.06.2010
Сообщений: 48
По умолчанию

Смотрите, Вы сравниваете POST данные, но не присваиваете их какой-тобо переменной.

Код:
<?
if(empty($_POST['login'])) 
{ 
    exit('<p>exit1</p>'); 
} 

if(empty($_POST['pass'])) 
{ 
    exit('<p>exit2</p>'); 
}
?>
Добавьте строки:
Код:
<?
$login=$_Post['login'];
$pass=$_Post['pass'];
?>
dacorp вне форума Ответить с цитированием
Старый 06.07.2011, 16:40   #8
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

Цитата:
Сообщение от dacorp Посмотреть сообщение
Смотрите, Вы сравниваете POST данные, но не присваиваете их какой-тобо переменной.

Код:
<?
if(empty($_POST['login'])) 
{ 
    exit('<p>exit1</p>'); 
} 

if(empty($_POST['pass'])) 
{ 
    exit('<p>exit2</p>'); 
}
?>
Добавьте строки:
Код:
<?
$login=$_Post['login'];
$pass=$_Post['pass'];
?>
это я уже давно исправил и строчки эти дописал, но проблема остается в том, что если поле пароль в форме отправить пустым, то файл принимает то что написано в поле логин и говорит, что кнопка нажата, а если заполнить и логин и пароль, то говорит, что кнопка не нажималась и данные не принимаются. я это описывал в предыдущем сообщении
AvernuS вне форума Ответить с цитированием
Старый 06.07.2011, 17:44   #9
dacorp
Пользователь
 
Регистрация: 12.06.2010
Сообщений: 48
По умолчанию

Цитата:
Сообщение от AvernuS Посмотреть сообщение
это я уже давно исправил и строчки эти дописал, но проблема остается в том, что если поле пароль в форме отправить пустым, то файл принимает то что написано в поле логин и говорит, что кнопка нажата, а если заполнить и логин и пароль, то говорит, что кнопка не нажималась и данные не принимаются. я это описывал в предыдущем сообщении
Извините, как-то пропустил) Взял Ваш пример, переделал под 1 файл. У меня всё работает:

PHP код:
<form action="index.php" method="post">
    <input type="text" name="login" maxlength="16" />
    <input type="password" name="pass" maxlength="16" />
    <input type="submit" name="login_usr" value="Login" />
</form>

<?

$login
=trim($_POST['login']);
$pass=trim($_POST['pass']);

if(empty(
$login))
{
    exit(
'<p>Login error</p>');
}

if(empty(
$pass))
{
    exit(
'<p>Password error</p>');
}

$login htmlspecialchars(stripslashes($login));

$pass htmlspecialchars(stripslashes($pass));

Echo 
"Login and Pass readed:<br>$login<br>$pass";
?>
Если я конечно правильно понял, что Вы хотели)
dacorp вне форума Ответить с цитированием
Старый 06.07.2011, 20:05   #10
AvernuS
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 23
По умолчанию

Спасибо, такое решение помогло. Но почему не работало, когда было 2 файла - так и не понял.
AvernuS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SendMessage вместо текста передает иероглефы BuT@JL Общие вопросы Delphi 18 15.04.2011 18:58
webbrowser не передает GET boostman Работа с сетью в Delphi 1 31.01.2011 10:28
Данные по столбцам - упорядочить данные к друг другу PetroD Microsoft Office Excel 10 07.08.2010 12:30
поток, который по завершению (Terminate) передает в основную форму информацию о файле 1Andrey1 Общие вопросы Delphi 5 10.09.2007 19:40