Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PHP headers virker ikke på en af mine sites..

1 view
Skip to first unread message

Frederik Junkuhn

unread,
Nov 4, 2009, 6:33:09 AM11/4/09
to
Hej,

Jeg har lavet et login script p� mit site, som virker fint, men
da jeg s� skal lave det p� et andet site virker det ikke mere.

Kort fortalt s� best�r det af 4 sider:

1. login.php

2. checklogin.php

3. admin.php

4. super-admin.php

Formularen p� "login.php" har method="post" og
action="checklogin.php".

Det virker ved at man logger ind og brugernavn og password
sammenlignes med en database, og hvis de stemmer overens s�
bliver man sendt videre via "header("location:admin.php");"

Mit problem er at jeg ikke bliver sendt videre fra
"checklogin.php", men at den bare giver mig en blank sk�rm.

Skifter jeg "header("location:admin.php");" ud med f.eks. "echo
"du er logget ind";" s� virker det fint.


Her er koden p� "checklogin.php":

<?php
$host="localhost"; // Host name
$username=""; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Database name
$tbl_name="members"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot
connect");
mysql_select_db("$db_name")or die("cannot select DB");

// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and
password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must
be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file
"login_success.php"
if($myusername == username1){
session_register("myusername");
session_register("mypassword");
header("location:admin.php");
}
if($myusername == username2){
session_register("myusername");
session_register("mypassword");
header("location:super-admin.php");
}
else {
echo "Wrong Username or Password";
}
?>


Som sagt har jeg brugt dette script p� min private site, og der
virker det fint.

Mange tak

--
Vil du l�re at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- P�dagogiske tutorials p� dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Peter Farsinsen

unread,
Nov 4, 2009, 7:10:59 AM11/4/09
to
Frederik Junkuhn wrote:

> if($myusername == username1){
> session_register("myusername");
> session_register("mypassword");
> header("location:admin.php");

Jeg kan ikke tro, det g�r nogen forskel, men det er go' skik at sende en
valid location header (dvs. en absolut url), og efterf�lgende at stoppe
scriptet med die() eller exit;

header("Location: http://dinserver.tld/admin.php");
die();

Tjek desuden om du har sl�et error_reporting etc. til ;)

--
Peter Farsinsen
for...@efternavn.dk

Frederik Junkuhn

unread,
Nov 4, 2009, 9:13:11 AM11/4/09
to
Peter Farsinsen wrote in dk.edb.internet.webdesign.serverside.php:

Det virkede ikke med en absolut URL..

Peter Farsinsen

unread,
Nov 4, 2009, 9:21:53 AM11/4/09
to
Frederik Junkuhn wrote:
> Peter Farsinsen wrote in dk.edb.internet.webdesign.serverside.php:
>> Frederik Junkuhn wrote:
>>
>>> if($myusername == username1){
>>> session_register("myusername");
>>> session_register("mypassword");
>>> header("location:admin.php");
>>
>> Jeg kan ikke tro, det g�r nogen forskel, men det er go' skik at sende en
>> valid location header (dvs. en absolut url), og efterf�lgende at stoppe
>> scriptet med die() eller exit;
>>
>> header("Location: http://dinserver.tld/admin.php");
>> die();
>>
>> Tjek desuden om du har sl�et error_reporting etc. til ;)
>>
>
> Det virkede ikke med en absolut URL..

Du f�r ingen fejl? ;)

--
Peter Farsinsen
for...@efternavn.dk

Frederik Junkuhn

unread,
Nov 4, 2009, 9:42:03 AM11/4/09
to
Frederik Junkuhn wrote in dk.edb.internet.webdesign.serverside.php:

UPDATE:

Jeg har fundet en "�rkenl�sning" p� mit problem ved at s�tte "echo
"<meta http-equiv='refresh'
content='0;url=http://www.minURL.dk/admin.php'>";" ind istedet for
en "header("location:admin.php");" og dette virker fint.

Men hvis der er nogen der kan forklare mig hvorfor "header(... "
ikke virker p� det ene site, men fint p� det andet vil jeg gerne
vide det.. :)

/Frederik Junkuhn

Martin

unread,
Nov 4, 2009, 10:59:13 AM11/4/09
to
Frederik Junkuhn wrote:
> UPDATE:
>
> Jeg har fundet en "�rkenl�sning" p� mit problem ved at s�tte "echo
> "<meta http-equiv='refresh'
> content='0;url=http://www.minURL.dk/admin.php'>";" ind istedet for
> en "header("location:admin.php");" og dette virker fint.

Pr�v at skrive <meta> og intet andet istedet for din meta..
�bn s� siden, og tjek kildekoden
st�r <meta> som det F�RSTE og ikke nogle mellemrum, linjeskift eller
noget andet foran?


> Men hvis der er nogen der kan forklare mig hvorfor "header(... "
> ikke virker p� det ene site, men fint p� det andet vil jeg gerne
> vide det.. :)

Virker skam ogs� helt fint... HVIS
Der IKKE er sendt noget content ud f�r (bare 1 mellemrum er nok)

S� hvis din php side starter med
<mellemrum><?php
// php kode
header(....);
?>

S� g�r det galt og du skulle gerne f� en warning (content send before
header) eller noget i den stil.

Hvis du ikke f�r den warning, s� skal du lige have indf�rt

<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');

Ind i din(e) php filer..

Bem�rk det anbefales at s�tte display_errors til off i produktions
milj�et, og istedet for s� tjekke sin error log.

PS
Hvis du "bor" hos one.com s� skal du ind i administrationen p� one.com
og s�tte "display errors" til on

Chano Andersen

unread,
Nov 4, 2009, 1:33:59 PM11/4/09
to
Frederik Junkuhn skrev:
> header("location:super-admin.php");


Kunne det v�re browseren der er MEGET facistisk? Pr�v eventuelt med
header("Location: super-admin.php");

Bem�rk stort L og mellemrum efter kolon.

- Chano Andersen

Stig Johansen

unread,
Nov 4, 2009, 4:23:57 PM11/4/09
to
Martin wrote:

> Virker skam ogs� helt fint... HVIS
> Der IKKE er sendt noget content ud f�r (bare 1 mellemrum er nok)

Eller BOM hvis den er gemt som utf-8.

--
Med venlig hilsen
Stig Johansen

Frederik Junkuhn

unread,
Nov 5, 2009, 2:06:38 AM11/5/09
to
Chano Andersen wrote in dk.edb.internet.webdesign.serverside.php:

Det er meget muligt at jeg har et mellemrum f�r det f�rste <?php tag i
min kode.. Skal jeg lige tjekke op p�.

Jeg bem�rkede at jeg godt kunne echo'e tekst ud, men ikke hvis jeg
echo'ede et <a> tag.

Tak for hj�lpen.. :)

0 new messages