/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
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
Login
Fra : Lion36
Vist : 736 gange
50 point
Dato : 01-10-06 17:47

Herunder login.php og vars.php.
Mit problem er at, selvom det korrekte navn og password indskrives, så redirecter den til login.php igen og ikke til den side den får besked på (redirect.htm).
Er der nogen der kan finde fejlen - det skal siges at jeg har fået filerne af en anden, og jeg kender ikke selv noget til php.

LOGIN.PHP

<?php
   require( "vars.php" );
   session_start();

   if(!session_is_registered( "WebmasterEmailAddress" ))
   {
      session_register( "WebmasterEmailAddress" );
      $WebmasterEmailAddress = $webmasterEmailAddress;
   }

   if(!session_is_registered( "HollowmanWebSite" ))
   {
      session_register( "HollowmanWebSite" );
      $HollowmanWebSite = $HollowmanWebSite;
   }

   if( isset( $action ) ):
      if( $action == "logout" ):
         session_unregister( "SiteLoginName" );
         session_unregister( "SiteLoginPwd" );
         echo "
         <html>
         <body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
         <br><br><br><center><h4>Du er nu logget af!</h4></center>         
         </body>
         </html>
         ";
         die;
      endif;
   endif;
   if( isset( $name ) && isset( $passwd ) ):
      if( $name != $loginName || $passwd != $loginPasswd || $name == "" || $passwd == "" ):
         echo "
         <html>
         <body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
         <br><br><br><center><h4>Ugyldigt login!</center></h4>
         </body>
         </html>
         ";
      elseif( !session_is_registered( "SiteLoginName" ) && !session_is_registered( "SiteLoginPwd" )
      && $name == $loginName && $passwd == $loginPasswd ):
         session_register( "SiteLoginName" );
         session_register( "SiteLoginPwd" );
         $SiteLoginName = $name;
         $SiteLoginPwd = $passwd;
         displayPage();
      elseif( session_is_registered( "SiteLoginName" ) && session_is_registered( "SiteLoginPwd" )
      && $name == $loginName && $passwd == $loginPasswd ):
         displayPage();
      else:
         echo "
         <html>
         <body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
         <br><br><br><center><h4>Fatal fejl, venligst luk din browser og prøv igen!</h4></center>
         </body>
         </html>
         ";
      endif;
   else:
      if( session_is_registered( "SiteLoginName" ) && session_is_registered( "SiteLoginPwd" )
       && $SiteLoginName == $loginName && $SiteLoginPwd == $loginPasswd ):
         displayPage();
      else:
         displayLoginForm();
      endif;
   endif;

   function displayLoginForm()
   {
      echo "
      <html>
      <body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
      <br><br>
      <center><h4>Login</h4></center>
      <div align=center>
       <center>
       <form method=post action=login.php target=\"_top\">
       <table border=0 cellpadding=0 cellspacing=0 width=230>
       <tr>
       <td width=70 height=20>Navn:</td>
       <td width=130 height=20><input type=text name=name size=20 maxlength=10></td>
       </tr>
       <tr>
       <td width=70 height=20>Password:</td>
       <td width=130 height=20><input type=password name=passwd size=20 maxlength=10></td>
       </tr>
       <tr>
       <td width=70 height=20></td>
       <td width=130 height=20><input type=submit value=\" Luk mig ind \"></td>
       </tr>
       </table>
       </form>
       </center>
      </div>
      ";

   }

   function displayPage()
   {
      echo "
      <html>
      <META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=redirect.htm\">
</html>
      ";

   }
?>

VARS.PHP

<?
   $HollowmanWebSite = "http://www.hjemmeside.dk";
   $webmasterEmailAddress = "navn@hjemmeside.dk";
   $loginName = "name";
   $loginPasswd = "password";
?>

 
 
Kommentar
Fra : disken


Dato : 01-10-06 19:07

Håber vikeligt, du finder ud af at få Det script, til at virke.
Har du ikke PHP pg MyQSL, tvivler jeg på du kan få det til at virker.
Når du ikke gider at afprøve de link/s du fik i et andet, annuleret spørgsmål.
Kan man SGU ikke hjælpe ret meget.

Men håber du får samme svar fra andre, ellers er det vel bare tilbage, til siden,
du hentede scriptet fra, som du ikke kan få til at virker.




Kommentar
Fra : disken


Dato : 01-10-06 19:09

virker= virke


Kommentar
Fra : Lion36


Dato : 01-10-06 19:12

Jeg har PHP og MySQL knyttet til min hjemmeside.
Desuden så fandt jeg aldrig det link på den side du snakker om....øv

Kommentar
Fra : disken


Dato : 01-10-06 19:41


Hvad FANDEN er der så GALT.
Nu kan du sgu, få mig På de MEGET små dupper.
Eller fatter du bare ikke, at du skal oprette en database, i MySQL, og så tager vi den JO bare derfra.
Det tager 5 Minutter at lave sit ØNSKE, med bruger login, men du vil ÅBENTBART
ikke have hjælpen.
Kan hjælpe dig ONLINE med at sætte siden/erne op.
Men at SKRIVE, DU IKKE KAN FINDE NOGET DER VIRKER, ER LØ'GN """"

Du kan IKKE bare lægge noget op, og HÅBE på det virker,
efter din mening, der skal trods alt laves et lille stykke arbejde,
som jeg skriver, tager 5 minutter.
Men det er vel ikke et' LOGIN VÆRD




Kommentar
Fra : Lion36


Dato : 01-10-06 19:51

Som jeg tidligere har skrevet så fatter jeg ikke en bjælde vedr. php, og så beder jeg om at lade være med at være så sur og tvær og skrive med stort, bare fordi du ikke helt har læst det jeg skrive med at jeg ikke forstår noget om php - vi er ikke alle lige så dygtige som dig.

Kommentar
Fra : disken


Dato : 01-10-06 20:12


Troede det var derfor du bad om HJÆLP, men hender ikke noget til dit WebHotel/ udbyder.
Skal jeg med glæde hjælpe dig, med at lave en side i PHP/ LOGIND, eller hvad du ellesr
vil kalde det.
Men kan du ikke finde ud af at lave en database, i /på dit webhotel, kan jeg godt forstå,
AT DU IKKE KAN FATTE EN PIND/ ELLER ANDET, men spørg, ikke luk noget, der virker.
Og det koster INTET, kodeORD og andet, kan du bare lave, midlertigt ???
Og det virker, men tror, DESVÆRRE, der er NOGET du har misforstået.


Men skæld mig dog UD for ikke at hjælpe.
Kan du ikke finde UD AF det med php, install/ myqsl, så ?
Ikke lukke spørgsmålet, DA DU INTET FÅR UD AF DET.

Og lad være med at, skælde mennesker, der GERNE vil hjælpe dig UD.
Bare et menneske, der også engang, imellem har HAFT BRUG FOR ????


Kommentar
Fra : disken


Dato : 01-10-06 20:14

Citat
Og det koster INTET, kodeORD og andet, kan du bare lave, midlertigt ???

Hvis jeg skulle IND på din HJEMMESIDE'


Kommentar
Fra : ostemanden


Dato : 01-10-06 22:14

Jeg kan ikke huske om php vars kender forskel på store og små bogstaver... Men du har en linie:

Kode
session_register( "WebmasterEmailAddress" );
$WebmasterEmailAddress = $webmasterEmailAddress;


Det kan være en grund til den ikke virker...

Kommentar
Fra : BjarneD


Dato : 01-10-06 22:17

Uha, da, da for en vrede.

Jeg er heller ikke php ekspert, men ved da at man skal give adgang til filen fra "verden" hvis den skal tilgåes fra Internettet. Du skal ændre attributterne for filen på serveren (chmod) og fuld adgang er 777
Hvis man sætter alle filer til 777 er du åben for at blive hacket så du skal kun give fuld adgang på filer der skal kunne aktiveres af hvem som helst og ved login er du jo hvem som helst og kan derfor ikke eksekvere filen.

Kommentar
Fra : Lion36


Dato : 02-10-06 11:18

Til ostemanden: har ændret, det gør ingen forskel - desværre.

til bjarne d: det du skriver til mig er som russisk for mig

Kommentar
Fra : Lion36


Dato : 02-10-06 11:28

login.php og vars.php ligger i samme bibliotek som den side som der skal redirectes til, men uanset om jeg skrive hele URL'en (med http:// og det hele), eller kun redirect.htm, så vender den tilbage til login.php.
Desuden er det ligegyldigt hvilke navn og password man skriver, det er ligesom om den ikke checker vars.php, for validt navn og password.

Kommentar
Fra : Lion36


Dato : 02-10-06 12:19

Tror slet ikke mit site generer php scriptet, men kun den FORM, som er med i scriptet, hvilket måeske kan forklare at den går i ring.

Kommentar
Fra : BjarneD


Dato : 02-10-06 13:06

Måske ville du have mere glæde af denne hvor du logger dig ind for at læse om hvordan du gør.
Den er uden database og er et enkeltbruger login. Flerbruger login af denne type kræver brug af databasestyring.

http://www.hjemmesideskolen.dk/scripts/phppass/default.php

Kommentar
Fra : natmaden


Dato : 02-10-06 13:25

Du har rod i funktionen session_start();
Denne må ikke kaldes flere gange, og det gør den fordi at login.php kalder sig selv.

Ja det går i ring, det kaldes en uendelig løkke.

Kikker (måske) på det senere !

Mvh. Jørgen

Kommentar
Fra : Lion36


Dato : 02-10-06 13:27

Har været inde på siden BjarneD, kan ikke finde nogen scripts der er færdigsyet - desværre

Kommentar
Fra : BjarneD


Dato : 02-10-06 13:38

Du kan da ikke få php script der er helt færdigsyet og derfor skal du først læse og lære om metoden og derefter kan du downloade et sæt som du tilretter. I menuen til venstre kan du klikke på hent filer, men det går altså ikke med mindre du tilpasser til dit eget.

Måske skulle du anvende en simplere scripttype som denne: http://www.html.dk/scripts/javascript/00007/

Kommentar
Fra : Lion36


Dato : 02-10-06 13:46

Tror jeg venter på natmaden *S*

Kommentar
Fra : BjarneD


Dato : 02-10-06 13:48

Tror du han er parat til at servere på sølvfad?

Eller i klart sprog: Du er da vist doven!

Kommentar
Fra : Lion36


Dato : 02-10-06 13:59

Kald mig bare doven, men da jeg allerede har et 2 scripts, så håber jeg at kunne få dem repereret med kyndig vejledning istedet for at skulle læse mig igennem flere sider om et emne jeg overhovedet ikke har forstand på.
Desuden så er der vel ingen grund til at lære PHP helt fra bunden, blot fordi man har et isoleret problem med 2 scripts, det er vel også derfor at Kandu er oprettet, for at hjælpe folk med isolerede problemer og ikke bare sende dem videre til div. hjemmesider - se det er måske i virkeligheden at være doven *S*

Kommentar
Fra : BjarneD


Dato : 02-10-06 14:07

OK, alle der har deltaget i dette spørgsmål er altså dovne fordi de ikke analyserer dit script!

Jeg ved ikke nok til at analysere det du har der, men jeg lærer jo hver gang jeg finder noget brugbart som jeg så læser mig til hvordan man skal tilrette.

Jeg er sikker på at Natmaden kan hjælpe dig så sats du bare på hans velvilje.
Har du for øvrigt aldrig hørt om hjælp til selvhjælp? Det er faktisk det der praktiseres i fora som dette!

Kommentar
Fra : Lion36


Dato : 02-10-06 14:24

Hov der er ingen grund til at blive sur og tvær.
Men måske jeg er gået forkert - man regner jo bare med at kunne få lidt hjælp udfra de to scripts jeg sendt - det er jo ligesom dem som er udgangspunktet og dem jeg skal have til at fungerer.

Kommentar
Fra : natmaden


Dato : 02-10-06 14:35

Doven , 30 point

Ja jeg må jo i gennem manualen for at kunne forstå funtionen sessions

BjarneD du har ret i din antagelse at der er foreskel på store og små bogstaver i variable.
Så $WebmasterEmailAddress og $webmasterEmailAddress er to forskellige,
Hvad det vel ikke skal være.

Kommer tilbage en gang i nat (på en paptallerken)

Og jo Lion36 man kan få hjælp til selvhjælp, jeg kan jo ikke logge ind på din side og rette derfra,
Det er vist heller ikke alle steder der understøtter sessions.

Prøv dette på din web(hotel)

min_info.php
Kode
<?
phpinfo();
?>


du får en lang liste,

et sted står der sessions ON eller OFF

Der er meget forskel på hvordan webhoteller har opsat deres system.


Kommentar
Fra : Lion36


Dato : 02-10-06 14:54

Natmaden, du kan følge med på dette link.


http://www.hollowman.dk/content/xxx/min_info.php


Session er enabled, under det punkt er der en masse der er både on/off, som jeg ikke fatter noget af, men måske du kan fortælle hvad der skal være slået til osv. og hvor jeg gør det.

Og lige en ting, jeg er utrolig glad for din hjælp, og havde jeg nogle flere points, fik du dem.

Kommentar
Fra : Lion36


Dato : 03-10-06 19:48

Min udbyder one.com, meddeler at der ikke er noget galt med PHP'en, og at scriptet burde kunne køre.

Kommentar
Fra : natmaden


Dato : 04-10-06 01:37

Ja one.com bruger jeg selv.
jeg har lidt for meget at se til , så du må have lidt tålmodighed.

Har du rettet dine variable $WebmasterEmailAddress og $webmasterEmailAddress
Den ene begynder med stort W og den anden med lille w, det gør at php opfatter det som 2 forskelige. !

Fejlagtigt fik jeg vist skrevet at det var BjarneD det gjorde dig opmærksom på det,
Men det var ostemanden,, undskyld for det !

Kommentar
Fra : Lion36


Dato : 04-10-06 10:45

Jeg har rettet det du bad mig om, og ja jeg har tålmodighed, rart at vide at der er gang i noget. jeg forlanger jo heller ikke en løsning nu og her, hellere vente på den helt rigtige løsning *S*
Og så forhøjer jeg med 20 p. hver dag *S*

Kommentar
Fra : præceptor


Dato : 06-10-06 03:29

Det er naturligvis umuligt at fortælle noget som helst om fejl i PHP, hvis modtageren ikke vil modtage informationer om PHP, men jeg kan fortælle, at PHP kan ændre sig så meget fra version til version, at det kode der kan køre i een version af PHP ikke nødvendigvis kan køre i en anden version af PHP.

Som det gælder for meget af det gamle skrot der også ligger på internettet, så afhænger funktionen i det viste script af en sideeffekt ved session der eksisterede i PHP indtil version 4.2.3, hvorfor scriptet i sin nuværende form - efter min mening - bør skrottes.

Begrebet sideeffekt betyder jo, at en bestemt virkning ikke har været tilsigtet af PHP's skabere.

Skaberne af PHP har således gjort opmærksom på, at session delen af PHP ikke længere betragter globale variabler som datakilder, med mindre register_globals er ON, hvilket samtidig kompromitterer serverens sikkerhed.

Det viste script er afhængig af session_is_registered() og session_register() samt session_unregister(), der alle igen - jvf. det foran oplyste - er afhængige af at register_globals skal være ON, og det er gudsketakoglov ved at være en sjældenhed på serverne idag.

I stedet for session_is_registered() og session_register() samt session_unregister() som bruges gennemgående i det viste script, skal $_SESSION og isset() bruges istedet, men spørgsmålet er så samtidig om det ikke er hurtigere at skrive hele herligheden om istedet for at rode med eventuelle problemer i forbindelse med ukritiske udskiftninger.

Problemet er løst, enten på den forkerte måde, ved at du flytter scriptet til en server hvor register_globals er ON, for der vil scriptet uden videre virke. Eller på den rigtige måde, ved at du skrotter scriptet og neten finder et nyt og tidssvarende script, eller får skrevet det eksisterende script om af en der har rigtig forstand på PHP



Kommentar
Fra : præceptor


Dato : 06-10-06 06:21

Ikke som en brilliant løsning, men blot for at illustrere det forgående indlæg med praktisk kode - kald denne udgave af scriptet for login2.php:

Kode
<?php
require( "vars.php" );
session_start();

if(!isset($_SESSION['WebmasterEmailAddress']))
{
$_SESSION['WebmasterEmailAddress'] = $WebmasterEmailAddress;
}

if(!isset($_SESSION['HollowmanWebSite']))
{
$_SESSION['HollowmanWebSite'] = $HollowmanWebSite;
}

if( isset( $_POST['action'] ) ):
if( $_POST['action'] == "logout" ):
session_destroy();
echo "
<html>
<body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
<br><br><br><center><h4>Du er nu logget af!</h4></center>
</body>
</html>
";
die;
endif;
endif;
if(isset($_POST['name']) && isset($_POST['passwd'])):
if( $_POST['name'] != $loginName || $_POST['passwd'] != $loginPasswd || $_POST['name'] == "" || $_POST['passwd'] == "" ):
echo "
<html>
<body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
<br><br><br><center><h4>Ugyldigt login!</center></h4>
</body>
</html>
";
elseif( !isset($_SESSION['SiteLoginName']) && !isset($_SESSION['SiteLoginPwd'])
&& $_POST['name'] == $loginName && $_POST['passwd'] == $loginPasswd ):
$_SESSION['SiteLoginName'] = $_POST['name'];
$_SESSION['SiteLoginPwd'] = $_POST['passwd'];
displayPage();
elseif( isset($_SESSION['SiteLoginName']) && isset($_SESSION['SiteLoginPwd'])
&& $_POST['name'] == $loginName && $_POST['passwd'] == $loginPasswd ):
displayPage();
else:
echo "
<html>
<body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
<br><br><br><center><h4>Fatal fejl, venligst luk din browser og prøv igen!</h4></center>
</body>
</html>
";
endif;
else:
if( isset($_SESSION['SiteLoginName']) && isset($_SESSION['SiteLoginPwd'])
&& $_SESSION['SiteLoginName'] == $loginName && $_SESSION['SiteLoginPwd'] == $loginPasswd ):
displayPage();
else:
displayLoginForm();
endif;
endif;

function displayLoginForm()
{
echo "
<html>
<body bgcolor=\"#808080\" text=\"#FFFFFF\" link=\"orange\" vlink=\"orange\" alink=\"yellow\" leftmargin=\"10\" topmargin=\"0\" rightmargin=\"10\">
<br><br>
<center><h4>Login</h4></center>
<div align=center>
<center>
<form method=post action=login2.php target=\"_top\">
<table border=0 cellpadding=0 cellspacing=0 width=230>
<tr>
<td width=70 height=20>Navn:</td>
<td width=130 height=20><input type=text name=name size=20 maxlength=10></td>
</tr>
<tr>
<td width=70 height=20>Password:</td>
<td width=130 height=20><input type=password name=passwd size=20 maxlength=10></td>
</tr>
<tr>
<td width=70 height=20></td>
<td width=130 height=20><input type=submit value=\" Luk mig ind \"></td>
</tr>
</table>
</form>
</center>
</div>
";

}

function displayPage()
{
echo "
<html>
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"1; URL=redirect.htm\">
</html>
";

}
?>


Accepteret svar
Fra : præceptor

Modtaget 50 point
Dato : 06-10-06 09:17

Ved nærmere eftertanke skal de flg. 2 linjer:

Kode
if( isset( $_POST['action'] ) ):
if( $_POST['action'] == "logout" ):


ændres til:

Kode
if( isset( $_GET['action'] ) ):
if( $_GET['action'] == "logout" ):


hvorefter der nemlig kan logges ud med:

Kode
login.php?action=logout


om ønsket kan denne kommando indføjes i login formen ved at ændre:

Kode
</table>
</form>

til:

Kode
</table>
<a href=\"login2.php?action=logout\">Logout</a>
</form>



Kommentar
Fra : Lion36


Dato : 06-10-06 13:36

Jeg takker, og vil prøve at erstatte min nuværende login.php med den du har postet.
Jeg regner ikke med at vars.php skal ændres.
På one.com kan man både køre med PHP4 og PHP5, jeg har valgt sidstnævnte.
Krydser fingre for at det virker - og igen tak for hjælpen.

Kommentar
Fra : Lion36


Dato : 06-10-06 13:38

Desuden kan jeg åbenbart ikke længere lægge ekstra point på dette indlæg !!

Kommentar
Fra : Lion36


Dato : 06-10-06 15:35

Præceptor - well done !!, skidtet virker.... takker 1 mill. gange.

Godkendelse af svar
Fra : Lion36


Dato : 06-10-06 15:37

Tak for svaret præceptor.

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177419
Tips : 31962
Nyheder : 719565
Indlæg : 6407871
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste