Gå til innhold

Login funker på localhost, men ikke på webserver


Anbefalte innlegg

Hei,

 

Driver og tukler litt med PHP, og har en veldig, veldig basic login-form. Problemet er at den funker helt fint på localhost (XAMPP), men ikke på webserver (Domeneshop).

 

Index-fila ser slik ut:

 

<!DOCTYPE html>
<?php
require 'core.inc.php';
require 'connect.inc.php';
if (loggedin()) {
echo 'You are logged in.';
} else {
include 'loginform.inc.php';
}
?>

 

loggedin()-funksjonen ligger i core.inc.php, som ser slik ut:

 

<!DOCTYPE html>
<?php
ob_start();
session_start();
$current_file = $_SERVER['SCRIPT_NAME'];
function loggedin() {
if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
	return true;
} else {
	return false;
}
}
?>

 

 

 

Problemet ligger sannsynligvis i en av disse. If-setninga i index-fila fungerer helt fint. Den viser loginform hvis brukeren ikke er logget inn, og viser en echo hvis brukere er logget inn.

 

Det som skjer når jeg laster opp de samme filene til webhotellet, er at innlogginga går helt fint, den viser "Invalid user/pass" hvis brukeren har tastet feil bruker/passord (gjennom en mysql_query), men når brukeren taster RIKTIG bruker pass, så viser den bare innloggings-skjemaet igjen, bare uten feilmeldinga. Så den ser ut til å merke at det er riktig brukernavn/passord, men den inkluderer likevel loginform-fila.

 

Noen som ser en blatant feil? Synes det er rart at det fungerer på localhost, men ikke på webhotell.

 

 

 

EDIT: Ved nærmere sjekk, så ser jeg at localhost lager cookie med SESSIONID, men det gjør ikke sida som ligger på webhotellet. Er det noe spesielt jeg må legge til i koden for å sørge for at det fungerer på alle servere?

Endret av Aleks855
Lenke til kommentar
Videoannonse
Annonse

Du kan ikke ha noe output før du kaller start_session(). Hvis du flytter dette kallet helt øverst, altså før DOCTYPE, så bør det fungere fint. Vil anbefale deg å, i testmiljøet ditt, aktivere error_reporting i PHP. Det kan du enten gjøre i php.ini eller ved å skrive følgende kode først i index.php:

 

<?php
session_start(); // husk denne her
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>

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...