IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Помогите с сайтом (https://www.imho.ws/showthread.php?t=84026)

Hubbitus 30.04.2005 21:17

Цитата:

Vaston509:
Есть страницы index.html, в ней расположен iframe, который ссылается на ту же frash.php, где мы и записали наш счетчик,
НО когда юзер кликает на кнопку то перегружается страница index.html и с ней соответсвенно и счетчик..
Может я конечно что-то не так делаю..
Ну да, перезагружается и страница счетчика, о ней и говорю: или сохранять в куках значения таймера, или саму эту страницу во фрейм, а счетчик выше, на страницу которая перезагружаться не будет.

Цитата:

Vaston509:
Hubbitus если тебе не сложно то модет набросаешь скриптик, у тебя это уж больно хорошо получается...
Гыг, спасибо за комплимент. Может быть... вот, набросал:
Файл timer.htm:
Код:

<body onLoad="begintimer()" onunload="save_timer()">
<a href=timer.htm>Загрузить эту же страницу снова</a>

<script>
// ####################Функции работы с куками, за основу взяты функции из VBuletin-forum######
function set_cookie(name, value, expires){
    if (!expires){
    expires = new Date();
    }
expires.setSeconds(expires.getSeconds() + pl); //Срок сохранения на столько секунд
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toUTCString() +  "; path=/";
}

// #############################################################################
// function to retrieve a cookie
function fetch_cookie(name){
cookie_name = name + "=";
cookie_length = document.cookie.length;
cookie_begin = 0;

    while (cookie_begin < cookie_length){
    value_begin = cookie_begin + cookie_name.length;
        if (document.cookie.substring(cookie_begin, value_begin) == cookie_name){
        var value_end = document.cookie.indexOf (";", value_begin);
            if (value_end == -1){
            value_end = cookie_length;
            }
        return unescape(document.cookie.substring(value_begin, value_end));
        }
    cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
        if (cookie_begin == 0){
        break;
        }
    }
return null;
}

/////////////////Основная часть
var limit="0:30";
var pl = null;

function begintimer(){
    if (document.images){
    pl = fetch_cookie('pl');
        if (!pl){
        pl=limit.split(":");
        pl=pl[0]*60+pl[1]*1;
        }
    }
alert("Оставшееся время до завершения сеанса: " + pl + 'сек');//Это в демонстрационных целях
timer();
}

function timer(){
    if (!document.images) return null;
    if (pl==1){
    document.location="webcam.html";
    }
    else{
    pl-=1;
    cmin=Math.floor(pl/60);
    csec=pl%60;
        if (cmin!=0) ctime=cmin+" min. and "+csec+" sec remains for viewing this page";
        else ctime=csec+" sec remains for viewing this page";
    window.status=ctime;
    setTimeout("timer()",1000);
    }
}

function save_timer(){
set_cookie('pl', pl);
}
</script>
</body>


Ale 01.05.2005 03:52

Ув. господа, кажется в процессе борьбы за озеленение крокодилов вы таки забыли что они не летают в принципе :)

ИМХО: куки по-прежнему не нужны, бо время для отсчета хранится в lock-файле. Достаточно лишь изменить логику работы с ним, раз изменилась логика ТЗ. Т.е. не обновлять файл если время не просрочено. Вообще, кажется вы неск запутали структуру - достаточно 1го php-файла (+ js) на все варианты сценария. К сожалению нет времени..

PS Интересно - что по сценарию будет когда таймер дотикает?

Vaston509 01.05.2005 09:46

Цитата:

Ale:
PS Интересно - что по сценарию будет когда таймер дотикает?
Помоему усе даже понятно, будет загружена другая страница, а именно "webcam.html".......

Vaston509 01.05.2005 15:27

Hubbitus, я тут подумал если тебе не сложно может подскажешь мне еще одну вещичку?

Проблема тока, я о ней в скольз упоминал раньше, дык вот примерно полгода назад я делал все это под Линукс, причем было использовано с регистрацией и авторизацией. А теперь по WindowsXP.

На самом деле у меня почему то не получается использовать такой регистрацию и авторизацию под винду. Я даже не пойму в чем проблема.

Я просто вставлю код, может кто подскажет

registration.php


Может быть все и работало бы, только почему то не создается файл с именем logina, может конечно проблема в сервере, скорее всего оно так и есть, но ЧТО СЕЙЧАС ИСПРАВИТЬ НИ КАК НЕ ПОЙМУ,,, ну и на всякий случай и

registration.html:


Ну и уж совсем на всякий случай

authorization.php:


Очеь расчитываю на Hubbitusa

Hubbitus 01.05.2005 22:17

Цитата:

Vaston509:
Проблема тока, я о ней в скольз упоминал раньше, дык вот примерно полгода назад я делал все это под Линукс, причем было использовано с регистрацией и авторизацией. А теперь по WindowsXP.

На самом деле у меня почему то не получается использовать такой регистрацию и авторизацию под винду. Я даже не пойму в чем проблема.
Ой, очень зря ты с Линукса сайт на винду перенес. Если честно, то я не очень-то и знаю винду - не уважаю как-то, и не пытаюсь разобраться в тонкостях ее глюков и траблов особенно...

Но попытаюсь конечно...
Цитата:

Vaston509:
Может быть все и работало бы, только почему то не создается файл с именем logina, может конечно проблема в сервере, скорее всего оно так и есть, но ЧТО СЕЙЧАС ИСПРАВИТЬ НИ КАК НЕ ПОЙМУ,,,
registration.php:
1) 4 строчка поидее вообще ошибочная ($file_name)
2) Какие вообще ошибки выводятся, какие проблемы?
3) Конец строки в виндах помимо \n нужно еще \r (\r\n)
4) В конструкции "$pass2= =FALSE" не должно быть пробела ($pass2==FALSE)
Ну это то что видно сразу, попробуй, и если работать не будет, приведи какие ошибки выводятся.

Al-x 01.05.2005 23:22

Цитата:

Vaston509:
не создается файл с именем logina
Вставлю свои 5 копеек :)
Скрипт registration.php (по идее) вообще не должен запускаться. Если закрыть на это глаза...
Вот что меня смутило:
authorization.php
Код:

$fname="./users_dir/$nik.txt";
и
registration.php
Код:

$file_name="users_dir.$nik";
это не один и тот же путь. Попробуй в registration.php поставить путь как в authorization.php
PS: не забудь создать каталог в папке со скриптами с именем users_dir :)

Vaston509 02.05.2005 08:43

С кодом я наверное опять неправильно скопировал, он такой

А то что $pass2= =FALSE - то это глюк форума, я вставил без пробела,
Проверил в написании письма без пробела, создаешь сообщение - с пробелом...

Т.к. это регистрация, то при заполнении всех полей, условие в строке 4 не выполняется и выдает, что не все поля заполнены, хотя все вроде заполняею..., ну и соответсвенно не создается файла..

Al-x 02.05.2005 11:56

Смотрим пост #23:
Код:

register_globals Off Off
Отсюда правило:
вместо $nik,$email... нужно использовать $_POST['nik'], $_POST['email']...
Hint: в строчке
Код:

$file_name="./users_dir/$nik.txt";
лучше использовать синтаксис:
Код:

$file_name="./users_dir/{$_POST['nik']}.txt";
PS: И вообще, лучше не надеяться на то, что эта директива включена, а всегда явно указывать откуда из внешнего окружения мы её берём. Короче - RTFM :)

Vaston509 02.05.2005 13:05

Что-то я не понял про RTFM? ЧТО сделать надо?

Вот теперь все изменил, условия в 4-ой строку выполнаются, но вот файл не генерируется...., короче не создается...

Как его создать?

Вру, теперь работает

Al-x 02.05.2005 13:40

Цитата:

Vaston509:
Что-то я не понял про RTFM?
RTFM - Read the F...king Manual :)
Например
Здесь и здесь

Hubbitus 02.05.2005 17:31

Цитата:

Vaston509:
Вру, теперь работает
Все, теперь нормально все работает наконец? Дело в глобальных переменных было?

Vaston509 02.05.2005 19:15

Ребят а еще вопросик: как сделать чтоб пароль сосотял миниму из 5-6 знаков и чтоб обязон вводилось мыло, ну, т.е. с собакой

Hubbitus 02.05.2005 19:44

Цитата:

Vaston509:
Ребят а еще вопросик: как сделать чтоб пароль сосотял миниму из 5-6 знаков
strlen($text)>=5;

Цитата:

Vaston509:
и чтоб обязон вводилось мыло,
Это - регой, почитай, на форуме здесь уже обсуждалось подобное.
Цитата:

Vaston509:
ну, т.е. с собакой
А если только это, то просто strstr($text, '@');

Vaston509 03.05.2005 00:13

Мне конечно не удобно, но что такое регой?

Может подскажешь ссылку, где обсуждалось

Что-то я не разберу как вставить strstr($text, '@');

Я делаю так:
PHP код:

    elseif (strstr($_POST['email'], '@'));
    {
        require(
"reg5.html");
        exit;} 

но почему то это не работает, может кто подскажет?

Al-x 03.05.2005 08:51

Я ж тебе такую классную ссылку дал, а ты ... :)
Про strstr и про реги (регулярные выражения)
А на форуме даже тема такая есть - http://www.imho.ws/showthread.php?t=75850
А тут статьи по регам на русском (применительно к PHP и Perl).
ЗЫ: Чтобы работал твой кусок кода для начала убери ";" после строки с elseif, а потом измени условие исходя из того, что stsrstr возвращает FALSE, если ничего не найдено.

Vaston509 03.05.2005 09:33

Почитал, почитал про этот регой, что-то как то мутно понятно....а точнее ни чего не понятно... :(

Al-x 03.05.2005 18:48

Цитата:

Vaston509:
ни чего не понятно
Ну и забей пока на реги. Используй strstr (если просто на наличие собаки проверить хочешь). Например так:
Код:

        if (strstr($_POST['email'], '@'))
        { 
                echo 'Есть @';
        }
        else
        {
                echo 'Нет @';
        }

PS: я ещё до 1000 сообщений не дорос :)

AleXXXSoft 04.05.2005 09:17

функция проверки мыла:

Код:

function checkmail($email){
                $res=ereg("[^-_.]?([0-9\-_.a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,4}$", $email);
        return $res;
};

ну или что-то вроде того, у каждого программиста своя функция :)

Hubbitus 04.05.2005 13:32

Цитата:

Vaston509:
Почитал, почитал про этот регой, что-то как то мутно понятно....а точнее ни чего не понятно... :Frown:
Зато крайне гибко и мощно! А на самом деле, когда немного разберешься, то очень даже удобно становится. Для поставленной задачи "есть ли символ @" регулярные выражения и не нужны, достаточно strstr, а если задачу ставить как "чтобы было корректное мыло", тогда только регами. AleXXXSoft привел как это сделать приблизительно можно, разве что только одно замечание: ereg работает очень медленно, лучше использовать preg_*

AleXXXSoft 04.05.2005 14:14

Цитата:

Hubbitus:
разве что только одно замечание: ereg работает очень медленно, лучше использовать preg_*
ну вы прям с пушкой на воробья.... ereg работает в пару раз быстрее со строками малой длины, а вот preg работает быстро с текстами и длинными строками...

Vaston509 05.05.2005 07:48

А можно как нить поставить условие на этот регой, типа ИФ $res=ereg("[^-_.]?([0-9\-_.a-zA.... ТРУ, то делаем одно, если ФАЛСЕ, то другое?

Al-x 05.05.2005 08:53

Код:

if (ereg("[^-_.]?([0-9\-_.a-zA-Z])*@[0-9a-zA-Z]([-.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,4}$", $email)) {
  echo "Valid Email";
} else {
  echo "Invalid Email;
}


Vaston509 05.05.2005 10:12

Мне конечно не удобно, не мог ли кто нибудь попытаться мне объяснить, что эта функция ereg делает...???
а конкретно:
1. Что делает функиция ereg
2. [^-_.]? - не понятно...
P.s. пожайлуста, не посылайте меня читать, что такое етот регой... ;)


И еще вопрос к Hubbitusu:
Ты мне писал в 41 посте таймер, работы с куками. Не мог бы ты не много объяснить как она сохраняет инфу (о юзере) и как потом ее опят считывает. Особенно мне не понятно следующие функции:
function set_cookie
function fetch_cookie
Если тебя конечно это не затруднит. Мне бы это сильно помогло...
Заранее большое спасибо..

Hubbitus 05.05.2005 12:35

Цитата:

Vaston509:
1. Что делает функиция ereg
Сравнивает текст с регулярным выражением
Цитата:

Vaston509:
2. [^-_.]? - не понятно...
Это значит может быть или не быть любой символ кроме точки подчеркивания или тире
Цитата:

Vaston509:
P.s. пожайлуста, не посылайте меня читать, что такое етот регой... :Wink:
А все-таки для нормально понимания, про регулярные выражения почитать стоит.
Цитата:

Vaston509:
Ты мне писал в 41 посте таймер, работы с куками. Не мог бы ты не много объяснить как она сохраняет инфу (о юзере) и как потом ее опят считывает. Особенно мне не понятно следующие функции:
function set_cookie
function fetch_cookie
Что тут не понятно-то конкретно? Функция set_cookie сохраняет значение таймера в куку пользователя когда он покидает страницу, а fetch_cookie читает эту куку когда пользователь вернулся (страница загрузилась снова), все предельно просто...

Vaston509 06.05.2005 07:48

Объясни пожайлкста, когда пользоатель попал на страницу 1, таймер пошел, вдуг на середине времени он закрывает браузер. Потом через пол часа опят решил загруить страницу, вопрос: Таймер загрузится заново? или продолжит старое время? Как это реализовано.

P.s.Мне необходимо описать это все подробно. Вот я и пытаюсь разобраться...

Hubbitus 06.05.2005 09:54

Таймер загрузится заново, поскольку время жизни куки устанавливается на срок оставшегося времени таймера на момент сохранения (если учесть медленные модемные соединения, то можешь увеличить это время на 10-20%).

Цитата:

Vaston509:
P.s.Мне необходимо описать это все подробно. Вот я и пытаюсь разобраться...
Необходимо описать или чтобы работало и разобраться????

Vaston509 06.05.2005 10:02

Надо, и разобраться и описать..

тогда:
Где устанваливается это время жизни?

Hubbitus 06.05.2005 10:11

Цитата:

Vaston509:
Надо, и разобраться и описать..
Я надеюсь ты не считаешь это все готовым продуктом??? Это примеры, наброски, требующие кучи тщательной доработки впринципе.
Цитата:

Vaston509:
тогда:
Где устанваливается это время жизни?
Слушай, в моем коде что я привел, все же прокомментировано!!!!!:
Код:

expires.setSeconds(expires.getSeconds() + pl); //Срок сохранения на столько секунд


Часовой пояс GMT +4, время: 15:47.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.