Avatar billede mrmox2 Nybegynder
18. november 2014 - 01:42 Der er 3 kommentarer og
1 løsning

Tjekke om der er logget ind inden kode køres

Hejsa - mine almindelige php-filer har denne kode helt i toppen

<?php
session_start()
if (!isset($_SESSION['myplacename'])) {
header("location:index.php");
}
?>

Det betyder at siden ikke kan kaldes direkte på URL - og at man logger ud ved at afslutte sessionen (myplacename læses fra databasen ved login).

Men jeg har et problem med de php-filer som benyttes til form action. Der kan jeg ikke benytte denne kode. Det betyder fx at man kan køre commitform.php direkte fra adresselinjen uden at være logget ind:

Jeg har form.php som indeholder form 2 der startter sådan
<form name="form2" method="post" action="commitform.php">

commitform.php kan ikke starte med den koden nævnt ovenfor - så sker der bare ikke noget. Og det betyder som nævnt at jeg kan skrive
http://webstednavn/commitform.php direkte ind i en adresselinje uden at være logget ind.

Er der en best practice til at beskytte den slags filer?

Er der noget kode jeg skal kopiere ind for at vise mere om setup?
Avatar billede mrmox2 Nybegynder
18. november 2014 - 06:29 #1
Eller det det mest almindelige at man placerer sin action i den samme php fil? Vil bare helst have det i to forskellige af hensyn til opdateringen af brugerfladen .....
Avatar billede mrmox2 Nybegynder
18. november 2014 - 08:40 #2
nå - jeg lagde dem sammen samme fil efter denne ide:
http://www.eksperten.dk/spm/932503
det virkede
Avatar billede moddi100 Seniormester
18. november 2014 - 17:23 #3
Hvorfor kan den ikke starte med din kode? Det ser jeg da intet problem i.

Derudover skal du være opmærksom på, at selvom du laver et redirect med header(), så FORTSÆTTER siden med at afvikles. Betragt følgende:

<?php
// Videresend brugeren uanset hvad
header('Location: http://www.google.dk');

// Da vi blot har bedt browseren om at gå til en ny url,
// fortsættes udførselen af resten af din kode

// Udfør en eller anden tophemmelig handling
mail("din@e-mail.dk", "Får du mon en besked", "Jeg udføres", "From: test@hotmail.com");
?>


Dette vil resultere I at du modtager en e-mail så snart filen køres - uagtet at brugeren ender på en helt anden side.

Løsningen på dette er heldigvis ret simpel:
<?php
session_start()
if (!isset($_SESSION['myplacename'])) {
header("location:index.php");

// Stop med at udføre mere kode!
exit;
}
?>
Avatar billede mrmox2 Nybegynder
18. november 2014 - 17:37 #4
What det er fedt
1000 tak
det løser mit problem her http://www.eksperten.dk/spm/999450
kan du ikke smide et svar der
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester