Avatar billede jakobclausen Nybegynder
14. januar 2004 - 22:31 Der er 30 kommentarer og
1 løsning

Hjælp til login script

Jeg har i et stykke tid siddet og arbejdet på en aktivitetskalender i php, og nu er tiden endelig kommet til at den skal implementeres på den rigtige hjemmeside. Men så løber jeg ind i det problem at serveren kører med den nyeste version af php hvilket min kodning åbenbart ikke virker på.

Det skal lige siges at scriptet virker fint lokalt hos mig, med  en ældre php version.

<-- login.php -->

<form method="post" action="tjeckLogin.php">
<input name="user" type="text" size="30">
<input name="pass" type="password" size="30">
<input name="submit" type="submit" value="Log in">
</form>

<-- tjeckLogin.php -->

if ($_POST['user'] == 'test' && $_POST['pass'] == 'test')
{
    setcookie("user","Test");
    header("Location: addActivity.php");
}

På siden addActivity.php er der så et script der tjekker om der er logget ind:

<-- addActivity.php -->
if (!isset($_COOKIE['user']))
{
    header("Location: login.php");
}

------
Jeg forsøger at gå ind på addActivity.php, men da jeg ikke er logget ind bliver jeg sendt videre til login.php hvor jeg indtaster det rigtig brugernavn og password, og klikker på login. Nu ser det ud som om siden bliver reloadet og felterne tømt - dog tror jeg at jeg kommer en tur forbi addActivity.php som stadig ikke kan se at jeg er logget ind og sender mig tilbage.

Nogen der kan hjælpe med at få det til at virke?
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 22:38 #1
Kører den ene Apache og den anden IIS ?
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 22:40 #2
Ja min lokale server er apache og stedet hvor jeg vil ligge det op er IIS
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 22:44 #3
Ja, IIS har en klassisk fejl (har måske stadig, eller også er den rettet), som bevirker at
den ikke kan sætte en cookie samtidig med en redirect.

Så ... tjah ... hvad med at tage konskvensen og sige at PHP kører bedst under Apache på
en Linux/Unix platform?
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 22:45 #4
erikjacobsen >> Er der ikke en løsning på problemet?

Det er jo ikke mit domæne, så lidt træls at skulle ind og flytte det over på en anden server.
Avatar billede squashguy Nybegynder
14. januar 2004 - 22:46 #5
Er klienten sat til at acceptere cookies?

En anden ting er, at du må ikke bruge cookies til login. Her skal du bruges sessions.
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 22:48 #6
Jo, Jakob, der er work-arounds, men nogen gange synes jeg man skal tage konsekvensen
af elendigt software og smide det ud. Jeg skal ikke have point for disse oplysninger - gem
dem til hvis der kommer nogen med en workaround. ;))
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 22:48 #7
squashguy>> Det ved jeg faktisk ikke!

Hvorfor må man ikke det? Vil sessions kunne løse problemet ?
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 22:49 #8
....og det gjorde der så ;)
Avatar billede squashguy Nybegynder
14. januar 2004 - 22:50 #9
cookies gemmes jo på klienten, og kan derfor forfalskes. Du kan ikke bare forfalske en session.
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 22:53 #10
squashguy >> Kan du hjælpe mig med at få rettet mit script så jeg istedet bruger sessions - det er vel næsten kun tjeckLogin.php der skal rettes og så $_SESSION['user'] på addAcitivity.php
Avatar billede squashguy Nybegynder
14. januar 2004 - 23:02 #11
prøv dette

tjeckLogin.php:

if ($_POST['user'] == 'test' && $_POST['pass'] == 'test')
{
    session_start();
    $_SESSION["auth"] = "ok";
    $_SESSION["user"] = $_POST['user'];
    header("Location: addActivity.php");
    exit();
}

addActivity.php:

session_start();
if (!(isset($_SESSION['user']) && $_SESSION['auth']=="ok"))
{
    header("Location: login.php");
    exit();
}
Avatar billede squashguy Nybegynder
14. januar 2004 - 23:04 #12
Det eneste som nu gemmes på klienten er session_id. auth og user ligger på serveren, og kan ikke ændres af brugeren.
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:06 #13
Jeg får en masse fejl:

Warning: session_start(): open(C:\PHP\sessiondata\sess_1421c78d08739022b48386b8d47ce623, O_RDWR) failed: Permission denied (13) in D:\websider\global\ryde.dk\kalender\addActivity.php on line 7

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\websider\global\ryde.dk\kalender\addActivity.php:7) in D:\websider\global\ryde.dk\kalender\addActivity.php on line 7

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\websider\global\ryde.dk\kalender\addActivity.php:7) in D:\websider\global\ryde.dk\kalender\addActivity.php on line 7

Warning: Cannot modify header information - headers already sent by (output started at D:\websider\global\ryde.dk\kalender\addActivity.php:7) in D:\websider\global\ryde.dk\kalender\addActivity.php on line 10

Warning: Unknown(): open(C:\PHP\sessiondata\sess_1421c78d08739022b48386b8d47ce623, O_RDWR) failed: Permission denied (13) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\PHP\sessiondata) in Unknown on line 0
Avatar billede squashguy Nybegynder
14. januar 2004 - 23:08 #14
1. opret en mappe til session. C:\PHP\sessiondata
2. du må ikke udskrive noget til browseren før session_start()

så de der <!-- en kommentar --> må ikke stå øverst i filen
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:11 #15
(1) Skal jeg oprette det på serveren eller hvordan ?
(2) De er heller ikke med i koden, blot til forklaring her på exp
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 23:13 #16
Det er serveren der ikke er konfigureret korrekt, når det sker. Har du ikke adgang til det,
er der vel ikke så meget du kan gøre, ud over at kontakte support. Hvad er det for et sted??
Avatar billede squashguy Nybegynder
14. januar 2004 - 23:14 #17
ja, du skal oprette en mappe på serveren. Her vil webserveren gemme alle sessiondata
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:14 #18
Det er vidst struernet.dk
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:15 #19
erikjacobsen >> men du vil mene det var lettere på en apache ?
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 23:24 #20
Til hver en tid ;)

Lad os lige: det er ikke på din egen maskine du mangler det katalog? Det er på IIS-serveren,
hvor et skal uploades og køre rigtigt? Og det er måske struernet?
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:30 #21
erikjacobsen >> korrekt, og har lige tjekket det er struer.net (struernet.dk)
Avatar billede erikjacobsen Ekspert
14. januar 2004 - 23:37 #22
Så er der arbejde til support. Men start sessionen allerede på siden med formen, for
ellers får du samme problem, da den også skal sætte en cookie. Det gør den ikke, hvis
der allerede er en session, og så skulle det kunne køre på selv en aldrende IIS.
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:39 #23
erikjacobsen >> har du skrevet til supporten eller hvordan?
Avatar billede jakobclausen Nybegynder
14. januar 2004 - 23:41 #24
erikjacobsen >> ALtså jeg skal bare sætte session_start(); ind på min login.php ??
Avatar billede erikjacobsen Ekspert
15. januar 2004 - 09:47 #25
Hvorfor skulle jeg skrive til supporten?

Put blot en session_start() ind i alle dine filer. Allerøverst.
Avatar billede jakobclausen Nybegynder
15. januar 2004 - 10:47 #26
erikjacobsen >> never mind, du skrev bare "så er der lidt arbejde til supporten"
Avatar billede jakobclausen Nybegynder
15. januar 2004 - 12:21 #27
Jeg har i samarbejde fået det hele til at virke. Vil I ikek lægge et svar så jeg kan få lukket, tak!
Avatar billede erikjacobsen Ekspert
15. januar 2004 - 12:27 #28
nej tak, jeg samler ikke på point
Avatar billede jakobclausen Nybegynder
15. januar 2004 - 13:21 #29
erikjacobsen >> nej du er rigtig træls ;-)

squashguy >> Så må du hellere smide et svar
Avatar billede jakobclausen Nybegynder
16. januar 2004 - 07:18 #30
Hvad bliver det til? :-)
Avatar billede squashguy Nybegynder
16. januar 2004 - 08:18 #31
jamen okay :)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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