Gå til innhold

Problemer med login


Anbefalte innlegg

Det er et litt rart script du bruker

 

if (!isset($_POST['username']) || !isset($_POST['password'])) { 
header( "Location: index.html" ); 
exit;
} 

elseif (empty($_POST['username']) || empty($_POST['password'])) { 
header( "Location: index.html" ); 
exit;
}  

For det første burde man ikke bruke isset når det er varaibler fra et skjema - for isset returnerer true selv om den er tom. Så du kan fjerene den første delen og kun sjekke empty.

 

Videre så skal helst ikke passordet ol. til databasen lagres i phpfilen!

 

"If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.

 

register_globals: important note: Since PHP 4.2.0, the default value for the PHP directive register_globals is off. The PHP community encourages all to not rely on this directive but instead use other means, such as the superglobals.

" - fra manualen.

 

Bruk $_SESSION, både i denne filen og members.php (og andre filer som bruker sessions)

 

Og til slutt:

LES MANUALEN!!!!!!!!!!!!!!!!!

Lenke til kommentar
Videoannonse
Annonse

Eg driter da f*** i hvor sikkert det er, først og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det)

 

Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå!

Lenke til kommentar
Eg driter da f*** i hvor sikkert det er, først  og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det)

 

Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå!

Har du forsøkt noe av det jeg foreslår?

Siden det virker et sted og ikke et annet så tyder det på at det er noen ting PHP på din server ikke takler - og da burde du prøve å gjøre endringene jeg foreslår.

 

Du er veldig hårsår - er det du som har skrevet scriptet? I så fall burde du tåle litt kritikk - det er ganske svakt og bruker "gamle" koder.

 

Test også følgende:

 

// sjekk om det er noen feil i spørringen

echo mysql_error()."<br>";

 

$rowCheck = mysql_num_rows($result);

// sjekk hva $rowCheck inneholder

echo $rowCheck."<br>";

 

if($rowCheck > 0){

while($row = mysql_fetch_array($result)){

 

session_start();

session_register('username');

 

header( "Location: members.php" );

}

 

}

else {

 

echo 'Incorrect login name or password. Please try again.';

}

Merk: endringene vil stoppe session og header, men du kan kanskje se hvor feilen ligger.

 

 

Og det er seriøst uhøffelig å banne når folk kommer med forslag for å hjelpe deg!

Endret av ????????
Lenke til kommentar
Eg driter da f*** i hvor sikkert det er, først og fremst vil eg at dritet skal fungere!(Og register globals er OFF, og har alltid vert det)

 

Det hjelper da ikke å lese manualen når denne koden skal funke! Som sagt har en kompis fått den til å fungere, slik den er så spørsmålet mitt var om dere vet hvorfor den ikke fungerer. Eg spurde ikke om forandringer i koden nett nå!

:lol:

Utakknemlige dust... :thumbdown:

Utrolig at du får svar her i det hele tatt!

Lenke til kommentar
Det var da ikke eg som begynnte å skrike.

 

Som sagt så er eg en nybegynner, og allt eg spurde om var litt hjelp til login skriptet. Det eg får er jo berre kritikk på hvordan det er lagt.

kritikk er da hjelp det og?

 

jeg ser dessuten mange forslag til utbedringer her, gjør ikke du?

 

hvis du ikke skjønner noe av hjelpen du får fordi du er for fersk, så burde du kanskje prøve med noe lettere enn login først?

Lenke til kommentar

OK.

 

Har fått login og greier til å funger, skal skifte ut session_register og session_is_registered med superglobalen $_SESSION....

 

Følgene kode går inn i login.php:

 session_start();
$_SESSION['sessionvar'] = "is_set";
header( "Location: members.php" ); 

 

Og følgende i members.php:

 <?php
session_start();
if(isset($_SESSION['sessionvar']))
{
echo "No funka det";
}
else
{
echo "Funka ikkje";
}
?> 

 

Eg leste på PHP.net om $_SESSION og dette skal ifølge kommentarene eg så det fungere, skal det ikke?

Endret av _TT_
Lenke til kommentar

Som sagt så fungerer login saken nå. Det er noe galt med $_SESSION variabelen. Er det noe slags spesiellt oppsett den trenger for å fungere over to filer?

 

Eg har funnet tutorials på slikt som bruker $_SESSION og de fungerer ikke de heller over to filer, så eg vil tro det er noe galt med oppsettet mitt... Fungerer det for dere?

Lenke til kommentar

Her hentes brukernavn og passord fra en flatfil i formatet "bruker|passord" på hver linje.

 

<?php 
session_start();

if (!isset($_SERVER['PHP_AUTH_USER'])) {
  header('WWW-Authenticate: Basic realm="Shootem up"');
  header('HTTP/1.0 401 Unauthorized');
  echo '<img src=/"http://www.ciboire.com/cartes/carte-61.jpg/">';
  exit;
 } else {  
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
if($_SESSION['loggedin'] != "yes"){
$lines = file("userdb.txt");
foreach($lines as $line){
  if(trim($line) == $user."|".$pass){
    $_SESSION['loggedin'] = "yes";
    $_SESSION['username'] = $_SERVER['PHP_AUTH_USER'];
    $_SESSION['LoginTime'] = time();
  }
}
}

if($_SESSION['loggedin'] != "yes"){
echo "<img src='http://www.ciboire.com/cartes/carte-61.jpg'>";
exit;
}
?>

 

Hva er en flatfil? Kan noen forklare bruken av dette?

Lenke til kommentar

Nå høres du blidere ut ;)

 

Lag denne filen (phpinfo.php)

<?php

phpinfo();

?>

 

og kjør den. Bla litt ned på den (avhengig av hvor mye ekstra du har instalert på serveren) så finner du "session" - der burde blandt annet passe på at "Session Support" er enabled og at "session.save_path" er satt (til f.eks. /tmp). Så sjekker du at du har satt opp denne mappen. Bruker du windows er /tmp = c:\temp - så lag den mappen. Ellers kan du gå inn i php.ini filen og sette en annen plassering på mappen og opprette den mappen.

Lenke til kommentar

Vonbo, du vil aldri få ein 100% sikker løysing.

 

Men, vist er god nok i php, så ville eg anbefalt å skrive "costum" session løysninger som lagrer infoen i ein database. Og for kvar gang du skriver/leser fra session gjør du ein test for å sjekke om det virkeleg er den rette brukeren (for å forbygge session hijacking).

 

For å lagre passordet i ein variabel, ja det vil gå og. Men det vil være ein "bakvendt" måte og gjør det på.

Lenke til kommentar
Vonbo, du vil aldri få ein 100% sikker løysing.

...men å spørre om en sikrere løsning er likevel legitimt ;)

 

du kan alltids bruke cookies istedet for sessions. uavhengig av phpoppsett på serveren, så er cokoies en del av HTTP protokollen, og det skal være en rimelig rart serveroppsett som ikke lar php sende cookies ;)

Lenke til kommentar

Når vi først er inne på det... jeg har laget et login script til et forum jeg også har laget. Det jeg ikke har fått til er, etter login, at brukeren også får med seg "signatur" kolonnen fra "brukere" tabellen.

 

Målet er at signaturen til brukerne postes under posten deres. Bruker forløpig if (isset($_SESSION['brukernavn'])) og <input tupe="hidden" name="brukernavn" value=<?php echo $brukernavn; ?>"> det funker jo selvsagt. Men har noen en lur løsning på hvordan jeg får hentet signaturen og lagt den i en hidden input?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...