/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Login halløj
Fra : Ryan Jeppesen


Dato : 18-05-02 23:59

Hej

Jeg har en admin sektion på min side hvor jeg har et login script hvor
hvis man logger ind så bliver der gemt en cookie. Men hvordan tjecker
jeg smartest på under admin siderne om cookie er tilstede.

Jeg kan selvfølige lave en lang IF sætning ala:

<?
header("Expires Wed,6 Sep 2000 10:10:10 GMT");
header("Last-Modified:".gmdate("d,d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");


if ($pw){

Admin side indhold.........


}else{
header("Location:
login.php?error=Sorry_but_you_do_not_have_access_to_this_admin_pages");

}
?>

Men det er jo ikke ligefrem den mest smarte måde at lave det på da .

Nogen der har nogen ideer/løsninger til hvordan jeg kunne lave det
lidt smartere/nemmere??

På forhånd tak

/Ryan

 
 
Lars Petersen (19-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 19-05-02 00:27

> Jeg har en admin sektion på min side hvor jeg har et login script hvor
> hvis man logger ind så bliver der gemt en cookie. Men hvordan tjecker
> jeg smartest på under admin siderne om cookie er tilstede.

Lav et script check_auth.php som du inkluderer øverst i alle dine admin
sider...

<?php
if (!$_COOKIE['pw'])
{
require('ikke_autoriseret.php');
exit;
}
?>

ikke_autoriseret.php indeholder din fejlmeddelelse og evt. en loginformular
:)



--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Ryan Jeppesen (19-05-2002)
Kommentar
Fra : Ryan Jeppesen


Dato : 19-05-02 16:04

On Sun, 19 May 2002 01:27:26 +0200, "Lars Petersen"
<lp@your-pants.coder.dk> wrote:

>> Jeg har en admin sektion på min side hvor jeg har et login script hvor
>> hvis man logger ind så bliver der gemt en cookie. Men hvordan tjecker
>> jeg smartest på under admin siderne om cookie er tilstede.
>
>Lav et script check_auth.php som du inkluderer øverst i alle dine admin
>sider...
>
><?php
> if (!$_COOKIE['pw'])
> {
> require('ikke_autoriseret.php');
> exit;
> }
>?>
>
>ikke_autoriseret.php indeholder din fejlmeddelelse og evt. en loginformular
>:)
>

Ovenstående ville helt klart være smartere!. Hvis jeg bare kunne få
det til at virke :)

Jeg lavede en side hvor jeg inkluderede ovestående kode, men selvom
cookien er sat så bliver jeg viderestillet til ikke_autoriseret.php.

Koden:

check_auth.php:
<?php
if (!$_COOKIE['pw'])
{
require('ikke_autoriseret.php');
exit;
}
?>

ikke_autoriseret.php :
<?
echo "
<CENTER>
Your username and paswword is incorrect<br>
Please try again<br>
<form method=\"post\" Action=\"admin.php\">
<br><P><B>Username:</B><br>
<input type=\"text\" Name=\"PHP_AUTH_USER\" size=25 maxlength=20></p>
<P><B>Password:</B><br>
<input type=\"password\" name=\"PHP_AUTH_PW\" size=25
maxlength=20></p>
<input type=\"submit\" Name=\"submit\" value=\"Login\"></p>
</form>
</CENTER>
";
?>

..php med include

<?
include "check_auth.php";
?>
<html>
<head>
<title>Add News</title>
</head>
osv osv osv

Ved du hvad der lige går galt??, jeg kan ikke se hvad det skulle være
:(

Ellers mange tak for hjælpen!!!

Hilsen Ryan

Lars Petersen (19-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 19-05-02 16:44

> Ovenstående ville helt klart være smartere!. Hvis jeg bare kunne få
> det til at virke :)
>
> Jeg lavede en side hvor jeg inkluderede ovestående kode, men selvom
> cookien er sat så bliver jeg viderestillet til ikke_autoriseret.php.

Hvilken version af php bruger du? Prøv med !strlen($HTTP_COOKIES[¨'pw']) i
stedet...
:)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Ryan Jeppesen (19-05-2002)
Kommentar
Fra : Ryan Jeppesen


Dato : 19-05-02 18:57

On Sun, 19 May 2002 17:43:37 +0200, "Lars Petersen"
<lp@your-pants.coder.dk> wrote:

>> Ovenstående ville helt klart være smartere!. Hvis jeg bare kunne få
>> det til at virke :)
>>
>> Jeg lavede en side hvor jeg inkluderede ovestående kode, men selvom
>> cookien er sat så bliver jeg viderestillet til ikke_autoriseret.php.
>
>Hvilken version af php bruger du? Prøv med !strlen($HTTP_COOKIES[¨'pw']) i
>stedet...
>:)
Jeg bruger 4.0 derfor virker $_COOKIE ikke. Det er med vilje at jeg
bruger denne "gamle" ver af php, da min webhotel udbydere ikke kører
med den nyeste php.

Jeg kan hel ik få oventående til at virke jeg får en parse error. Men
jeg kan nu ikke se nogen parse fejl. Jeg får parse error i denne
linje:
if !strlen($HTTP_COOKIES['pw']) jeg har også prøvet med
if !strlen($HTTP_COOKIE_VARS['pw']) men det er det samme der går galt.

Fatter det bare ikke!

Den linje du skrev var der ¨ foran 'pw', hvad hulen er det, en fejl
ik??



Lars Petersen (19-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 19-05-02 19:04

> Jeg bruger 4.0 derfor virker $_COOKIE ikke. Det er med vilje at jeg
> bruger denne "gamle" ver af php, da min webhotel udbydere ikke kører
> med den nyeste php.
>
> Jeg kan hel ik få oventående til at virke jeg får en parse error. Men
> jeg kan nu ikke se nogen parse fejl. Jeg får parse error i denne
> linje:
> if !strlen($HTTP_COOKIES['pw']) jeg har også prøvet med
> if !strlen($HTTP_COOKIE_VARS['pw']) men det er det samme der går galt.

if (!strlen($HTTP_COOKIES['pw']))
eller
if (!strlen($HTTP_COOKIE_VARS['pw']))

;)

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Ryan Jeppesen (20-05-2002)
Kommentar
Fra : Ryan Jeppesen


Dato : 20-05-02 18:46

On Sun, 19 May 2002 20:04:15 +0200, "Lars Petersen"
<lp@your-pants.coder.dk> wrote:

>if (!strlen($HTTP_COOKIES['pw']))
>eller
>if (!strlen($HTTP_COOKIE_VARS['pw']))
>
>;)
Ok, med (!strlen($HTTP_COOKIES['pw'])) virker d ik og med
(!strlen($HTTP_COOKIE_VARS['pw'])) får man adgang selvom cookien ikke
er tilstede, jeg tror bare jeg dropper det her cookie halløj og
skifter til sessions istedet.

Mange tak for hjælpen alligevel!!

/Ryan


Thomas Lindgaard (19-05-2002)
Kommentar
Fra : Thomas Lindgaard


Dato : 19-05-02 17:59

Davs

> Ovenstående ville helt klart være smartere!. Hvis jeg bare kunne få
> det til at virke :)
>
> Jeg lavede en side hvor jeg inkluderede ovestående kode, men selvom
> cookien er sat så bliver jeg viderestillet til ikke_autoriseret.php.

Et skud i tågen: Man kan ikke sætte en cookie og bruge den i samme omgang,
idet cookies først bliver synlige efter et reload - kan det være sårn noget
du snubler i?

Mvh.
/Thomas



Lars Petersen (19-05-2002)
Kommentar
Fra : Lars Petersen


Dato : 19-05-02 18:25

> > Ovenstående ville helt klart være smartere!. Hvis jeg bare kunne få
> > det til at virke :)
> >
> > Jeg lavede en side hvor jeg inkluderede ovestående kode, men selvom
> > cookien er sat så bliver jeg viderestillet til ikke_autoriseret.php.
>
> Et skud i tågen: Man kan ikke sætte en cookie og bruge den i samme omgang,
> idet cookies først bliver synlige efter et reload - kan det være sårn
noget
> du snubler i?

Yeps. Brug sessions i stedet ;)


--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Jacob Volstrup (20-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 20-05-02 12:48

> > du snubler i?
>
> Yeps. Brug sessions i stedet ;)
Er det ikke noget med at sessions (den indbyggede i PHP) stadig kræver at
brugeren har cookies slåt til?

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Jonas Koch Bentzen (20-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 20-05-02 14:17

Jacob Volstrup skrev:
>
> Er det ikke noget med at sessions (den indbyggede i PHP) stadig kræver
> at brugeren har cookies slåt til?

Nej.

Man skal dog huske, at hvis ens script skal virke i browsere, hvor
cookies er slået fra, skal man overføre sessions-ID'et i linket:

<a href='noget.php?navn=Jonas&".SID."'>Test</a>

Bemærk, at konstanten SID ikke outputter, hvis ens browser understøtter
cookies. Hvis man prøver at slå cookies fra og så skriver

echo SID;

vil man se, at den indeholder noget.

--
Jonas Koch Bentzen

http://understroem.dk/

Jacob Volstrup (21-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 21-05-02 00:03

> Man skal dog huske, at hvis ens script skal virke i browsere, hvor
> cookies er slået fra, skal man overføre sessions-ID'et i linket:

Øv!
Hvordan finder PHP ud af om cookies er slået til/fra? Hvis man selv kan
tjekke det i sin kode, kunne man jo lave en session, som nøjes med at gemme
ip, adresse og browsernavn, hvis cookies er slået fra. I mange tilfælde kan
det jo godt bruges (jeg bruger det selv mange steder).
Jeg har bare endnu ikke fundet ud af at tjekke om cookies virker, uden at
skulle reloade siden.

Er det muligt, eller skal man helt ind i 'hjertet' (socsen) af PHP for at
kunne gøre det?

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Jonas Koch Bentzen (21-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 21-05-02 10:28

Jacob Volstrup skrev:
>
> Hvordan finder PHP ud af om cookies er slået til/fra?

Det ved jeg ikke.

> Hvis man selv
> kan tjekke det i sin kode

Hvis (empty(SID)) burde man kunne regne med, at brugeren browser
modtager cookies.

--
Jonas Koch Bentzen

http://understroem.dk/

Thomas Lindgaard (22-05-2002)
Kommentar
Fra : Thomas Lindgaard


Dato : 22-05-02 10:38

Davs

> Hvordan finder PHP ud af om cookies er slået til/fra?

Er det ikke noget med at
1) sætte en cookie
2) loade en ny side og checke om cookien er sat

Jeg mener ikke, at der er en PHP-ting, som kan afgøre det direkte... men det
er der sikkert et klogt hovede som lige sidder og brænder efter at fortælle
os andre dødelige :)

Mvh.
/Thomas



Jacob Volstrup (22-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 22-05-02 14:52

> Er det ikke noget med at
> 1) sætte en cookie
> 2) loade en ny side og checke om cookien er sat

Jo, men jeg har lavet en løsning, så man har helt styr på sine besøgende,
uanset om de har cookies slået til, eller ej!
Det eneste som der kræves, er at man har adgang til mySQL (eller en anden
SQL-server for den sags skyld).
Det kan sikkert laves, så der bruges filer, men det gider jeg ikke bruge tid
på.

Den eneste hage, er at hvis der er 2 brugere fra samme IP (eks. 2 på den
samme ADSL-linie, via router), som bruger samme OS, og begge har slået
cookies fra, så vil de blive detected som den samme bruger.
Men det er da bedre end ingenting!

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -

CREATE TABLE sessions (
id bigint(20) unsigned NOT NULL auto_increment,
php_sessid varchar(32) NOT NULL default '',
time varchar(32) NOT NULL default '',
ip varchar(15) NOT NULL default '',
adress varchar(60) NOT NULL default '',
browser varchar(120) NOT NULL default '',
active tinyint(1) NOT NULL default '0',
PRIMARY KEY (id),
UNIQUE KEY id (id),
KEY id_2 (id),
KEY id_3 (id)
) TYPE=MyISAM;

function session_update () {
# * * * * * * * * * * * #
# session_update #
# By Jacob Volstrup #
# volstrup@avanceret.dk #
# * * * * * * * * * * * #
global $REMOTE_ADDR, $HTTP_USER_AGENT;
session_start();
$ip = $REMOTE_ADDR;
$adresse = gethostbyaddr($ip);
$browser = $HTTP_USER_AGENT;
$sessId = session_id();
$time = time();
$newtime = $time + 3600; file://timeout in seconds
$sql = "UPDATE sessions
SET aktiv = '0'
WHERE time < '$time'";
mysql_query($sql);
if (!SID) {
$sql = "SELECT * FROM sessions
WHERE php_sessid = '$sessId'
AND time > '$time'
AND active = '1'";
} else {
$sql = "SELECT * FROM sessions
WHERE ip = '$ip'
AND adress = '$adress'
AND browser = '$browser'
AND time > '$time'
AND active = '1'";
}
$data = mysql_query($sql);
if ($sessionsdata = mysql_fetch_array($data)) {
file://session exists
$sessions_id = $sessionsdata["id"];
$sql = "UPDATE sessions
SET time = '$newtime'
WHERE id = '$sessions_id'";
mysql_query($sql);
} else {
file://session doesn't exist
$sql = "INSERT INTO sessions (time, ip, adress, browser, active,
php_sessid)
VALUES('$newtime', '$ip', '$adress', '$browser', '1',
'$sessId')";
mysql_query($sql);
$sessions_id = mysql_insert_id();
}
return $sessions_id;
}



Jacob Volstrup (22-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 22-05-02 14:54

> samme ADSL-linie, via router), som bruger samme OS, og begge har slået

Samme OS, samme browser, etc...

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Andreas Kleist Svend~ (22-05-2002)
Kommentar
Fra : Andreas Kleist Svend~


Dato : 22-05-02 15:03

Jacob Volstrup wrote:

>> samme ADSL-linie, via router), som bruger samme OS, og begge har slået
>
> Samme OS, samme browser, etc...

Så må det vist give samme problem hvis der kommer en med to forskellige
browsere ... Lige bortset fra at den i det tilfælde vil tælle en for
meget...

--
mvh Andreas Kleist Svendsen

Jacob Volstrup (22-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 22-05-02 23:58

> Så må det vist give samme problem hvis der kommer en med to forskellige
> browsere ... Lige bortset fra at den i det tilfælde vil tælle en for
> meget...

Jeg er ikke helt sikker på at jeg forstår... Er du tit ude for at dine
besøgende bruger 2 forskellige browsere?

Skrev blot at mit sessions-script har en 'fejl' indbygget, hvis brugeren
ikke har cookies slået til. Dvs. at hvis 2 brugere med den samme eksterne IP
(de kunne evt. sidde bag en router), begge har samme os, og samme browser,
så vil den header som browseren sender, være ens for de 2 brugere. Derfor
kan scriptet altså ikke se forskel på dem!

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Andreas Kleist Svend~ (23-05-2002)
Kommentar
Fra : Andreas Kleist Svend~


Dato : 23-05-02 08:02

Jacob Volstrup wrote:

> Jeg er ikke helt sikker på at jeg forstår... Er du tit ude for at dine
> besøgende bruger 2 forskellige browsere?

Nej, men det er sket.

--
mvh Andreas Kleist Svendsen

Jacob Volstrup (23-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 23-05-02 10:58

> > Jeg er ikke helt sikker på at jeg forstår... Er du tit ude for at dine
> > besøgende bruger 2 forskellige browsere?
>
> Nej, men det er sket.

Og så regner de med at de kan fungere med den samme session, selvom de kører
med 2 forskellige browsere på én gang?

Enten har du meget sære besøgende, eller også har jeg (forhåbentlig) blot
misforstået noget.

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Andreas Kleist Svend~ (23-05-2002)
Kommentar
Fra : Andreas Kleist Svend~


Dato : 23-05-02 11:41

Jacob Volstrup wrote:

> Og så regner de med at de kan fungere med den samme session, selvom de
> kører med 2 forskellige browsere på én gang?

Det tror jeg ikke.

> Enten har du meget sære besøgende, eller også har jeg (forhåbentlig) blot
> misforstået noget.

Det handler såmænd bare om at du skriver at man har helt styr på sine
besøgende, bortset fra et (tænkt) tilfælde hvor det ikke fungerede helt.
Det faldt mig så bare ind at det ikke var det eneste tilfælde hvor man ikke
havde helt styr på brugerne. Og det var så det jeg nævnte.

Jeg tror misforståelsen består i at jeg troede det var vigtigt for dig at
vide hvor mange brugere du havde, men som jeg ser det nu er det vigtige for
dig at dine sessions virker og at det i princippet er ligegyldigt hvor
mange besøgende der er. I så fald er min bemærkning selvfølgelig irrelevant.

--
mvh Andreas Kleist Svendsen

Jacob Volstrup (23-05-2002)
Kommentar
Fra : Jacob Volstrup


Dato : 23-05-02 12:10

> Det handler såmænd bare om at du skriver at man har helt styr på sine
> besøgende, bortset fra et (tænkt) tilfælde hvor det ikke fungerede helt.
> Det faldt mig så bare ind at det ikke var det eneste tilfælde hvor man
ikke
> havde helt styr på brugerne. Og det var så det jeg nævnte.

Jeg forstår altså bare ikke helt hvor du vil hen med det. Der er da helt
styr på de besøgende, bortset fra hvis to besøgende har samme ip mm. Men det
tror jeg nu ikke sker så ofte.

> Jeg tror misforståelsen består i at jeg troede det var vigtigt for dig at
> vide hvor mange brugere du havde, men som jeg ser det nu er det vigtige
for
> dig at dine sessions virker og at det i princippet er ligegyldigt hvor
> mange besøgende der er. I så fald er min bemærkning selvfølgelig
irrelevant.

Antal sessions = antal brugere.

--
Mvh Jacob Volstrup
- www.netspecialisten.dk -



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste