Forum Webscript.Ru

Программирование => PHP => Тема начата: Suckerlove от 15 Сентября 2003, 01:06:51

Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 01:06:51
столкнулся с проблемой!
хотел написать собственный скрипт для распознания прользователей:

if(кнопку отправки нажали)
{
  //........
  //........
  //........
  if(пользователь существует)
  {
   !!!!!!!!!!!!!!!!
    Вот тут мне надо открывать другой файл и передать ему значения пользователя(его имя и т.д.), но сделать это надо само собой разумеется без пнопочек, чтобы файл сам отправлял все если аккаунт существует, чтобы пользователю не пришлось еще раз нажимать на кнопку отправки!
   !!!!!!!!!!!!!!!!
  }
}
?>



 

//..............
//..............
//..............
//кнопочка для отправки данных пользователя для проверки существования аккаунта
   
 

Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 15 Сентября 2003, 10:33:36


function check_user()
{
  if (пользователь_существует) {
     return true;
  }
  return false;
}


...



Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 16:45:56
да, но ведь это чать(джавовская) проверяет только существование пользователя. А для меня самое главное отправить автоматически значения. Возможно я не все правильно понял, так как я не знаю, что значит
Заранее благодарен за ответ!
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 15 Сентября 2003, 16:52:24
насколько я понял задачу, ее можно перефразировать так:
при отправке данных проверить - есть пользователь или нет, если пользователь есть - отправить данные, если пользователя нет - ничего не отправлять. Так?
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 17:26:10
Ты понял все правильно, вот вся кострукция, может быть, это поможет тебе понять меня!!!


 
          if ($enter)
      {
        $db   = mysql_connect();
        $str  = "select login, password, priority from Users";
        $str .= " where login = \'$login\'";
        $res  = mysql_db_query("introduction",$str);
        $num  = mysql_num_rows($res);
        if ($num>0)
        {
          $pr = mysql_result($res,0,"priority");
          $pass = mysql_result($res,0,"password");
          if ($pass = $password)
          {
            if ($pr = 0)
            {
              echo"";
              echo"";
              echo"";
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
              Вот тут должна быть вставка, которая будет отсылать значение $login, так как форм отсылает только после нажатия на "субмит"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            }
            else
            {
              echo"
";
              echo"";
              echo"";
              echo"
";
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
              Вот тут тоже должна быть вставка, которая будет отсылать значение $login и $priority, так как форм отсылает только после нажатия на "субмит"
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            }
          }
          else
          {
            echo "Das Kennwort, das Sie eingegeben haben war falsch.";
            echo "Wir bitten Sie um einen neuen Versuch";
          }
        }
        else
        {
          echo"Der von Ihnen eingegebene Account existiert nicht.";
        }
      }
    ?>
 
 
   

      Login:

     


      Password:

     


     


      Registration
   


 
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 15 Сентября 2003, 18:01:50
[OFF]Немецкий язык рулит, жалко, что я его не понимаю.[/OFF]

Мать.. Сегодня не мой день, явно. Че-то я подумал, что у тебя javascript. %)

Слушай, то ли я туплю, то ли у тебя скрипт такой. Объясни мне, зачем тебе отправлять форму 2 раза (что в приципе невозможно)? Что тебе мешает все данные в одну форму внести, и разом их всех отправлять.

Посмотрел свой скрипт, нихрена не понял. Попробуй описать задачу еще раз, чтобы я, глупый человек, ее понял.

И вообще - топик надо в PHP.
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 15 Сентября 2003, 18:07:12
Все, кажись я догнал. У тебя есть скрипт. Он использует некую переменную, допустим $login. Которая передается (в товем случае) из формы методом POST. И тебе надо этот скрипт запустить, но так, чтобы он отработал и не вякнул. А кроме как через форму ты передавать параметры не умеешь, так?
Название: Автоматическая отправка значений!!!
Отправлено: Yukko от 15 Сентября 2003, 18:39:33
[OFF]по ходу чувак порно-сайт лабает... либо службу знакомств[/OFF]
Цитировать
Das Kennwort, das Sie eingegeben haben war falsch.
Wir bitten Sie um einen neuen Versuch

сие означает, что-то типа
Пароль. который вы ввели неверный. Сделайте пожалуйтса новый поиск... (Либо введите свои данные еще раз)
Цитировать
Der von Ihnen eingegebene Account existiert nicht

А это что-то типа
У вас нет эккаунта либо вы не зарегестрированы.

Извини, у меня с английским получше будет, чем с немецким... :)
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 19:16:13
Да, я умею передавать параметры только по средствам формы, так вот, форму мне 2 раза надо отправлять по следующей причине:
сначала заполняется форма и отправляются параметры тому же самому файлу!!!!!!!! то есть название этого файла, что я написал: entrance.php, а если ты успел заметить, форма отправляется на entrance.php, то есть сама себе. Файл загружается еще раз переджавая значение нажатой кнопки, что позволяет загрузиться первой части программы! Если введеного аккаунта нет то опять выводиться окно для заполнения и опять отправляется аккаунт, и так до сих пор, пока заданый аакаунт не оказывается существующим, тогда мне нужно отправить этот аккаунт еще раз только теперь другому файлу, только на этот раз программа отправляет все сама разумеется без нажатия на кнопку, так как это было бы глуподля пользователя два раза подтверждать ввод данных. Так вот, как программе отправить  даные без подтверждения, то есть бюез нажатия на всякие кнопки!
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 19:17:52
Yukko
Я понимаю, что приятно показывать свои знания в языках, но я ведь попросил помощи в другом, так что пожалуйста помоги мне лучше действительно!
Название: Автоматическая отправка значений!!!
Отправлено: Yukko от 15 Сентября 2003, 19:37:03
Suckerlove [off]
вообще-то это оффтопик, но я работаю с голландцами, и они мне содержание веб-страниц на английский с голландского переводят, хотя я и сам это сделать могу, мог бы и ты потрудиться нам перевести, там вообще-то немного было... а немецкий знают меньше чем английский.
Почему вообще тебе должны помогать, когда ты даже самую малость сделать нужным не посчитал???[/off]

Что ты хочешь делать я так и не догнал... но вот  в этой конструкции:

if ($pass = $password)
{
if ($pr = 0)
{
}
else
{
//  Это никогда не выполнится

....
}
}else
{
  //это тоже  
...
}
Потому что в провереке if()
$var = value всегда будет давать true (http://www.alliance.com.ua/smiles/smiles/102.gif)
так как ты делаешь присваивание переменной значения. Проверка правильно выглядит вот так:
if($var == value)
{

}
else
{
//выполнится, если $var  не равнятся value
}
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 15 Сентября 2003, 20:55:28
Это просто проверка аккаунта с переходом на страницу зарегистрированных пользователей, еслри аккаунт подтвердиться и для "специальных пользователей" переход на специальную страницу! Для меня главное отправить значения другому файлу автоматически!!!!!!!!!!!

 А что качается проверки и присвоения значений (=;==), спасибо за то что наставил меня на "истинный путь" :-) Я просто старый паскалист... но это изменю! Еще раз прошу пересмотреть и помочь мне.
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 15 Сентября 2003, 22:56:27
у меня сильное подозрение, что товарищ не понимает, где у него форма, а где - РНР
и наивно полагает, что РНР у него как раз в форме.
Это впеччатление сложилось после беглого просмотра его вопросов и примеров.
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 16 Сентября 2003, 01:34:56
RomikChef
Да нет же, все я понимаю, я же и тестировал и до того места где я не могу разобраться все идет хорошо... Если интересно и есть желание помочь, то я могу объяснить популярно, что мне надо.
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 16 Сентября 2003, 01:49:53
Что бы вам было легче мне помогать я все упрощу и опишу точно!
И так:
название файла: entrance.php


//из предыдущейстроки следует, что форма отсылается тому же файлу: entrance.php
 Login:







Теперь так как форма отправилась сама себе, файл entrance.php получает значение $enter=true, а значит выполняется условие

if ($enter)
{
  $db = mysql_connect();
  $str = "select login, password from Users";
  $str .= " where login = \'$login\'";
  $res = mysql_db_query("introduction",$str);
  $num = mysql_num_rows($res);
// если существует такой аккаунт
  if ($num>0)
  {
    $pass = mysql_result($res,0,"password");
     if ($pass = $password)
// если пароль правильный
    {
// то вот тут мне надо отправить значение $login другому файлу(например room.php)
    }
  }
}
?>

если хоть одно условие не выполнилось, то опять появляется окно с вводом аккаунта и опять заполняется форма и отправляется сама себе опять все проверки и если хоть одна не выполняется, то опять все по новой и т.д. пока все условия не выполнятся, вот тогда мне надо отослать $login
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 16 Сентября 2003, 09:47:36
Если не хочешь гнать в заголовке (header()) свой логин то
Либо


поздравляю вы успешно авторизованы !!!
">




Либо используй сессии....
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 16 Сентября 2003, 12:51:15
1) Самое просто решение передавать данные (и, на самом деле, не самое красивое) -

header("Location: /room.php?login=$login");

Тут главное, чтобы перед header() ничего не выводилось пользователю в броузер.

Но в room.php тебе тоже придется делать проверку. Вообще в любом закрытом файле.

Тут $login предается не методом POST, а методом GET, т.е. обращаться к переменной надо как $_GET[\'login\'].

2) А лучше всего (тут уже говорили) делать так. Если логин не правильный - выводишь по посинения форму авторизации, если правильный - то стартуешь сессию, сохраняешь в ней логин (или чего там тебе надо, чтобы пользователя определить), редиректишь на закрытую зону сайта (редиректишь - header("Location: /close/zone.php")), и там уже в каждом файле проверяешь существование сессии. Если сессия есть - выводишь информацию, если нет - отправляешь на страницу с формой авторизации.

3) Купи книжку по ПХП
4) http://phpfaq.ru
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 16 Сентября 2003, 15:41:32
спасибо большое за все, ссылка была очень познавательной, один только вопрос
,Croaker, почему ты сказал, что header("Location: /room.php?login=$login"); некрасиво? И что значит в строке: room.php?login=$login вопросительный знак?
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 16 Сентября 2003, 15:52:21
Ну пока его нет я вставлю свои пять копеек
вопросительный знак означает что здесь адрес заканчивается и после него идут переменные отправленные методом GET...
А некрасиво, потому как в данном случае ты выставляешь свой логин на всеобщее обозрение ...тогда зачем вообще авторизация надо?
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 16 Сентября 2003, 15:53:15
1) Вопросительный знак разделяет название файла, и параметры, которые передаются потом. Сами параметры разделяются знаком &

т.е. file.php?var1=var1&var2=var2


