Deze vraag is al vaker langsgeweest, ook op Tweakers.... dus met even zoeken moet je er wel komenquote:Op maandag 11 februari 2008 08:04 schreef Chandler het volgende:
@Iedereen; het scriptje dat browscap.ini parst ga ik niet gebruiken. Aangezien het toch nogal wat preformance vraagt van de server. Ik doe nu gewoon 2 dingen voor mijn statistieken script. 1 is de $_SERVER['HTTP_USER_AGENT'] opslaan plus dat ik deze string op een paar bekende browsers check, en deze sla ik ook weer op.
Iemand nog een antwoord op mijn gebruik van de database? is dit te behappen wat ik doe of moet ik apparte tabellen voor alle onderdelen gebruiken?![]()
[PHP/(My)SQL] voor dummies - deel 55
Draait de webserver toevallig in hetzelfde domain als waar de gebruikers ingelogd zijn?quote:Op maandag 11 februari 2008 11:52 schreef Swetsenegger het volgende:
Daar ben ik weer eens.
Momenteel ben ik met een scriptje bezig waarbij de pagina die je voorgeschotelt krijgt afhankelijk is van welk persoon de pagina bekijkt. Nu kan ik dat uiteraard met een login script doet, maar aangezien het nogal vaak gebruikt moet worden is dat niet erg gebruiksvriendelijk.
Nu zit ik hier op het bedrijfsnetwerk en zijn mensen uiteraard al ingelogd. LDAP dus.
Ondertussen kan ik al info uit de LDAP server lezen, maar ik wil nu de credentials waar mensen mee zijn ingelogd vergelijken met de server om te authenticeren. Maar..., ik dnek dat ik het niet goed benader, want je credentials worden denk ik niet in de header info meegestuurd ofzo? Is dit uberhaupt mogelijk?
1 2 3 | $_SERVER['LOGON_USER'] ?> |
1 2 3 | $_SERVER['AUTH_USER'] ?> |
Hij draait in hetzelfde domain, onder apachequote:Op maandag 11 februari 2008 12:02 schreef Geqxon het volgende:
[..]
Draait de webserver toevallig in hetzelfde domain als waar de gebruikers ingelogd zijn?
[ code verwijderd ]
of
[ code verwijderd ]
is dan een optie. Werkt enkel onder IIS, voor Apache heb je mod_ntlm nodig.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | require_once('includes/dbconnector.class.php'); $connector = new DbConnector(); if(isset($_SESSION['user_id'])) { //Login correct, update lastactive in db $connector->query("UPDATE cmsusers SET lastactive=NOW() WHERE id='".$_SESSION['user_id']."'"); } else{ if(isset($_COOKIE['user_id'])) { $result = $connector->query("SELECT pass,thegroup FROM cmsusers WHERE id='".$_COOKIE['user_id']."'"); $row = $connector->fetchArray($result); $dbpass = $row->pass; $dbstatus = $row->thegroup; if($dbpass == $_COOKIE['user_password']) { $_SESSION['user_id'] = $_COOKIE['user_id']; $_SESSION['user_status'] = $dbstatus; } else { setcookie("user_id", "", time() - 3600); setcookie("user_password", "", time() - 3600); echo "Cookies incorrect. Cookies verwijderd."; header("Location: login.php"); } } else{ //Hij blijft hierheen gaan header("Location: login.php"); } } ?> |
Ik had alles blijkbaar al eens geconfigureerd, en de login is nu transparant (met IE, met elke andere browser krijg je gewoon een login prompt). Maar.... ik wil nu de username terug vinden van degene die op de pagina zit. De suggesties van geqxon geeft niets terug en ook $_SERVER['PHP_AUTH_USER'] geeft niets terug.quote:Op maandag 11 februari 2008 13:16 schreef fokME2 het volgende:
@Swetsenegger: Met LDAP authorisatie heb ik ook eens gespeeld en het werkte goed. Ik dacht dat ik er een classe voor had gebruikt. Misschien dat ik het thuis nog kan vinden.
Nee, de authenticatie op zich werkte al, ik kon alleen nog niet achterhalen wie de ingelogde gebruiker was. In principe mag elke gebruiker van het domein op die pagina komen, maar afhankelijk van de gebruiker kan het zijn dat je andere opties hebt.quote:Op maandag 11 februari 2008 13:58 schreef Geqxon het volgende:
Swets, wat mij bij staat is dat als je de boel met .htaccess en .htpasswd beveiligd, dat Internet Explorer dan eerst met de username en password van de domein-gebruiker in probeert te loggen. Misschien een optie?
Laat de login.php eens zien, want volgens mij set je je cookies niet goed.quote:Op maandag 11 februari 2008 13:40 schreef Tarabass het volgende:
Zoals ik al eerder in dit topic aangaf ben ik bezig met een oop-cms. Alles gaat lekker alleen loop ik tegen een probleempje aan. Inloggen gaat goed, session-variables worden geset, en de user wordt doorgestuurd naar de index page. Daar include ik een 'safe-file' die check of de session is aangemaakt, die safe.php ziet er zo uit:
[ code verwijderd ]
Echter blijft de safe-file redirecten naar de login-page. Ik heb getest of de session is geset en dit is zeker weten het geval. Zien jullie wat ik verkeerd doe, want dit is erg frustrerend
ps: Heb deze manier van werken al in een andere website gebruikt en daar werkte het perfect. Met een safe.php en een safe_admin.php beveiligde ik de pages, met een redirect naar login.php. Dit was echter wel zonder classes..
1 2 | header("Location: login.php"); |
Waarschijnlijk gaat het ophalen van de sessie data niet goed in je safe include. Initialiseer je de sessie wel goed?quote:Op maandag 11 februari 2008 13:40 schreef Tarabass het volgende:
Zoals ik al eerder in dit topic aangaf ben ik bezig met een oop-cms. Alles gaat lekker alleen loop ik tegen een probleempje aan. Inloggen gaat goed, session-variables worden geset, en de user wordt doorgestuurd naar de index page. Daar include ik een 'safe-file' die check of de session is aangemaakt, die safe.php ziet er zo uit:
[ code verwijderd ]
Echter blijft de safe-file redirecten naar de login-page. Ik heb getest of de session is geset en dit is zeker weten het geval. Zien jullie wat ik verkeerd doe, want dit is erg frustrerend
ps: Heb deze manier van werken al in een andere website gebruikt en daar werkte het perfect. Met een safe.php en een safe_admin.php beveiligde ik de pages, met een redirect naar login.php. Dit was echter wel zonder classes..
De login gebruikt een functie in een class om in te loggen en eventueel cookies te zetten.quote:Op maandag 11 februari 2008 14:18 schreef Dzy het volgende:
[..]
Laat de login.php eens zien, want volgens mij set je je cookies niet goed.
Edit: En dit gaat uiteraard ook niet werken:
[ code verwijderd ]
Want een header sturen na output is natuurlijk te laat.
Dat is inderdaad de bedoeling. Maar omdat het niet werkte ben ik eerst een stap terug gegaan naar een losse file waarin gecheckt wordt of de sessie wel bestaat. De functionaliteit komt inderdaad in een functie in de sentry-class die ik dan bovenaan de pages aanroep. Maar nogmaals, classes zijn nieuw voor mij en daarom probeer ik eerst op een manier wat duidelijk voor mij is de code uit.quote:Op maandag 11 februari 2008 14:22 schreef Farenji het volgende:
[..]
Waarschijnlijk gaat het ophalen van de sessie data niet goed in je safe include. Initialiseer je de sessie wel goed?
Die safe include is overigens niet echt oop.
Het idee achter OOP is dat je functionaliteit groepeert in logische bouwblokken waaruit je je applicatie opbouwt. Het is dan logisch om een session class te maken, waar je alle session management in regelt. Eventueel zou je die sessie class deel kunnen laten uitmaken van de user class (als in: wel aparte classes maar een user object bevat/encapsuleert een session object). Het idee is dan dat je een objectmethode maakt (bijv $user->isLoggedIn()) die je overal kan gebruiken. Deze methode van de class user kijkt dan in de sessie (maw in het sessie object dat in het user object zit) van betreffende user of alles ok is en geeft dan een 1 (ingelogd) of een 0 (niet ingelogd) terug. Aan de hand daarvan kun je dan de gevraagde pagina tonen of redirecten naar de loginpagina.
Geeft inderdaad NULL, terwijl de linkjes in het menu in het if(isset($_SESSION['user_id'])-statement wel worden weergegeven :Squote:Op maandag 11 februari 2008 14:34 schreef Dzy het volgende:
Als de sessie daadwerkelijk zou bestaan zou hij niet naar login.php gaan. Doe eens een var_dump op $_SESSION en op $_COOKIE boven de if-then-else constructies.
Nee, ik weet al waar het in zat. De session werd gestart in de constructor van de sentry-class, maar die had een verkeerde naam. Nu werkt alles zoals het moet. Erg bedankt voor het meedenken want zo wist ik welke richting ik op moest zoekenquote:Op maandag 11 februari 2008 15:41 schreef Dzy het volgende:
Werd er niet per ongeluk al output gegenereerd? (Denk het niet want dan zou je header redirect ook niet werken maar je weet het maar nooit). Kan ook whitespace zijn.
1 2 3 4 5 6 7 | WHERE id NOT IN ( SELECT id FROM foo ORDER BY created DESC LIMIT 10 ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | function getLine($page, $keyword, $pattern) { foreach ($page as $line_num => $line) { if(strstr($line, $keyword)){ if(ereg($pattern, $line, $output)){ $result = $line_num; } } } return $result; } // URL van de pagina die doorzocht moet worden $url = "http://auto.marktplaats.nl/audi/132476134-150x-audi-a3-a4-a6-tdi-golf-4-5-tdi-benzine-seat-leon-tdi.html?return=eJwdyEEOgyAQheG7mOiuIJIuxBhDb0KURiLIhBmTpk3v3qGbme9%2FzijzCaaf0Ki7Mg16V9Z92onASHlk8KdIrhwE0TlCcUbpLso35LcFuY5a7JTi8oqz6jacKbfaqlY%2FIh87%2FjVU6SpivQMw8bkhBwvq2DMS7%2Fa8ki9h5cwYuIcO4Jr7Zvr%2BAA4JNF8%3D&fta=eNptVm1uGzkMvcv86G%2FxSxQ1yBX2CoFRp10DTmLETje7Qe5ejuiRVGBRIGheKJKPfCTnUEv9vPqP5f3t%2FPjrcL4uq%2F8qdfk4P8C34%2FXh9lphPUM1%2F4nVaD3f6n%2Bny3r9cbzW9XKraX2%2B1Jf356e30%2Ff1%2FFGREpmt53%2BrYC6E6%2Bv1VPHb5fL%2BkDbnXJfL4efTsp7c8bVSXU5Hj3qokKh%2BntzftVpdgJA1A%2FFuuGGOFEoFNgx3OyZjQ9ww6naKRilvGO9Y9oeU2luZ7LLG2zxjSLJhuscQIvEoG1Z2Oyol59Ji2PQWC2vLeSfCnjUxBpHOhPw5SoA4WeaC1MDORVjBCTawkwFk49SShIkNmHJYdjqIbgwtddBumYATRZ6dEEKyogHujJBLLqW0QNgZpYyg1vLEzsgdkFe5gZ2RgKjlFh07I1A1k9LAzkjZgCh8zowYc%2FicGgRkUU%2FUP5K%2F%2B%2ByMMmQQaAVBG3mqsjZL6oxcsm4YItoZEWlJrsMG4oievCQtT6KhBXMdtjypMxIyUAiwM3K5qVJEzyNPcbU2RqRDIQRQInoZfUeQFNE7I05IaO05pylPL12rPMMfeQZN7oxQsfifGjgYKakEd%2B6MCF3yGpajR5i8nG2ueDAyTUnj%2BaQ6E5YmMC4TqG7dwJ0RFSWy0qokQ3VIHijAzojZhHJ7LqNH2ew%2BMtIZ5eLMpSlZOiMvvc9hamBnJEmdaWyKPGTjC4rjuQ4li9cvno%2FFQFuRIs%2BhOvHB5tajnOYWl1hxecyR7ymJPZXHZrDs%2FWyVzzTRlBJTnHkabSixGfLOyIWYwCB8jh7l5AsjwM4oS1aOec9ltMPdcmOUbci7METjNE0poUrTvMLw6XoIeStOYGFqpVOaQGVqKSnPzzWUrDJbQmot1s6IuKQcI6M6gwUjzzKDEHOkNoMYNMvoEXjqsVjKdIcsSYih9EOUIXGOFpcxRwSC1miWoTp2IUJYDkbmF4rixuReedmSj%2BidkfcS%2FV8Dy3Qafau20pXBKPkaCJqWRuOEOU6PzZdVfEIaOHrki94XYwNptqQ4E8b9QLrs7sNlMhaLOB4%2Bp81QXLOR0pij7NA9z3GPkGw%2FsPY%2FXwCQ0uzUBzzQaZJE7mvVpTI8%2BCxu%2BX9d%2FcrW5fZ6ORyvj%2Benl5%2B3v%2FevCEh1%2Bf7%2B9vZ4ejk%2BfWzoPdbz4eNx%2B37xT5ZjbHCsy%2BGfZf3r%2Ft9f27dMqp9fX78BmNgwHA%3D%3D&fta_ind=1&df=1"; // Naar welk begindeel moet er worden gezocht: $search1 = 'Vermogen'; // Naar welk einddeel moet er worden gezocht: $search2 = 'Cylinderinhoud'; // Wat moeten er van die regel worden opgenomen: // Het patroon maakt gebruik van reguliere expressies //$pattern = '.*'; $pattern = '.*.'; ////// $lines = file($url); $begin = getLine($lines, $search1, $pattern); $end = getLine($lines, $search2, $pattern); for($i=$begin; $i < $end; $i++) { echo $lines[$i]; } ?> |
Handig!quote:Op maandag 11 februari 2008 20:42 schreef SuperRembo het volgende:
[ code verwijderd ]
(Als je niet een hele oude MySQL versie gebruikt)
"created? Geniaal, die maakte ik normaal altijd zelf.quote:Op maandag 11 februari 2008 20:42 schreef SuperRembo het volgende:
[ code verwijderd ]
(Als je niet een hele oude MySQL versie gebruikt)
En die noem ik dus meestal created en modifiedquote:Op maandag 11 februari 2008 21:51 schreef Geqxon het volgende:
O, ik dacht dat MySQL dat veld altijd zelf aanmaakt. In dat geval hou ik het wel zoals ik het nu doe, een veld date_added en een veld date_updated.
Geen probleem. Blij dat het gelukt is.quote:Op maandag 11 februari 2008 18:55 schreef Tarabass het volgende:
[..]
Nee, ik weet al waar het in zat. De session werd gestart in de constructor van de sentry-class, maar die had een verkeerde naam. Nu werkt alles zoals het moet. Erg bedankt voor het meedenken want zo wist ik welke richting ik op moest zoeken
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |