Autor | Zpráva | ||
---|---|---|---|
Alastor_Kopal Profil * |
#1 · Zasláno: 1. 5. 2009, 19:10:09
Nudný nepodstatný přiběh
Mám 3 stupně banu 1.stupeň - po 10 minutách přihlášení 2.stupeň - jen v některé hodiny 3.stupeň - nepřihlášení 3.stupeň uživatele nepustí, 2.stupeň si zjistím hodinu [i]$hod=date("H"); ale 1.stupeň s ním si nevím rady [/i] Otázka na Vás jak mám po deseti minutách strávených na stránce změnit session ? |
||
Nox Profil |
#2 · Zasláno: 1. 5. 2009, 19:12:46
No...v databázi si uložíš čas přihlášení a na každé stránce porovnáš, jestli to už bylo 10 minut a pokud jo, tak provedeš co chceš...třeba zrušíš session a přesměruješ ho na přihlašovací obrazovku, celkem jednoduché
Koukám, že se nevzdáváš;) |
||
Alastor_Kopal Profil * |
„Koukám, že se nevzdáváš;)“
??? Hmm nešlo by to zapsat jen do session ? Třeba zhruba asi nějak tak prihlaseni.php $ban == 1{header("location: ban1.php"); } ban1.php $start = date(time); $_session["cil"] = $start + 10 if($start == $_session["cil"]) {echo"jseš volný"; $_session["ban"] = 0} else{echo"ještě si počkej";} Moderátor Alphard: Kombinace tří m za sebou tady přivolá moderátora, nepoužívej ji prosím zbytečně.
|
||
Nox Profil |
#4 · Zasláno: 1. 5. 2009, 19:59:03
|
||
Alastor_Kopal Profil * |
#5 · Zasláno: 1. 5. 2009, 20:14:05
Tomu moc nerozumím na svém příkladu bych to měl asi takhle ? S cookies jsem nikdy nepracoval a ani nemám jeho základy
ban1.php $lifetime = 15 $path = ban1.php $domain = www.domena.neco.cz void session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure= false [, bool $httponly= false ]]]] ) jinak nějak tomu moc nerozumím ale hádám že trohle fungovat nebude |
||
Nox Profil |
#6 · Zasláno: 1. 5. 2009, 20:31:55
Alastor_Kopal
1. chybí ti středníky 2. chybí ti uvozovky kolem řetězců (už jsme ti říkali) 3. tenhle tvar je jen nápověda v manuálu, žádný návratový typ, datové typy ani závorky v argumentech samozřejmě nejsou „ S cookies jsem nikdy nepracoval a ani nemám jeho základy“ Tak si o nich přečti ;) Mělo by to být teda něco jako $lifetime = 600; // 10*60 vteřin session_set_cookie_params($lifetime); Ale přečti si taky tento komentář: http://cz2.php.net/manual/en/function.session-set-cookie-params.php#77726 |
||
Alastor_Kopal Profil * |
#7 · Zasláno: 3. 5. 2009, 12:36:24
$lifetime = 600; // 10*60 vteřin session_set_cookie_params($lifetime); tohle jé kód který udává počet sekund ne ? Ale poté co s tím ? tam neudělám podmínky if else ? |
||
AM_ Profil |
#8 · Zasláno: 3. 5. 2009, 14:31:05
Tohle řešit přes timeout PHPSESSID cookie je asi jako s jadernou bombou na komára. Ne dělem, ale jadernou bombou, protože těch škod okolo.. :)
Normálně si do $_SESSION['start_time'] ulož aktuální time() a pak kontroluj if ($_SESSION['start_time'] <= time()+600) { echo "o 10 minut pozdeji..."; } |
||
Alastor_Kopal Profil * |
#9 · Zasláno: 3. 5. 2009, 15:23:42
Takže to co jsem psal prvně bylo skoro správně takže asi nějak tak že ?
<?php session_start(); // Startujeme session $_session[start_time] = time(); if ($_SESSION['start_time'] <= time()+600) { echo "o 10 minut pozdeji..."; }else{ echo" ještě si počkej";} ?> |
||
AM_ Profil |
#10 · Zasláno: 3. 5. 2009, 15:46:21
„$_session[start_time] = time();“
ty tam používáš konstantu start_time? kde ji definuješ? |
||
Alastor_Kopal Profil * |
#11 · Zasláno: 3. 5. 2009, 16:10:04
Tak když máš v if start_time tak jsem čas uložil do start_time
|
||
AM_ Profil |
#12 · Zasláno: 3. 5. 2009, 16:53:49
ale nikde nemáš DEFINE('start_time', 'start_time');
|
||
Alastor_Kopal Profil * |
aha takže
<?php session_start(); // Startujeme session DEFINE('start_time', 'start_time'); $_session[start_time] = time(); if ($_SESSION['start_time'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session[ban] = 0; }else{ echo" ještě si počkej";} ?> |
||
AM_ Profil |
#14 · Zasláno: 3. 5. 2009, 19:30:55
ne. $_SESSION['start_time'] = time(); bude lepší, než zavádět konstantu.
|
||
Alastor_Kopal Profil * |
#15 · Zasláno: 3. 5. 2009, 19:39:21
šak session = time tam mám
|
||
Alastor_Kopal Profil * |
#16 · Zasláno: 3. 5. 2009, 19:41:34
dal jsem to na web a dala se mi tam hláška - o 10 minut později
s DEFINE('start_time', 'start_time'); i bez DEFINE('start_time', 'start_time'); |
||
AM_ Profil |
#17 · Zasláno: 3. 5. 2009, 20:12:42
Vysvětlím:
start_time je identifikátor programové konstanty definované pomocí DEFINE - může mít libovolnou hodnotu; něco podobného jako proměnná $start_time 'start_time' je řetězcová hodnota, která je klíčem pole session. čili: $_SESSION['start_time'] je to, co chceš, na to žádné DEFINE nepotřebuješ tebou použíté $_SESSION[start_time] je chyba, jen díky své inteligenci PHP skript pochopí tak, jak to nepozorný programátor myslel: přiřadí stejnou hodnotu, jako je název konstanty, tedy start_time, je ovšem generována chybová zpráva, že konstanta start_time není definována. Jedním slovem funguje to, ale je to čuňárna. |
||
Alastor_Kopal Profil * |
#18 · Zasláno: 3. 5. 2009, 20:30:33
ty si protiřečíš ikdyž vím že teď co říkáš je správné protože jsi psal
AM_ „ale nikde nemáš DEFINE('start_time', 'start_time');“ Takž jak změnit jméno session ? <?php session_start(); // Startujeme session $_session['cas] = time(); if ($_SESSION['cas'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session[ban] = 0; }else{ echo" ještě si počkej";} ?> |
||
Alastor_Kopal Profil * |
#19 · Zasláno: 3. 5. 2009, 20:31:30
<?php
session_start(); // Startujeme session $_session['cas'] = time(); if ($_SESSION['cas'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session[ban] = 0; }else{ echo" ještě si počkej";} ?> |
||
AM_ Profil |
#20 · Zasláno: 3. 5. 2009, 20:34:40
„$_session[ban] “
další konstanta ban? :-D „ty si protiřečíš ikdyž vím že teď co říkáš je správné protože jsi psal“ kde si protiřečím? „Takž jak změnit jméno session ?“ Proč to chceš dělat? jméno session mění funkce session_name, ale to zřejmě není to, co chceš. |
||
Alastor_Kopal Profil |
#21 · Zasláno: 3. 5. 2009, 20:40:12
$1 = DEFINE('start_time', 'start_time');
„další konstanta ban? :-D “ Vžyď jsem psal po 10 minutách změna session „kde si protiřečím? “ ve [#12] píšeš kde mám $1 a ve [#17] píšeš že dávat tam $1 je prasečinka „Proč to chceš dělat? jméno session mění funkce session_name, ale to zřejmě není to, co chceš.“ tak databázi jsem už zatížili 20 přízpěvky nezkoncujeme s tím ? Já se snažím ale pořád nám do toho vlítají nový věci teď nevim jak se mám ubírat dál |
||
AM_ Profil |
#22 · Zasláno: 3. 5. 2009, 20:44:46
„„další konstanta ban? :-D “
Vžyď jsem psal po 10 minutách změna session“ „ve [#12] píšeš kde mám $1 a ve [#17] píšeš že dávat tam $1 je prasečinka“ pokud chceš používat konstantu start_time, ban atd, musíš tam mít DEFINE. Je ale lepší to psát rovnou jako řetězcové hodnoty, tj 'start_time', 'ban' „tak databázi jsem už zatížili 20 přízpěvky nezkoncujeme s tím ? Já se snažím ale pořád nám do toho vlítají nový věci teď nevim jak se mám ubírat dál“ Řeknu to co vždy - snažíš se špatným věcem - kompletuješ věci, kterým nerozumíš. Já vážně nevím, co myslíš tím "změnit jméno session" (což může sloužit k tomu, že různé skripty pod stejnou doménou budou mít různé session). |
||
Alastor_Kopal Profil |
hmm já vážně nevííím
<?php session_start(); // Startujeme session DEFINE('start_time', 'ban'); $_session[start_time] = time(); if ($_SESSION['start_time'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session[ban] = 0; }else{ echo" ještě si počkej";} ?> ??????? |
||
AM_ Profil |
#24 · Zasláno: 3. 5. 2009, 22:31:35
Tak to už ani nebude fungovat.
chápeš, že start_time je konstanta, kterou nepotřebuješ, a 'start_time' je řetězec? $_SESSION['start_time'] - správně, to je to, co chceš $_SESSION[start_time] - nesmyslné použití nedefinované konstanty, něco jako kdybys napsal $_SESSION[$start_time] - chování konstant a proměnných je docela podobné, rozdíl je že konstanty mají hodnotu trvalého charakteru Můžeš mi z vlastní iniciativy vysvětlit, proč někdy ty uvozovky kolem start_time píšeš a někdy ne? |
||
Alastor_Kopal Profil |
Tak počkej hmm [#19] nebylo správně ?
|
||
AM_ Profil |
#26 · Zasláno: 4. 5. 2009, 19:04:59
ne, nebylo, $_SESSION[ban] má být $_SESSION['ban'] - to je jediná chyba, kterou jsem ti tam vytknul, stačí si přečíst [#20]
|
||
Alastor_Kopal Profil |
#27 · Zasláno: 4. 5. 2009, 19:15:33
Takž jenom ty úvozovky ?
<?php session_start(); // Startujeme session $_session['cas'] = time(); if ($_SESSION['cas'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session['ban'] = 0; }else{ echo" ještě si počkej";} ?> |
||
AM_ Profil |
#28 · Zasláno: 4. 5. 2009, 19:59:45
před $_SESSION['cas'] = time(); by mělo být if (!isset($_SESSION['cas'])) , aby se to nepřepisovalo pokaždé, ale jen při prvním vstupu
|
||
Alastor_Kopal Profil |
#29 · Zasláno: 4. 5. 2009, 20:07:45
Pořád dal jsem to na server a dala se mi tam hláška o deset minut později takže
Tohle vypadá jako divná syntaxe <?php session_start(); // Startujeme session if (!isset($_SESSION['cas'] = time())){} elseif ($_SESSION['cas'] <= time()+600) { echo "o 10 minut pozdeji..."; $_session['ban'] = 0; }else{ echo" ještě si počkej";} ?> |
||
AM_ Profil |
#30 · Zasláno: 4. 5. 2009, 20:31:23
Ježíš, to je fakt divný. Takže nezvládáš ani základní syntaxe?
<?php session_start(); // Startujeme session if (!isset($_SESSION['cas'])){ $_SESSION['cas'] = time(); } elseif ($_SESSION['cas'] <= time()+600) { echo "o 10 minut pozdeji..."; // $_session['ban'] = 0; - pokud to nepoužíváš nikde jinde, je to zbytečné }else{ echo" ještě si počkej"; } ?> |
||
Časová prodleva: 15 let
|
0