/ 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
php-loginfejl
Fra : Erik Ginnerskov


Dato : 02-10-08 06:13

Hej NG

http://hjemmesideskolen.dk/scripts/phppass/ beskriver jeg et login med en
fast bruger - koden, der tjekker inputdata, kan ses på
http://hjemmesideskolen.dk/scripts/phppass/user.php

Dette login virker perfekt på samme server.

Men lægger jeg samme kode over på http://hjemmesideskolen.net/test/index.php
får jeg en fejl. Kig selv - brugernavn og password er vist på index.php.

Fejlen må formodes at komme, fordi der først i linje 32 sendes en 'header
("location: login.php");' - altså efter at der er sendt noget til brugeren.
Men hvordan skal koden skrives om, så jeg ikke får den fejl?

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



 
 
Benny Nissen (02-10-2008)
Kommentar
Fra : Benny Nissen


Dato : 02-10-08 06:33

Erik Ginnerskov wrote:

> Fejlen må formodes at komme, fordi der først i linje 32 sendes en 'header
> ("location: login.php");' - altså efter at der er sendt noget til brugeren.
> Men hvordan skal koden skrives om, så jeg ikke får den fejl?
>

Nu kan man jo ikke lige se, hvad der sker i linie 27 (som php-parseren
siger giver noget output). Kan du ikke lige smide siden som .phps også ?

--
Benny

Erik Ginnerskov (03-10-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 03-10-08 06:10

Benny Nissen wrote:

> Nu kan man jo ikke lige se, hvad der sker i linie 27 (som php-parseren
> siger giver noget output).

session_start();

Det er linje 26 nu, jeg fjernede en reklamelinje som min editor havde sat.

> Kan du ikke lige smide siden som .phps også ?

Ville jeg gerne, men det leverer serveren ikke korrekt, så du får det som
txt i stedet:

http://hjemmesideskolen.dk/usenet/bruger.php.txt

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



Dan Storm (02-10-2008)
Kommentar
Fra : Dan Storm


Dato : 02-10-08 07:01

Erik Ginnerskov skrev:
> Fejlen må formodes at komme, fordi der først i linje 32 sendes en 'header
> ("location: login.php");' - altså efter at der er sendt noget til brugeren.
> Men hvordan skal koden skrives om, så jeg ikke får den fejl?

<?php


   //Valider bruger efter POST og send header() hvis alt ok
   // ellers dan fejlmeddelelse: $fejl = "Forkert...";

?>
<html>
<!-- din html kode med formularen -->
<?php
   if(isset($fejl))
      echo $fejl;
?>
</html>


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Erik Ginnerskov (03-10-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 03-10-08 06:14

Dan Storm wrote:

> <html>
> <!-- din html kode med formularen -->
> <?php
> if(isset($fejl))
> echo $fejl;
>>
> </html>

Formularen ligger i index.php, sender brugerdata til bruger.php som enten
viderestiller til login.php(ved korrekt login) eller viser en besked om
forkert login (når det ellers virker).

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



Stig Johansen (02-10-2008)
Kommentar
Fra : Stig Johansen


Dato : 02-10-08 15:36

Erik Ginnerskov wrote:

> Hej NG
>
> På http://hjemmesideskolen.dk/scripts/phppass/ beskriver jeg et login med
> en fast bruger - koden, der tjekker inputdata, kan ses på
> http://hjemmesideskolen.dk/scripts/phppass/user.php
>
> Dette login virker perfekt på samme server.
>
> Men lægger jeg samme kode over på
> http://hjemmesideskolen.net/test/index.php får jeg en fejl. Kig selv -
> brugernavn og password er vist på index.php.
>
> Fejlen må formodes at komme, fordi der først i linje 32 sendes en 'header
> ("location: login.php");' - altså efter at der er sendt noget til
> brugeren. Men hvordan skal koden skrives om, så jeg ikke får den fejl?

Jeg kender ikke så meget til php, men jeg vil formode, at din ob_start();
skal stå før alt andet.
Det nytter ikke så meget at buffer'e tingene efter output er startet.

--
Med venlig hilsen
Stig Johansen

Erik Ginnerskov (03-10-2008)
Kommentar
Fra : Erik Ginnerskov


Dato : 03-10-08 06:40

Stig Johansen wrote:

> Jeg kender ikke så meget til php, men jeg vil formode, at din
> ob_start(); skal stå før alt andet.
> Det nytter ikke så meget at buffer'e tingene efter output er startet.

Det prøver jeg så at sætte først. Det gjorde faktisk udslaget. Tak

Til gengæld får jeg nu en fejl i logout.php:

Warning: session_start() [function.session-start]: Cannot send session cache
limiter - headers already sent (output started at
/var/www/hjemmesideskolen.net/public_html/test/header.inc:6) in
/var/www/hjemmesideskolen.net/public_html/test/logout.php on line 13

Logout.php ser sådan ud:

<? $strTitle="Farvel og tak";?>
<? include("header.inc"); ?>
</head>
<body>
<div class="indhold">
<h1><? echo $strTitle; ?></h1>
<?php
session_start();
session_destroy();
echo "<p>Du er nu logget af!</p>";
?>
</div>
<? include("menu1.inc"); ?>
</body>
</html>

Flyttede så session_start() op først i logout.php og nu spiller det.
Jeg takker for med- og modspillet.

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://ginnerskov.dk
http://vestfynswebdesign.dk - http://html-faq.dk



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31962
Nyheder : 719565
Indlæg : 6408176
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste