Помощник
|
Call to undefined function check() |
Lotus
|
Сообщение
#1
|
||
|
|
||
|
|||
MetSerp |
9.4.2009, 13:13;
Ответить: MetSerp
Сообщение
#2
|
|
Первая строка фаила,где нужна проверка сессии. а функция до этого нигде не объявлялась как я понимаю?:sarcastic: [PHP]<?php session_start(); $nick = isset($_POST['nick']) ? $_POST['nick'] : ''; $pass = isset($_POST['pass']) ? $_POST['pass'] : ''; @include ("connect.php"); if (empty($pass)||empty($nick)) error("Не указан логин или пароль"); $sql = "select * from Users where login=$nick"; if ($show = mysql_query($sql)) { $a = mysql_fetch_array($show); if ($a['pass']!=$pass) { error("Не верное сочетание логин - пароль"); } else { session_register("nick","pass"); } } else { error("Ошибка запроса к базе данных"); } ?>[/PHP] вот так попробуйте;) |
|
|
Webmaster_hb |
9.4.2009, 13:14;
Ответить: Webmaster_hb
Сообщение
#3
|
|
а так ?
[PHP]<? session_start(); include ("check.php"); check(); ?> [/PHP] |
|
|
Lotus
|
Сообщение
#4
|
|
Оба случая приводят к одному и тому же исходу.
Подключил check.php,вставил код MetSerp, -а,все равно функция не распознается. MetSerp, кстати,а где в вашем коде присутствует название функции?;) Вернул обратно старый код,вставил инклудом check.php-заработало) Спасибо за помошь) Правда есть небольшой нонсонс-сессия не работает :sarcastic: На страницы,в которых стоит в начале функция проверки,можно попасть без авторизации. Интересно,почему так.Браузер перегрузил,с сайта вышел.Или сессия еще жива? |
|
|
MetSerp |
9.4.2009, 13:48;
Ответить: MetSerp
Сообщение
#5
|
|
MetSerp, кстати,а где в вашем коде присутствует название функции? нету ее. я использовал код без функции. Ваша ошибка была в попытке вызвать код без объявления функции. Когда вы сделали: [php]<? session_start(); include ("check.php"); check(); ?> [/php]заработало потому что функция вызывается после того как подключен файл ее описывающий. то есть если сделать [php]<? session_start(); check(); include ("check.php"); ?> [/php]то опять вызовет эту же ошибку. Суть уловили?;) Нельзя приговить грибной суп если у вас нет грибов. В вашем случае вы ставите кастрюлю достаете книгу с рецептами и читаете "положить грибы" (объявляете об использовании функции check() ). Но вот грибы в кастрюлю не ложите (неописана функция) в итоге грибной суп неполучается (не работает):sarcastic: функция проверки,можно попасть без авторизации. конечно можно, вы ведь не останавливаете выполнения скрипта даже если данные введены неверно. Вы просто останавливаете человека на входе в охраняемую вами зону и говорите " Вы кто ? " Он отвечает "Пупкин Василий" И вместо того чтобы закрыть дверь вы отвечаете " Я вас незнаю вам сюда нельзя" и впускаете его туда куда нельзя открывая перед ним дверь ;) |
|
|
Lotus
|
Сообщение
#6
|
|
нету ее. я использовал код без функции. Ваша ошибка была в попытке вызвать код без объявления функции. Когда вы сделали: [php]<? session_start(); include ("check.php"); check(); ?> [/php]заработало потому что функция вызывается после того как подключен файл ее описывающий. то есть если сделать [php]<? session_start(); check(); include ("check.php"); ?> [/php]то опять вызовет эту же ошибку. Суть уловили?;) Нельзя приговить грибной суп если у вас нет грибов. В вашем случае вы ставите кастрюлю достаете книгу с рецептами и читаете "положить грибы" (объявляете об использовании функции check() ). Но вот грибы в кастрюлю не ложите (неописана функция) в итоге грибной суп неполучается (не работает):sarcastic: конечно можно, вы ведь не останавливаете выполнения скрипта даже если данные введены неверно. Вы просто останавливаете человека на входе в охраняемую вами зону и говорите " Вы кто ? " Он отвечает "Пупкин Василий" И вместо того чтобы закрыть дверь вы отвечаете " Я вас незнаю вам сюда нельзя" и впускаете его туда куда нельзя открывая перед ним дверь ;) За многопостинг извеняюсь,будем исправляться) Насчет грибного супа все понял))Следуя из ваших слов,я немного ужал свой код,и просто подключил check инклудом,без названия.Работает.^_^ Насчет охраняемой зоны-это я уже понял.Сеичас буду исправлять) Спасибо вам огромное за помошь с сессиями) Сеичас сел за комп и онаружил весьма интересный "косяк") В фаиле check.php у нас есть такая строчка. [php]<? include ("connect.php"); $nick = isset($_POST['nick']) ? $_POST['nick'] : ''; $pass = isset($_POST['pass']) ? $_POST['pass'] : ''; function check() { [/php]Перед функцией у нас идет обработка переменных-$nick и $pass.Это было необходимо,что бы сформировать запрос. В итоге,если мы будем вставлять этот фаил инклудом,у нас будет вылезать ошибка.Неудивительно-массив POST пуст,следовательно-переменные тоже становятся пустыми.Круг замыкается. Но в свою очередь мы не можем убрать эти строки из check.php,иначе полетит запрос. Передвинуть мы тоже ничего не может-да по сути от этого ничего не измениться. Что можно сделать? Я решил создать документ check2,поместив в него строчки [php]<? if ($a['nick']!==0 and $a['pass']==$pass){session_register("nick","pass");echo("поехали");} else {exit("Чёто не так");} ?>[/php]и подключая к нжным страницам. Посмотрим что получится) Вроде бы получилось.Правда все равно творится что то странное. Браузер я перезапустил,сайт-вышел-вошел,а все равно меня пускают на секретные разделы без заполнения форм. |
|
|
MetSerp |
9.4.2009, 17:58;
Ответить: MetSerp
Сообщение
#7
|
|
это называется индийская школа программирования :hihi:
Почему не сделать так: Опишу сначала алгоритм потом код Проверяем сессию на существование переменной. Если переменной нет шлем лесом к медведям с формой авторизации. Если переменная есть даем хлеб соль (причем не в лицо с размаху) теперь код: [php]<?php session_start (); if ( !isset ($_SESSION['user'])) { ?><form action="autorize.php" method="post">Авторизуйтесь"; <input name="nick" type="text" />"; <input name="pass" type="text" />"; <input name="" type="submit" value="Вход" /></form><img src=http://i.smiles2k.net/big_smiles/super_smilies060.gif border=0>"; <? die (); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> бла бла бла страничкин код <? } ?>[/php]А уж в файле авторизации проверяйте в свое удовльствие и если все правильно то просто создавайте переменную [php]$_SESSION['user'] = "access"; [/php]^_^ И ненадо целой толпы злобных переменных :sarcastic: |
|
|
Lotus
|
Сообщение
#8
|
|
[quote name='MetSerp' post='29766' date='9.4.2009, 20:58']это называется индийская школа программирования
Если переменной нет шлем лесом к медведям с формой авторизации. Если переменная есть даем хлеб соль (причем не в лицо с размаху) :rjunimagu::rjunimagu: Ну ты даешь):hihi: Сразу стало всё понятно)) |
|
|
Lotus
|
Сообщение
#9
|
|
Спасибо,всё заработало):beer:
Обязательно добавлю вашу кнопку на сайт.Сайт маленький,можно сказать личный.Но кнопка будет.Вы очень много сделали для меня) буду советовать этот сайт всем друзьям):goodpost: |
|
|
jonny11 |
22.4.2010, 14:56;
Ответить: jonny11
Сообщение
#10
|
|
Здравствуйте.
Сделал на своём сайте авторизацию и регистрацию. Доступ к страничкам сделал как здесь было указано, т.е. на каждой странице идет: [PHP] <?php session_start (); if ( !isset ($_SESSION['user'])) { ?><form action="autorize.php" method="post">Авторизуйтесь"; <input name="nick" type="text" />"; <input name="pass" type="text" />"; <input name="" type="submit" value="Вход" /></form><img src=http://i.smiles2k.net/big_smiles/super_smilies060.gif border=0>"; <? die (); } else { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> бла бла бла страничкин код <? } ?> [/PHP] Всё работает, без авторизации на страницы не попасть. Я правда не понял зачем нужно вот это: [PHP]$_SESSION['user'] = "access"; [/PHP] Вроде и без него всё нормально. Но вопрос в следующем. У меня сейчас получается так, что если пользователь авторизовался, то доступ есть ко всем страницам. Если нет, то когда пытаются зати на эту страницу, просто пересылает на форму авторизации. Я сделал через Header("Location: index.php"); Но я бы хотел, чтобы каким то пользователям открывались одни странички, а каким то другие. Т.е. если допусти заходит Вася, то он видит страницу с текстом: траляляля. А если авторизовался под Петей, то трулюлюлю. Заранее благодарен за ответы. |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Marketcall (USA/RU) - международная партнерская сеть с оплатой Pay Per Call и LeadGen | 20 | Marketall_ru | 8394 | 2.3.2022, 16:44 автор: Marketall_ru |
|
InsuranceRevenue.com - страховая партнёрка Pay per Lead и Pay per Call под USA трафик. | 1 | Nitroz | 2235 | 2.1.2017, 10:29 автор: Nitroz |
|
Работа в call-центре | 0 | Калегина Ольга Игоревна | 2604 | 13.5.2013, 15:36 автор: -Калегина Ольга Игоревна- |
|
Продажа шаблоны (игровой форум - Counter Strike, Lineage II, World Of Warcraft, Counter Strike Source, Call Of Duty, Battlefield. Ucoz (конструктор присутствует), DEL, Joomla, siteedit, WordPress. |
1 | PavelB | 12254 | 9.11.2011, 11:59 автор: WETLER |
Текстовая версия | Сейчас: 19.4.2024, 6:23 |