2) Потому, что любой пользователь-злоумышленник будет знать, что у тебя есть переменная $login в скрипте. А пользователю такое знать не положено. Потом, - если ты будешь передавать данные POST`ом , опять тебе так же с редиректом выеживаться? Могу еще 100 причин придумать. Потрать 7 доллров на книжку, и один день на изучение сессий, и будет тебе счастье. :)
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 16 Сентября 2003, 15:54:11
MrGreeN

[OFF] :)  пока писал..[/OFF]
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 16 Сентября 2003, 16:30:16
RomikChef

По поводу:
Цитировать
RomikChef:


читай внимательнее предыдущие посты.
(т.к. вопрос изначально был в форуме html - я грешным делом подумал, что у него с javascript проблемы).


Цитировать
RomikChef:
по-моему, здесь очередной раз вместо реальной помощи помогают человеку гланды через задний проход вырезать


помоги сам
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 16 Сентября 2003, 16:38:36
Ну почему же сразу через задний проход...
Человеку нужен результат и прямо сейчас....он его получит...а потом, когда всё-таки немного изучит основы, сделает и с сессиями и с include (т.к. у него всё по-моему в одном месте лежит)...
Направление то ему дали...
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 17 Сентября 2003, 01:37:12
сессии я прочитал, большое спасибо за помощь, теперь я зхнаю, как сохранять параметры для следующих запросов браузера!!! Очень позновательно, а главное помогло, да и теперь вопрос:
можно ли мне сохранить параметры в сессии, а потом написать просто header("Location: /room.php"); без всяких вопросительных знаков, а потом в room.php обращаться к переменной из сессии?
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 17 Сентября 2003, 10:09:44
Suckerlove
можно...т.к. в данном случае (если хочешь редирект автоматический) по другому никак...
RomikChef
ну ну, и обьясни мне в чём Я или КТО неправ ?
в том что если передать заголовок на другой скрипт в течении сессии, то сессионные переменные , т.е. конструкция типа:
//основной скрипт
$_SESSION[\'login\']="login";
header("location: room.php");
//room.php
echo $_SESSION[\'login\'];
не выведет "login" ?

Или предлагаешь ему полностью переписать скрипт дабы работал не через задний проход ?...он это уже понял, но сомневаюсь что  это сделает в ближайшее время...сам же обратил внимание на его уровень подготовки...
Помочь реально ему это сделать тоже трудновато, т.к. структура сайта (или чего у него там) ни тебе ни крокеру ни мне неизвестна как и конечная цель тоже...
А результат то ему нужен сейчас а проблемы надо решать по мере их поступления...
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 17 Сентября 2003, 10:34:27
Зеленый, при чем тут логин?
Ему надо передавать все данные формы.
а не только логин.
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 17 Сентября 2003, 11:04:51
Не ну это как пример...
нечего ему не мешает также работать и с $priority и др. переменными ...
Хотя в данном случае я бы вывел форму приветствия и в ней хиден полями отправил бы все переменные....
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 17 Сентября 2003, 11:12:09
Цитировать
RomikChef:
а ни единого сомнения в правильности своего подхода он не высказывал

[OFF]
Знаешь Ромик. Ты идеалист. У тебя все должно быть правильно, прям таки идеально. Скрипты, не выдающие ошибок, когда стоит error_reporting(E_ALL), прямые и лаконичные ф-ции, демократия и мир во всем мире. Но вот только бывает, что человеку нужно решить конкретную проблему, прям вот сейчас, потому, что сдавать работу надо, потому, что начальство недовольно, да в общем и не важно - почему. Так вот, сколько его не пичкай теориями о проблемах мировой революции - главное для него - его конкретная проблема. Он сам потом допрет - почему так делать, как сделал он, не правильно, вредно, и проч. Это со временем придет само. И не надо ему говорить, что он типа ламер, потому что делает все не по понятиям. Он сделает по понятиям позже (если совсем не дурак), а сейчас ему просто нужно, чтобы работало. Если можешь помочь - помоги, если нечего сказать по делу - может лучше промолчать (без обид)?

И вообще подобный флейм уже не первый раз затевается. А смысла в нем - ноль.
[/OFF]

Теперь по делу.
Цитировать
RomikChef:
Крокер, ну вот хоть ты объясни - на кой тут сессии?

авторизация у него
Цитировать
RomikChef:
Крокер, ты меня прости, но ты дурак.

[OFF]
не прощу
[/OFF]

Цитировать
RomikChef:
существование юзера на СЕРВЕРЕ можно сделать на компе у ЮЗЕРА

Еще раз повторю. С начала я думал, что это JS. Судя по квалификаии тов. Suckerlove можно было предположить, что он авторизацию может попробовать на JS сделать. Показать как ТАКОЕ делают? Я понимаю, что это изврат но речь сейчас не об этом. Вопрос-то у человека был совсем другой.


Suckerlove, у тебя еще вопросы остались?
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 17 Сентября 2003, 11:37:15
Кажется, я был неправ.
прошу прощения.
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 17 Сентября 2003, 11:38:55
меня сбило с толку это его - "отправить в другой скрипт" без всякого указания на то, что из него надо будет передавать дальше.
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 17 Сентября 2003, 12:22:27
Цитировать
Suckerlove:
можно ли мне сохранить параметры в сессии, а потом написать просто header("Location: /room.php"); без всяких вопросительных знаков, а потом в room.php обращаться к переменной из сессии?

Можно, если включены куки.
Если куки не работают, то надо добавлять идентификатор сессии к адресу.
Это, кажется, в факе написано.
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 18 Сентября 2003, 00:36:22
Croaker ,MrGreeN
большое спасибо за помощь мне все ясно.
RomikChef
уважение за то, что можешь признать свои ошибки, нго мы не будем устраивать палемику...
Маленькое НО: насколько я знаю, заголовки нельзя отправлять после отправки каких либо данных, т.е. после уже отосланных хедеров. Может кто-нить подскажет как мне вставить свой хедер так, чтобы он был первым, да и вообще, чтобы он сработал! Кстати, у меня файл отправляет форму самому себе для проверки(если не ясно прошу посмотреть пост со скриптом) после того как форма отправила данные самой себе, заново загруженный скрипт будет считать следующие отправленные хедеры как новые или они уже будут не первые, так как скрипт только что отправил форму?
Название: Автоматическая отправка значений!!!
Отправлено: Suckerlove от 18 Сентября 2003, 00:39:14
З.Ы. Скрипт мой - простая авторизация пользователя!
Мне нужно, что бы он проверял существует ли аккаунт, потом проверить совпадает-ли пароль и потом проверить приоритет пользователя. Есмли приоритет равен 0 то загрузить одну страницу, если приоритет любой другой, то загрузить другую страницу!
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 18 Сентября 2003, 10:25:34
Цитировать
после того как форма отправила данные самой себе, заново загруженный скрипт будет считать следующие отправленные хедеры как новые или они уже будут не первые, так как скрипт только что отправил форму?

Ну вот, а говоришь, что все прочел http://phpfaq.ru
Загляни на http://phpfaq.ru/na_tanke и если у тебя еще останутся вопросы такого рода, то я постараюсь тебе на них ответить подробнее.
Название: Автоматическая отправка значений!!!
Отправлено: Croaker от 18 Сентября 2003, 10:35:07
Цитировать
Suckerlove:
нельзя отправлять после отправки каких либо данных, т.е. после уже отосланных хедеров.


Зголовок и есть - хедер (от сл. header). Ты можешь (т.е. на самом деле так происходит всегда) отправить несколько заголовков одновременно.

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  - это заголовок
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); - это тоже заголовок

их можно отправить друг за другом. Главное, чтобы перед ними небыло никакого вывода, НЕ являющегося залоговком (например echo "Output").

Прочитай маны по протоколу HTTP. Иначе тебе не будет понятно, почему это выражение

Цитировать
Suckerlove:
заново загруженный скрипт будет считать следующие отправленные хедеры как новые или они уже будут не первые, так как скрипт только что отправил форму?


не правильно по определению.

Цитировать
Suckerlove:
то загрузить другую страницу


PHP умеет подключать страницы. Очень полезные ф-ции
require()
include()

Просто посмотри примеры в мане PHP`шном
Название: Автоматическая отправка значений!!!
Отправлено: MrGreeN от 18 Сентября 2003, 10:41:03
я вообще понять немогу, зачем ему тут заголовки....
срипт построен так, что прямо напрашивается конструкция с include
Название: Автоматическая отправка значений!!!
Отправлено: Меняздесьдавнонет от 18 Сентября 2003, 10:50:39
MrGreeN
Инклюд - это частный случай.
Ну не бывайт сайтов из одной страницы.
Это значит, что все равно придется ходить и проверять на каждой.
Вот эту часть надо человеку объяснить. Сессии, проверка приоритета в самам начале скрипта и так далее.

Ну, а если у него надо показывать только одну страницу, то да - инклюд нужной и никаких сессий