Gå til innhold

Login script feil


Anbefalte innlegg

Her har dere feilmeldingen:

 

Warning: Cannot send session cookie - headers already sent by (output started at /mnt/home3/d/da/danlinux/public_html/index.php:8) in /mnt/home3/d/da/danlinux/public_html/action_include.php on line 13



Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/home3/d/da/danlinux/public_html/index.php:8) in /mnt/home3/d/da/danlinux/public_html/action_include.php on line 13



Warning: Cannot add header information - headers already sent by (output started at /mnt/home3/d/da/danlinux/public_html/index.php:8) in /mnt/home3/d/da/danlinux/public_html/action_include.php on line 17 

 

Her har dere action.php :

 

 <?



$bruker = "******"; // Skriv inn brukernavnet du vil ha mellom anførselstegnene.



$pass = "********"; // Skriv inn passordet du vil ha mellom anførselstegnene.



if(!$brukernavn OR !$passord) {



echo "Du glemte å fylle ut alle feltene."; }



if($brukernavn == $bruker AND $passord == $pass) {



session_start(); /* dette er line 13  */



session_register("innlogget");



header("Location: meny.php"); } /* Dette er line 17 */



else {



echo "Feil brukernavn eller passord!"; }



?> 

 

Takker for all hjelp

 

DanielP

Lenke til kommentar
Videoannonse
Annonse

Kanskje ta en ting av gangen her...

En header kan kun sendes en gang, og disse anses som headere:

-session_start()

-header()

-echo "ett eller annet.."

M.a.o. den første gangen du gjør noe av overstående, blir en header sendt.

Husk at du ikke engang kan ha så mye som et mellomrom før headeren sendes.

Følgende vil ikke fungere:

  <?php

session_start();

?>

...fordi det er tomfom før <?php . Da vil en header automatisk sendes til klienten.

 

Prøv følgende:


<? 

session_start(); 



$bruker = "******";

$pass = "********"; 

if(!$brukernavn OR !$passord) { 

       echo "Du glemte å fylle ut alle feltene."; } 

else if($brukernavn == $bruker AND $passord == $pass) { 

       session_register("innlogget"); 

       include("meny.php"); 

else { 

       echo "Feil brukernavn eller passord!"; } 

?>

 

Tror det skal funke

Lenke til kommentar

Fikk det til nå,men får 2 små feil, siden virker fint, men feilene meldes.

 


Warning: Cannot send session cookie - headers already sent by (output started at /mnt/home3/d/da/danlinux/public_html/index.php:8) in /mnt/home3/d/da/danlinux/public_html/action_include.php on line 2



Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/home3/d/da/danlinux/public_html/index.php:8) in /mnt/home3/d/da/danlinux/public_html/action_include.php on line 2

Du er innlogget, og har dermed adgang til disse sidene:

 

Her er den nye koden, som du ga meg :D

 

<?

session_start();



$bruker = "******"; 

$pass = "********";

if(!$brukernavn OR !$passord) {



echo "Du glemte å fylle ut alle feltene."; }



elseif($brukernavn == $bruker AND $passord == $pass) {



session_register("innlogget");



include("meny_include.php"); 



} else {



echo "Feil brukernavn eller passord!"; }



?>



 

Så jeg lurte på om du kunne hjulpet meg med disse også? har prøvd en god del, men har nesten nettopp begynt med php så jeg forstår ikke hvordan jeg skal rette denne.

 

p.s. Takker veldig for forrige svar, hjalp veldig mye.

 

DanielP

Lenke til kommentar

Action:

 

<?

session_start();



$bruker = "*******"; 

$pass = "********"; 



if(!$brukernavn OR !$passord) {



echo "Du glemte å fylle ut alle feltene."; }



elseif($brukernavn == $bruker AND $passord == $pass) {



session_register("innlogget");



include("meny_include.php"); 



} else {



echo "Feil brukernavn eller passord!"; }



?>



 

Her er meny:

 

<?



session_start();



if(session_is_registered("innlogget")) {



echo "Du er innlogget, og har dermed adgang til disse sidene:<br><br>



<a href="index.php?section=link1">Link1</a> <br>



<a href="index.php?section=loggut">Logg ut</a> <br>"; }



else {



echo "Du er ikke innlogget, og har dermed ikke adgang til disse sidene!"; }



?>

 

Her er login:

 




<form name="loginform" method="post" action="index.php?section=action">



<font face="verdana" size="2">Brukernavn:</font><br>  



<input type="text" class="logintext" name="brukernavn">



<br>



<font face="verdana" size="2">Passord:</font><br>



<input type="password" class="logintext" name="passord">



<br>



<input type="submit" class="knapp" name="submit" value="Login">

</form>





 

Her er link 1: (bare test)

 

<?



session_start();



if(session_is_registered("innlogget")) {



echo "Dette er side1... <a href="index.php?section=meny">tilbake til menyen</a>";



}



else { 



echo "Du er ikke innlogget og har dermed ikke adgang til denne siden";



}

 

Her er logout:

 

<?



session_start();



session_destroy();



echo "Du er nå logget ut, du kan også logge inn igjen <a href="index.php?section=login">her</a>";



?>

 

Takker for all hjelp

 

DanielP

Lenke til kommentar

Ja disse filene er i egne snutter, Tror ikke du har bruk for index.php. da det bare er include. filer

 

Men her har du den.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>DanielP</title>



<link rel="stylesheet" type="text/css"

href="style.css">

<style type="text/css">

BODY {

scrollbar-face-color: #709AFA;

scrollbar-shadow-color: #F7F7F7; 

scrollbar-highlight-color: #F7F7F7;

scrollbar-3dlight-color: #F7F7F7; 

scrollbar-darkshadow-color: #F7F7F7;

scrollbar-track-color: #F7F7F7;

scrollbar-arrow-color: #cccccc}

</style>

</head>

<body>



<div id="leftcontent">



 	<!-- meny -->





<div id="meny">

Generelt

</div>

 .:<a href=index.php?section=main>Hovedsiden</a><br />

 .:<a href=index.php?section=meg>Om meg</a><br />

 .:<a href=index.php?section=bilder>Bilder</a><br />

 .:<a href=index.php?section=venner>Venner</a><br />

 .:<a href=index.php?section=gbook>Gjestebok</a><br />

 .:<a href=index.php?section=skolen>Skolen</a><br />

 .:<a href=index.php?section=trening>Trening</a><br />

 .:<a href=index.php?section=deffing>Deffing</a><br />

<div id="meny">

Meny 2

</div>

 .:<a href=index.php?section=login>Logg inn</a><br />

 .:<a href=index.php?section=post_news>Nyheter</a><br />

 .:<a href=index.php?section=main>Link 3</a><br />

 .:<a href=index.php?section=main>Link 4</a><br />

 .:<a href=index.php?section=main>Link 5</a><br />

 .:<a href=index.php?section=main>Link 6</a><br />

 .:<a href=index.php?section=main>Link 7</a><br />

 .:<a href=index.php?section=main>Link 8</a><br />

<div id="meny">

Webdesign

</div>

 .:<a href=index.php?section=html>HTML</a><br />

 .:<a href=index.php?section=main>CSS</a><br />

 .:<a href=index.php?section=main>PHP</a><br />

 .:<a href=index.php?section=main>mySQL</a><br />

 .:<a href=index.php?section=main>php-Script</a><br />

 .:<a href=index.php?section=main>Photoshop</a><br />

 .:<a href=index.php?section=main>Link 7</a><br />

 .:<a href=index.php?section=main>Link 8</a><br />

<br />

<br />

<br />

<div id="meny">

Sitat

</div>

<?php



/* Legg inn den teksten scriptet skal velge i */



 $TextInput[0]  = "I'm Nobodies bitch. Daniel Paterson";

 $TextInput[1]  = "Shit happens. Forest Gump";

 $TextInput[2]  = "I have no respect for those who have no respect for logic. Arnold Schwarzenegger";

 $TextInput[3]  = "Den beste måten å forutse fremtiden på er å oppfinne den.";

 $TextInput[4]  = "Gifte menn egner seg dårlig som ektefeller.";

 $TextInput[5]  = "Forskjellen på genialitet og dumhet er at genialitet har sine begrensninger.";

 $TextInput[6]  = "Life is like a box of chocolates. You never now what your gonna get. Forrest Gump";

 $TextInput[7]  = "He's a Nazi, get him! Abe Simpsons";

 $TextInput[8]  = "A small step for man, and a giant leap for mankind. Neil Armstrong";

 $TextInput[9]  = "Houston, we have a problem. Tom Hanks";

 $TextInput[10]  = "I'll be back. Arnold Schwarzzenegger";

 $TextInput[11]	= "Putt en T-Bein steik i en skål coca cola, og den vil være vekke inne 2 dager.";









 $RandomText	= array_rand($TextInput);

 $DisplayText	= $TextInput[$RandomText];





/* Scriptet returnerer tilfeldig tekst */



echo "<p>$DisplayText</p>n";



?>









</div>



<div id="centercontent">





   <!-- hovedseksjon -->  





<?php

if(IsSet($_GET['section']) && file_exists($_GET['section']."_include.php"))

{

include($_GET['section']."_include.php");

} else {

include("main_include.php");

}

?>







</div>



<div id="rightcontent">

<div id="meny">

Les her:

</div>



 	<!-- Ordtak -->

<div class="shoutbox">

<?php



$fil=fopen("mld.txt", "r");



$innhold=fread($fil, filesize("mld.txt"));



fclose($fil);



echo("$innhold");



?>





</div>

</div>



 	<!-- Poll -->  	



<div id="rightbottomcontent">

<div id="meny">

Shoutbox

</div>



<form action="index.php?section=kommentar" method="post">

 <div class="noge">Navn:</div>

 

 <input name="navn" type="text" class="textbox" id="name" maxlength="15">

 <br>

 <div class="noge">Kommentar:</div>



 <input name="mld" type="text" class="shoutbox" id="mld" maxlength="100">

 <br>

 <br>

 <input type="submit" class="knapp" value="Legg inn">



 <input type="reset" class="knapp" value="Nullstill"> 



 </form>



</div>



<div style="position:absolute; top:450px">



</div>

</body>

</html>

 

DanielP

Lenke til kommentar

Ok...

- Fjern session_start() fra alle filene som inkluderes fra index.php.

- Legg til en session_start() HELT ØVERST 9i index.php Den første linjen i index.php bør da se slik ut:


<?php session_start();?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 

 

See?

Lenke til kommentar

Tusen Takk, det hjalp ja. Ett siste spørsmål:

 

Når jeg logger på skal det komme 2 ekstra linker opp i menyen min. Har gjort det sånt. Men de vil ikke vise før jeg eventuelt har trykket "refresh" eller gått inn på f.eks. hovedsiden. Altså den vil ikke oppdatere seg slik at menyen forandrer seg. Håper du forstod problemet mitt. HVordan får jeg til dette?

 

Takker

 

DanielP

Lenke til kommentar

To omulige løsninger:

 

1:

 

Når du prosesserer login og den er vellykket, legg inn kodelinjene:

 

header('Location: $PHP_SELF');

exit;

 

Den vil da avslutte og sende deg tilbake til start siden som da vil vises med innlogget meny.

 

2:

Du kan vente med å lage navigasjonsmeny til etter at login er prosessert.

 

Evt kombinere med HTML styles for å få plassert den øverst eller hvor du måtte ønske på siden hvis det blir et problem

Lenke til kommentar
  • 3 uker senere...

Hei.. jeg synes dette virket interresant og prøvde ut.

Men er ny i dette faget.

 

Lurte på noe.. hvorfor får jeg denne opp ? :

 

Warning: session_register(): Cannot send session cookie - headers already sent by



Warning: session_register(): Cannot send session cache limiter - headers already sent 

Du er innlogget, og har dermed adgang til disse sidene:

 

Login funkerte, og jeg er innlogget.. men disse feilmeldingene ?

 

Edit: Login funkerte ikke ehh.. tastet feil bruker og pass.. likevel kom jeg inn.. hva galt gjør jeg ?

Lenke til kommentar

argh, dette spørsmålet går igjen om og om igjen, og jeg er sikker på at det blir besvart om og om igjen også (gidder nesten ikke sjekke mere)

 

søk gjerne rundt på forumet.

 

cookies er en del av HTTP headers, dvs den kommunikasjonen som skjer mellom server og klient *før* dokumentet blir sendt. ved vanlige html sider slipper man å tenke på det, serveren gjør det automagisk.

 

HTTP headers forteller bla om dokumentet inneholder tekst, html eller f.eks bilde data.

 

hvis du prøver å sende headers til en klient *etter* at headers'ene er ferdige og du har begynt å spytte ut innhold (html), så kommer php med denne feilmeldingen. Alternativet er at siden din fylles med linjer som

 

Set-Cookie: login=blabla

Content-type: text/html

etc...

 

dvs ting som ikke er relatert til innholdet av dokumentet, men som har med styringen av forbindelsen å gjøre.

 

Hvis du ikke aner hva headers er for noe, så er det fordi php er så dumsnill at den lager headers for deg automatisk, noe som fører til at man skyter seg selv i beinet på et senere tidspunkt slik som dette istedet.

 

Content-type: blabla

 

er et absolutt minimum av headers. alt annet enn det og du får en server feil i nettleseren. det er dette php lager atuomatisk som beskrevet over.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...