Avatar billede venchil Nybegynder
30. april 2005 - 15:02 Der er 33 kommentarer og
1 løsning

Problem med admin-del

Jeg har en administrations-del på min hjemmeside, men jeg har et lille problem med login-scriptet.

<?php

$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];

$rigtigt_brugernavn = "test";
$rigtigt_password = "test";

if(empty($brugernavn) || empty($kodeord)) {
echo "Husk at indtaste både brugernavn og password";
}
elseif ($brugernavn = $rigtigt_brugernavn and $password = $rigtigt_password) {
echo "Du er nu logget ind som administrator<br>Brugernavn: $brugernavn<br>Password: $password";
}
else {
echo "Brugernavnet / Passwordet var desværre forkert";
}
?>

Hvad gør jeg galt? "erroren" er: "Husk at indtaste både brugernavn og password"
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:04 #1
Du skal lige ha lavet en sammenligning her istedet for at sætte variablenerne:

( ($brugernavn == $rigtigt_brugernavn) && ($password == $rigtigt_password) )
Avatar billede coderdk Praktikant
30. april 2005 - 15:06 #2
Både det som hmortensen skriver, men din $_REQUEST['brugernavn'] og/eller $_REQUEST['password'] må være tom/ikke sat...
Avatar billede venchil Nybegynder
30. april 2005 - 15:08 #3
coderdk < Nej, det ved jeg
Avatar billede venchil Nybegynder
30. april 2005 - 15:10 #4
Nu virker det da, men jeg kan bare logge ind som hvad som helst...
Avatar billede venchil Nybegynder
30. april 2005 - 15:11 #5
Jeg er logget ind, selvom password ikke er sat eller noget, og den viser stadig mit brugernavn som test og mit password som test, selvom jeg f.eks skriver lala og jegersej
Avatar billede venchil Nybegynder
30. april 2005 - 15:11 #6
<?php

$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];

$rigtigt_brugernavn = "test";
$rigtigt_password = "test";

if (empty($brugernavn) && empty($kodeord)) {
echo "Husk at indtaste både brugernavn og password";
}
elseif ($brugernavn = $rigtigt_brugernavn and $password = $rigtigt_password) {
echo "Du er nu logget ind som administrator<br>Brugernavn: $brugernavn<br>Password: $password";
}
else {
echo "Brugernavnet / Passwordet var desværre forkert";
}
?>
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:12 #7
Prøv lige at trykke Ctrl + F5 for at gennemtvinge en opdatering
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:12 #8
Du har ik rette if sætningen (kig på mit først indlæg).
Avatar billede venchil Nybegynder
30. april 2005 - 15:14 #9
Hvad mener du? Kan du give mig noget kode?
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:14 #10
Og $kodeord og $password går ikke
Avatar billede venchil Nybegynder
30. april 2005 - 15:15 #11
Hvorfor ikke?
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:16 #12
<?php

$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];

$rigtigt_brugernavn = "test";
$rigtigt_password = "test";

if (empty($brugernavn) && empty($password)) {
echo "Husk at indtaste både brugernavn og password";
}
elseif ( ($brugernavn == $rigtigt_brugernavn) && ($password == $rigtigt_password) ) {
echo "Du er nu logget ind som administrator<br>Brugernavn: $brugernavn<br>Password: $password";
}
else {
echo "Brugernavnet / Passwordet var desværre forkert";
}
?>
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:17 #13
Her sætter du variablen $password:
$password = $_REQUEST["password"];


Og her tester du på variablen $kodeord:
empty($kodeord))
Avatar billede venchil Nybegynder
30. april 2005 - 15:21 #14
Nu virker det vist. Men. Hvordan gør jeg sådan, at jeg frit kan surfe rundt på admin-siden, uden konstant at indtaste noget, så jeg kan få "postet"? Nærmere sagt. Hvordan kan jeg få SESSIONS med ind, og hvordan kan jeg hive sessions frem på en anden side?
Avatar billede venchil Nybegynder
30. april 2005 - 15:23 #15
Du kan sagtens få flere point.
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:34 #16
Et eksempel på session:

---- side1.php ----
<?php
//Aktivere brugen af session
session_start();

if ($kodeord == "det rigtige")
{
  //Sætter en session med navnet brugernavn til "Et eller andet"
  $_SESSION['brugernavn'] == "Et eller andet";
}
?>

---- side2.php ----
<?php
//Aktivere brugen af session
session_start();

//Udskriver værdien af sessionen brugernavn
echo $_SESSION['brugernavn'];
?>


I dit tilfælde kan du sætte en session variable når login er ok, og så teste om den session variable findes på de andre sider.
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:43 #17
Lille fejl:
$_SESSION['brugernavn'] = "Et eller andet";
Avatar billede venchil Nybegynder
30. april 2005 - 15:52 #18
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/forside.php:10) in /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/admin/admin_forside.php on line 4

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/forside.php:10) in /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/admin/admin_forside.php on line 4

Dén error får jeg desværre på forsiden. Har haft problemet før, min kode ser sådan ud:

<table style="background-color:#41506D;width:100%;"><tr><td><b><span class="b">Administration</span></b></span></td></tr></table>
<?php

session_start();

$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];

$rigtigt_brugernavn = "test";
$rigtigt_password = "test";

if (empty($brugernavn) || empty($password)) {
echo "Husk at indtaste både brugernavn og password";
}
elseif ( ($brugernavn == $rigtigt_brugernavn) && ($password == $rigtigt_password) ) {

$_SESSION['brugernavn'] = "$brugernavn";
$_SESSION['password'] = "$password";

echo "Du er nu logget ind som administrator<br>Brugernavn: $brugernavn<br>Password: $password";
}
else {
echo "Brugernavnet / Passwordet var desværre forkert";
}
?>

Jeg bliver fint logget ind nedenunder erroren
Avatar billede hmortensen Nybegynder
30. april 2005 - 15:54 #19
Du skal ha session_start(); før udskrift til skærmen
Avatar billede venchil Nybegynder
30. april 2005 - 16:14 #20
Får stadig en error, selvom jeg bruger koden:

<?php session_start(); ?>

<table style="background-color:#41506D;width:100%;"><tr><td><b><span class="b">Administration</span></b></span></td></tr></table>
<?php

$brugernavn = $_REQUEST["brugernavn"];
$password = $_REQUEST["password"];

$rigtigt_brugernavn = "test";
$rigtigt_password = "test";

if (empty($brugernavn) || empty($password)) {
echo "Husk at indtaste både brugernavn og password";
}
elseif ( ($brugernavn == $rigtigt_brugernavn) && ($password == $rigtigt_password) ) {

$_SESSION['brugernavn'] = "$brugernavn";
$_SESSION['password'] = "$password";

echo "Du er nu logget ind som administrator<br>Brugernavn: $brugernavn<br>Password: $password";
}
else {
echo "Brugernavnet / Passwordet var desværre forkert";
}
?>
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:16 #21
Får du samme fejl ?
Avatar billede venchil Nybegynder
30. april 2005 - 16:17 #22
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/forside.php:10) in /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/admin/admin_forside.php on line 1

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/forside.php:10) in /customers/darkcloud.dk/darkcloud.dk/httpd.www/animepark/madskjaer/admin/admin_forside.php on line 1

Nu er det bare linje 1
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:20 #23
Du inkludere den side du har vist her, på en anden side ?

Normalt har man en side med design og en form til at logge ind med. Den sender så dataen til en anden side uden noget design, hvor dataen bliver behandlet, og sessionen bliver sat.
Avatar billede venchil Nybegynder
30. april 2005 - 16:22 #24
Ja, jeg inkluderer både loginform.html og selve admin_forside.php i en fil kaldet forside.php
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:23 #25
For ikke at lave for meget om, burde det kunne løses ved at placére session_start(); øverst i forside.php istedet.
Avatar billede venchil Nybegynder
30. april 2005 - 16:25 #26
Hvis jeg placerer session_start(); i toppen af forside.php, skal jeg altså ikke placere den igen på admin-siderne? Prøver jeg lige...
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:27 #27
Korrekt, kun et sted, og altid før output
Avatar billede venchil Nybegynder
30. april 2005 - 16:28 #28
Må jeg godt placere før <html> og doctype ?
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:29 #29
<html> osv er output.

Output = sendt til klienten.

Så sæt det i linie 1.
Avatar billede venchil Nybegynder
30. april 2005 - 16:31 #30
Nu virker det hele som det skal. Jeg skal lige have testet nogle ting inden du får point. Men er 15 ikke lidt for lidt? Vil du slet ikke have flere?
Nå, du må godt lægge et svar.
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:32 #31
Det er ikke point der er vigtige. Det er at du fik dit problem løst.
Avatar billede venchil Nybegynder
30. april 2005 - 16:34 #32
Har erfaring med folk der blev utilfredse, så, skulle lige være helt sikker...
Avatar billede venchil Nybegynder
30. april 2005 - 16:47 #33
Jah, så virker det helt... Tak skal du have :D
Avatar billede hmortensen Nybegynder
30. april 2005 - 16:48 #34
Det var så lidt :)
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