Pangaea Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 Holder på å lage en side nå, og bruker Invision PowerBoard. Når en bruker er logget inn på forumet, kan jeg da gå inn med en spørring mot forum-db'en, sjekke brukers IP mot IPen i db, sette mine egne sessions, og regne det som trygt? Alternativet er å ha helt egen login for siden min, og en annen login for forumet, som ikke er helt ideelt. Fant en mod som het IPBSDK, fikk til å logge meg inn på forumet med den via siden min, men var egentlig ikke det jeg var ute etter, og jeg fikk ikke helt til å integrere det i siden min på en fornuftig måte uansett. Vil eksempelet over være trygt? Håper noen forstod hva jeg mente... Lenke til kommentar
Torbjørn Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 nei, du kan ikke bruke IP som autentisering og regne med at det er trygt. hvorfor ikke bruke php session med samme navn istedet? bare å sjekke kildekoden til IPB Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 Har sett en del på kildekoden, men finner ikke helt ut av det. Hva mener du med navn forresten? Lenke til kommentar
Torbjørn Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 session_register('sessionnavn'), eller $_SESSION['sessionnavn'] - finn hva som er satt i setdet for sessionnavn og aksesser denne direkte. Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 Okay, skal se hva jeg finner ut. Litt skeptisk til å tulle med ting IPB lager, redd for å ødelegge. Spørt om ikke det blir lagd en array av hele greia... Får kike litt til i kildekoden. Lenke til kommentar
Ueland Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 IPB stapper alt inn i en stor array.. heter vel $INFO tror jeg Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 (endret) Har nå gått gjennom usannsynlig mye kode, men siden jeg ikke er helt vant med så store systemer, er det vanskelig å få god oversikt. Fra det jeg husker nå (sett gjennom hele functions og login fila...), så bruker ikke IPB session på "vanlig" måte. IPB har en session tabell i databasen som blir oppdatert med jevne (hvert 5. minutt tror jeg det var) mellomrom. I den tabellen ligger det: id (session_id antar jeg), member_name, member_id, ip_address, browser, running_time, login_type, location, member_group, in_forum, in_topic. Om jeg kjører spørring på siden min for hver gang brukeren går inn på en side med begrenset adgang mot denne session tabellen i IPB databasen, sjekker fx IP til bruker mot IPene i session tabellen. Finner den en IP som stemmer overens med brukerens og denne IPen er logget inn (fx member_group=3), vil det ikke være sikkert? Kan evt også ta en sjekk mot browser, men da må jeg se på koden igjen så jeg er sikker på det stemmer overens. Om dette ikke er bra nok, hvordan får jeg da tak i infoen $INFO['whatever']['???'] fra IPB utenom den tabellen? Det stod jo til og med kommentert en plass i kildekoden at om IP og browser stemte overens regnet man det som sikkert (eller noe lignende ordlyd), så det burde holde skulle jeg tro, med mindre jeg har oversett soleklare fallgruver da... Skal egentlig ikke føye til noe, den dataen som ligger i IPB session er bra nok, men jeg vil gjerne bruke fx member_group for å gi rett tillatelse på siden min. Noen kommentarer? Endret 21. mai 2004 av Pangaea Lenke til kommentar
Ueland Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 sjekker du opp imot session, ip & browser så er det sikkert, dem som mener noe annet får verso å dokumentere det dem sier skriv echo "<pre>"; print_r($INFO); echo "</pre>"; så ser du hvordan info variabelen er satt opp.. Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 Sorry for å må ha inn med teskjei, men hvor må jeg skrive det for å få ut noe informasjon? Prøvde å lage en testfil med db connection, men kom ingenting fram. Prøvde å sette inn i index-fila, men der skjedde det heller ingenting... Lenke til kommentar
Ueland Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 prøv i bunnen av index.php filen se så i bunnen av forumet Lenke til kommentar
Ueland Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 oisann, kansje jeg må huske å skrive rett variabel så hjelper det litt echo "<pre>", print_r($ibforums); echo "</pre>"; slik Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 Ah, endelig fikk jeg det fram I toppen gikk det ikke, i bunnen kom absolutt ingenting fram (ikke engang echo "INFO", så prøvde jeg ca i midten, og da kom det et lass med arrays. Takker, håper jeg klarer å få noe fornuftig ut av det nå da... Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 (endret) Interessant å se i $ibforums-arrayen, men om jeg har hengt med har jeg egentlig det jeg trenger i session tabellen til ipb. Selve session_id tror jeg ikke jeg kan bruke, siden jeg ikke har noen måte å få vite brukerens session_id på bortsett fra å sjekke i den tabellen mot ip og browser. Kan selfølgelig hente ut id'en og sjekke mot tabellen senere, men tror ipb kan skifte ut sessions og da får jeg ny id igjen, så kanskje like greit å bare bruke ip og browser..? På siden min kan jeg da hente ut member_id, member_name, ip_address, user_agent, member_group. Om ip og agent stemmer overens, anser jeg brukeren som logget inn på siden min også, og lager min egen session med den infoen. Dette kan jeg sjekke enten for hver gang bruker klikker på en link hvor han må være medlem for å kunne få adgang til; eller fx hvert 5. minutt. Tror ipb oppdaterer session tabellen hvert 5. minutt så det er kanskje det greieste, da sparer man litt queries også. Høres dette ut som en grei plan folkens? Edit: IPB bruker disse funksjonene... $user_agent = substr($HTTP_SERVER_VARS['HTTP_USER_AGENT'],0,50); $ip_address = $_SERVER['REMOTE_ADDR']; Endret 21. mai 2004 av Pangaea Lenke til kommentar
Ueland Skrevet 21. mai 2004 Del Skrevet 21. mai 2004 IPB oppdaterer sessions tabellen med info om deg hver gang du gjør noe. For å kunne vite hvor du er. Lenke til kommentar
Pangaea Skrevet 21. mai 2004 Forfatter Del Skrevet 21. mai 2004 IPB oppdaterer sessions tabellen med info om deg hver gang du gjør noe. For å kunne vite hvor du er. Ja, stemmer det ja. Bare husker jeg så noe om time() og 300 en plass i session koden... Lenke til kommentar
Pangaea Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 (endret) Ser ut som det fungerer function sess_check($browser) { include("./include/ipb_db.inc.php"); $ip_address = $_SERVER['REMOTE_ADDR']; $query = "SELECT * FROM ippbe_sessions WHERE member_name<>'' AND member_id>0 AND ip_address='$ip_address' AND browser='$browser' AND member_group IN (3,4,6)"; $result = mysql_query($query) or die ("Could not execute query.".mysql_error()); $rows = mysql_num_rows(mysql_query($query)); return $rows; } $browser = substr($HTTP_SERVER_VARS['HTTP_USER_AGENT'],0,50); echo "Rows: ".sess_check($browser); Måtte sende med $browser siden jeg fikk '' om jeg hadde det i funksjonen... Men bortsett fra det fungerer det glimrende så langt Endret 22. mai 2004 av Pangaea Lenke til kommentar
Pangaea Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 Sorry for å poste så mye her, men lurer på noe mer. Er det ikke mulig å få fram browser i en funksjonsfil ("function.inc.php" i mitt tilfelle) ? Ser det kan bli ganske tungvint å måtte skrive det foran hver gang jeg skal bruke den funksjonen, ville vært mye bedre om man fikk fram browser også i funksjonen. Lenke til kommentar
Ueland Skrevet 22. mai 2004 Del Skrevet 22. mai 2004 umm trenger jo bare å skrive $_SERVER['HTTP_USER_AGENT']; for å få frem navnet på nettleseren Lenke til kommentar
Pangaea Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 Hehe, takker Brukte $HTTP_SERVER_VARS['HTTP_USER_AGENT'] siden det var det ipb brukte Lenke til kommentar
Pangaea Skrevet 22. mai 2004 Forfatter Del Skrevet 22. mai 2004 (endret) Kanskje et dumt spørsmål igjen, men here it goes Om man ikke logger seg ut fra forumet, er det noen mulighet for at ipb da forandrer session id? Vil man ha samme session id så lenge man er innlogget? Om det stemmer kan jeg slippe å legge infoen jeg trenger fra ipb session tabellen inn i min session hver gang jeg kjører innloggings-sjekken. Om $_SESSION['id'] og $record['id'] stemmer overens kan jeg bruke det jeg har i sessionen min istedet for å oppdatere hele tiden. Sparer vel ikke så mye tid, men sikkert litt. Hvis det er trygt da seff, men skulle da tro det. Edit: Kode... function loggedin() { include("ipb_db.inc.php"); $ip_address = $_SERVER['REMOTE_ADDR']; $browser = substr($_SERVER['HTTP_USER_AGENT'],0,50); $query = "SELECT * FROM ippbe_sessions WHERE member_name<>'' AND member_id>0 AND ip_address='$ip_address' AND browser='$browser' AND member_group IN (3,4,6)"; $result = mysql_query($query) or die ("Could not execute query.".mysql_error()); $rows = mysql_num_rows(mysql_query($query)); $record = mysql_fetch_assoc($result); if($rows==1) { if(!$_SESSION['id'] == $record['id']) { $_SESSION['id'] = $record['id']; $_SESSION['member_name'] = $record['member_name']; $_SESSION['member_id'] = $record['member_id']; $_SESSION['member_group'] = $record['member_group']; } return true; } else { session_unset(); session_destroy(); setcookie(session_name() ,"",0,"/"); return false; } } Jøss, ibf sessions blir forandret til ippbe_sessions... Endret 23. mai 2004 av Pangaea Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå