Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP-s abi vaja märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele 1, 2  järgmine
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 13.02.2011 20:53:47 PHP-s abi vaja vasta tsitaadiga

Oleks abi vaja.

Mul on siin terve rida vanuseid ja need oleks vaja teha päevadeks.

Vanused on kirjas erinevat moodi:
24
1,5
8h
1/4h
6,5n
8k
9a10n
12a4k5n3p7h
2a21p
jne.

Kui tähte pole lõpus siis on aasta.
k - kuu
n - nädal
p - päev
h - tund

Kuidas nüüd teha PHP-s function mis arvutaks siis vanused päevatäpsusega.
Miskit ma siin olen pusinud aga ei oska päris lõpuni teha.

Spoiler Spoiler Spoiler


PS! Tegu pole kooli ülesandega
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 13.02.2011 21:38:01 vasta tsitaadiga

hea oleks need vanused kõigepealt sekunditeks arvutada ja siis time() -st maha lahutada.

ja mis vanused need üldse on? mis liigaastatest saab?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 13.02.2011 22:04:26 vasta tsitaadiga

tegelt ma ei saa üldse sellest ülesandest aru, kuid sul oleks vaja kõigepealt kogu see asi lahku lüüa. ma ei ole regulaaravaldistes eriti kodus, kuid midagi sellist:

$vanused = array(
  '24',
  '1,5',
  '8h',
  '1/4h',
  '6,5n',
  '8k',
  '9a10n',
  '12a4k5n3p7h',
  '2a21p'
);

foreach($vanused as $vanus) {
  preg_match_all('/(([0-9]|,|\/)+[a-z])|([0-9]|,|\/)+/', $vanus, $matches);
  echo '<pre>';
  var_dump($matches[0]);
}


ka siis saad need stringid seal numbrite taga juba sekunditega asendada jne

EDIT: muutsin avaldist!

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 13.02.2011 22:47:55 vasta tsitaadiga

Mul on tead surmaaeg ning inimese vanus (kui vanalt suri).
Vanused on kirjas erinevalt - mõned aasta täpsusega, mõned nädala täpsusega, mõned kuu täpsusega jne.

Nüüd oleks vaja mul need vanused viia ühte formaati, et keskmisi vanuseid arvutada ning ka umbkaudne sünniaeg teada saada.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 13.02.2011 22:54:05 vasta tsitaadiga

arvuta kõigepealt sekunditeks see inimese vanus. siis saadki ühte formaati!
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 13.02.2011 23:43:35 vasta tsitaadiga

keevitaja kirjutas:
arvuta kõigepealt sekunditeks see inimese vanus. siis saadki ühte formaati!

No jah, seda ma siin teemas üritasingi küsida. Algselt küll tahtsin teha päevadeks aga võivad ka olla sekundid.
Kuidas see kood peaks täpselt välja nägema?
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 14.02.2011 00:13:01 vasta tsitaadiga

aga kus sa jänni jääd? see kood mis ma kirjutasin, lööb ju ilusti lahti kõik. tulemusest peaksid sa juba oskama saada kätte nii numbri kui ka tähemärgi. või ei oska?
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 14.02.2011 00:16:14 vasta tsitaadiga

Sealt edasi ei oska jah.
Peab vist mingi tsükli tegema mis kontrollib tähti ja teisendab numbrid õigesti.
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 14.02.2011 00:36:07 vasta tsitaadiga

äkki see abiks. võimalik, et on ka parem viis.
tervet koodi ma nüüd kirjutama ei hakka. see võtab ikka aega

$vanus = '12a4k3p';
preg_match_all('/([0-9]+)/', $vanus, $number);
preg_match_all('/([a-z]+)/', $vanus, $string);

$vanus = 0;

for($i = 0;$i < count($string[0]);$i++) {
 
  switch($string[0][$i]) {
    case 'a':
      $sekundid = 60*60*24*365;
      break;
    case 'k':
      $sekundid = 60*60*24*30;
      break;
    case 'p':
      $sekundid = 60*60*24;
      break;
  }

  $vanus = $vanus + ($sekundid * $number[0][$i]);
}

echo $vanus;


või siis paned need sekundid arraysse ja annad key-ks selle tähemärgi. nii vist oleks mõistlikum

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Stemugram
HV kasutaja

liitunud: 02.12.2001




sõnum 14.02.2011 21:39:08 vasta tsitaadiga

Tänud,
sain selle tööle nii nagu vaja.


-------


Ühe asjaga jäin ikka hätta. Nimelt osa vanuseid on ka murdudena aga need oleks vaja enne sekunditeks arvutamist saada komaga arvuks. Kuidas seda teha?
Välja näevad need sellised:
1/4
3/4p
8 3/4
4a2 1/2k
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 15.02.2011 21:42:38 vasta tsitaadiga

$vanus = '4a2 1/2k';

preg_match('/[0-9]+\/[0-9]+/', $vanus, $matches);

eval("\$murd = $matches[0];");

echo $murd;


ja siis tee ennem oma arvutusi seal $vanus sees str_replace asendus...

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 16.02.2011 17:35:14 vasta tsitaadiga

PHP abi vaja. icon_biggrin.gif

Väga huvitav keiss, peale session_regenerate_id(true); ja session_destroy(); saab paar korda back nupule klõpsides sessioni tagasi. Ehk veebilehitseja suudab kuidagi meelde jätta sessiooni sess_kwdwkldwkdwd sisu ja kirjutada see uude sess_cfjeldcqldchehfvedwe. Tundub kuidagi brauseri põhine "iseärasus" olevat.

Ok, kui kasutaja sulgeb lehe pole probleemi, aga kui lahti jääb saab mõni teine sisse logida .. Kas selle vastu rohtu on? Välja logimine käib logout.php kaudu ja siis redircib index.php.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 16.02.2011 18:29:38 vasta tsitaadiga

Oled kindel, et sul back nupuga session taastub? Arvan, et tegu lihtsa vahemälu lehega, mida browser näitab ja session on kinni, et kui kasutaja sealt tagasiklõpsitud lehelt teeb midagi sellist mis sisselogimist nõuab siis see ei toimi.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.02.2011 19:34:00 vasta tsitaadiga

kopeeri see eelmise lehe url ära ja back nupu asemel paste browserisse. siis vaevalt see anomaalia toimib
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 16.02.2011 21:19:18 vasta tsitaadiga

andrusny kirjutas:
Oled kindel, et sul back nupuga session taastub? Arvan, et tegu lihtsa vahemälu lehega, mida browser näitab ja session on kinni, et kui kasutaja sealt tagasiklõpsitud lehelt teeb midagi sellist mis sisselogimist nõuab siis see ei toimi.

Kusjuures on küll. Sessioni uues küpsises on vana sessiooni inf olemas (kontrollitud) ja lehel saab kõike teha ja toimetada ...
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 16.02.2011 21:37:37 vasta tsitaadiga

aga suudad sa seda anomaaliat uue koodiga kah esile kutsuda. ehk siis teed ainult paar lehte, mis nende sessioonidega toimetab.
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 16.02.2011 22:35:08 vasta tsitaadiga

Aga kui jätad selle üldse ära
session_regenerate_id(true);
ja lihtsalt hävitad sessioni. Või siis teed selle hoopis sessioni loomisel, mitte enne hävitamist. See on üks kahtlane koht, pole kasutanud kuid tundub, et annab uuele sessionile unikaalse ID, ja ma ei saa aru miks sa selle uue ID ennem session hävitamist teed?

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Timukas0
HV kasutaja
Timukas0

liitunud: 20.03.2007




sõnum 17.02.2011 00:53:10 vasta tsitaadiga

Milles probleem üldse? Need funktsioonid (session_regenerate_id, session_destroy) ei hävitagi sessiooni andmeid. setcookie on selleks mõeldud.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 17.02.2011 02:08:52 vasta tsitaadiga

möh? sessiooni andmed on ikka serveris. sessiooni id ehk hash on küpsises. juhul kui küpsised on keelatud, siis saab hashi edasi anda ka get või post abil, kuid see ei ole turvakaalutlustel eriti hea mõte!

<?php
session_start();

if($_GET['destroy'] == 'true') {
  session_regenerate_id();
  session_destroy();
  header('Location: '. $_SERVER['PHP_SELF']);
}

$_SESSION['test']++;

echo $_SESSION['test'].'<br />';
echo session_id().'<br />';

echo '<a href="' . $_SERVER['PHP_SELF'] . '?destroy=true">destroy</a>';


kui nüüd võtta ära session_regenerate_id(); siis sessiooni andmed hävitatakse, kuid sessiooni id jääb samaks!

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 17.02.2011 09:21:40 vasta tsitaadiga

Timukas0 kirjutas:
Milles probleem üldse? Need funktsioonid (session_regenerate_id, session_destroy) ei hävitagi sessiooni andmeid. setcookie on selleks mõeldud.

Ennem käis sessiooni hävitamine põhimõttel, kus kasutaja litsus nuppu ning käivitas isset($_POST) mis siis omakorda lasi käiku destroy ja regenerateid. Kõik toimis. Back nupuga ei saanud midagi teha. Nüüd, aga kasutades jquery akent suunan index.php liikluse logout.php, kuid sealt sama asi käima lasta saab hiljem 3 .. 4x back nupust sessioni taastada (samas kõik see sessioonide majandus käib nii nagu varem!). See kõlab küll ebaloogiliselt aga nii see on.

Siin pole küsimus ka küpsistes. Kui kasutaja logib välja, tema sessioon sess_aaaaaaaaaaaaa kustutatakse logout.php skriptiga serverist ja edasi index.php tagasi suunates genereerib server uue sess_bbbbbbbbbbbbbbb sessiooni. Too on muidugi tühi ja ei sisalda kasutaja nime ja paroole vms. mis on vaja sisse logimiseks. JA nüüd kui klõpsata hoolega back nuppu suudab mingi krd X ime läbi brauser sess_aaaaaaaaaaaaaaaa sisu sess_bbbbbbbbbbbbbbbbbb kopeerida ja leht taastub. Brauser PEAB seda infi kuskil hoidma ...

Tundub et kui 1 post saatmine uue sessiooniga ära teha, kaob ka probleem. icon_biggrin.gif
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 17.02.2011 10:28:07 vasta tsitaadiga

siis järelikult seda sessiooni ikka ei tapeta ära. muud võimalust pole.
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 17.02.2011 10:34:16 vasta tsitaadiga

Le Inc kirjutas:
Siin pole küsimus ka küpsistes. Kui kasutaja logib välja, tema sessioon sess_aaaaaaaaaaaaa kustutatakse logout.php skriptiga serverist ja edasi index.php tagasi suunates genereerib server uue sess_bbbbbbbbbbbbbbb sessiooni. Too on muidugi tühi ja ei sisalda kasutaja nime ja paroole vms. mis on vaja sisse logimiseks. JA nüüd kui klõpsata hoolega back nuppu suudab mingi krd X ime läbi brauser sess_aaaaaaaaaaaaaaaa sisu sess_bbbbbbbbbbbbbbbbbb kopeerida ja leht taastub. Brauser PEAB seda infi kuskil hoidma ...
browser ei saa sess_x faili kirjutada, seda teeb sinu skript. Kui need andmed tulevad POST/GET kaudu siis jah, browser peab need andmed meeles.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Le Inc
HV Guru
Le Inc

liitunud: 06.09.2002



Autoriseeritud ID-kaardiga

sõnum 17.02.2011 10:54:49 vasta tsitaadiga

mnjah, eks ta loogish ole, uurime asja edasi.
Kommentaarid: 56 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 54
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 17.02.2011 10:56:11 vasta tsitaadiga

prindi kogu aeg testimise käigus mingi sessioonis hoitav väärtus ja sessiooni id välja!
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 17.02.2011 13:43:51 vasta tsitaadiga

tsitaat:
Kui need andmed tulevad POST/GET kaudu siis jah

Selles võibki konks olla, back lehel on ju kunagi sisse logitud, kuid logimine on valesti ülese ehitatud, peale logimist post data kustutamata jäetud ja kui nüüd lähed bäck nupuga tagasi on POST data alles ja genereeribki uuesti logina.

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP-s abi vaja mine lehele 1, 2  järgmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.