X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Call to undefined function check()
Lotus
Lotus
Topic Starter сообщение 9.4.2009, 12:50; Ответить: Lotus
Сообщение #1


Здравствуите еще раз.
Вот такое вот дело-ругается на то,что неможет распознать функцию check.Как это можно исправить?)

check.php

[PHP]
<? include ("connect.php");
$nick = isset($_POST['nick']) ? $_POST['nick'] : '';
$pass = isset($_POST['pass']) ? $_POST['pass'] : '';
function check()
{
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]

Первая строка фаила,где нужна проверка сессии.
[PHP]<? session_start();check();?>[/PHP]

Пробелы специально убил,что бы не было ошибок.
"Надеюсь на вашу помошь"(с)
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 9.4.2009, 13:13; Ответить: MetSerp
Сообщение #2


(Lotus @ 9.4.2009, 15:50) *
Первая строка фаила,где нужна проверка сессии.

а функция до этого нигде не объявлялась как я понимаю?: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
Webmaster_hb
сообщение 9.4.2009, 13:14; Ответить: Webmaster_hb
Сообщение #3


а так ?
[PHP]<?
session_start();
include ("check.php");
check();
?> [/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 9.4.2009, 13:24; Ответить: Lotus
Сообщение #4


Оба случая приводят к одному и тому же исходу.
Подключил check.php,вставил код
MetSerp, -а,все равно функция не распознается.

MetSerp, кстати,а где в вашем коде присутствует название функции?;)

Вернул обратно старый код,вставил инклудом check.php-заработало)
Спасибо за помошь)

Правда есть небольшой нонсонс-сессия не работает :sarcastic:
На страницы,в которых стоит в начале функция проверки,можно попасть без авторизации.
Интересно,почему так.Браузер перегрузил,с сайта вышел.Или сессия еще жива?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MetSerp
MetSerp
сообщение 9.4.2009, 13:48; Ответить: MetSerp
Сообщение #5


(Lotus @ 1.1.1970, 07:00) *
MetSerp, кстати,а где в вашем коде присутствует название функции?

нету ее. я использовал код без функции.
Ваша ошибка была в попытке вызвать код без объявления функции.
Когда вы сделали:
[php]<?
session_start();
include ("check.php");
check();
?> [/php]заработало потому что функция вызывается после того как подключен файл ее описывающий.
то есть если сделать
[php]<?
session_start();
check();
include ("check.php");
?> [/php]то опять вызовет эту же ошибку. Суть уловили?;)
Нельзя приговить грибной суп если у вас нет грибов.
В вашем случае вы ставите кастрюлю достаете книгу с рецептами и читаете "положить грибы" (объявляете об использовании функции check() ). Но вот грибы в кастрюлю не ложите (неописана функция) в итоге грибной суп неполучается (не работает):sarcastic:

(Lotus @ 9.4.2009, 16:24) *
функция проверки,можно попасть без авторизации.

конечно можно, вы ведь не останавливаете выполнения скрипта даже если данные введены неверно.
Вы просто останавливаете человека на входе в охраняемую вами зону и говорите " Вы кто ? "
Он отвечает "Пупкин Василий" И вместо того чтобы закрыть дверь вы отвечаете " Я вас незнаю вам сюда нельзя" и впускаете его туда куда нельзя открывая перед ним дверь ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 9.4.2009, 14:00; Ответить: Lotus
Сообщение #6


(MetSerp @ 9.4.2009, 16:48) *
нету ее. я использовал код без функции.
Ваша ошибка была в попытке вызвать код без объявления функции.
Когда вы сделали:
[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
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
Lotus
Topic Starter сообщение 9.4.2009, 18:05; Ответить: Lotus
Сообщение #8


[quote name='MetSerp' post='29766' date='9.4.2009, 20:58']это называется индийская школа программирования
Если переменной нет шлем лесом к медведям с формой авторизации.
Если переменная есть даем хлеб соль (причем не в лицо с размаху)



:rjunimagu::rjunimagu:

Ну ты даешь):hihi:

Сразу стало всё понятно))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Lotus
Lotus
Topic Starter сообщение 9.4.2009, 18:16; Ответить: Lotus
Сообщение #9


Спасибо,всё заработало):beer:
Обязательно добавлю вашу кнопку на сайт.Сайт маленький,можно сказать личный.Но кнопка будет.Вы очень много сделали для меня)
буду советовать этот сайт всем друзьям):goodpost:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
jonny11
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");

Но я бы хотел, чтобы каким то пользователям открывались одни странички, а каким то другие.
Т.е. если допусти заходит Вася, то он видит страницу с текстом: траляляля. А если авторизовался под Петей, то трулюлюлю.
Заранее благодарен за ответы.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Marketcall (USA/RU) - международная партнерская сеть с оплатой Pay Per Call и LeadGen
20 Marketall_ru 8315 2.3.2022, 16:44
автор: Marketall_ru
Открытая тема (нет новых ответов) InsuranceRevenue.com - страховая партнёрка Pay per Lead и Pay per Call под USA трафик.
1 Nitroz 2223 2.1.2017, 10:29
автор: Nitroz
Открытая тема (нет новых ответов) Работа в call-центре
0 Калегина Ольга Игоревна 2598 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 12246 9.11.2011, 11:59
автор: WETLER


 



RSS Текстовая версия Сейчас: 19.3.2024, 15:32
Дизайн