Jag har skapat ett inloggningsscript som inte funkar på min localhost. Jag får följande felmeddelande.
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
Men när jag kör samma script på webbhotellet jag använder på nätet så funkar det.
Det låter som om du har ett index i din sessionsarray som är samma som namnet på en variabel.
Typ om du i ditt skript har både $_SESSION['id'] och $id. När register_globals är satt så kommer även $_SESSION['id'] att finnas som $id, och du har en varibelkrock.
Försök att sätta unika index för dina sessionsvariabler, t.ex genom att använda ett prefix typ $_SESSION['sess_var'] eller $_SESSION['sVar'].
Förstår ärligt talat inte vad du försöker göra i skriptet.
Vad är t.ex.
$epost = $epost;
$lösenord = $lösenord;
Tag en koll på vilka variabler du sätter med session_register() och vilka variabler du sedan använder.
Använd inte session_register/session_unregister överhuvudtaget, utan använd dig av sessionsarrayen $_SESSION för att sätta och hämta dina sessionsvariabler.
Använd där index som du inte använder som variabelnamn.
I logga ut, lägg din header efter du kört session_destroy().
<?php
// Skapa en session med viktig information
session_start();
require '../inkludera/databas.php';
// Kolla om användaren finns
mysql_select_db("databasen");
$sql = "
SELECT id FROM användare
WHERE epost = '{$_POST['epost']}'
AND lösenord = '{$_POST['lösenord']}'
AND status = '1'
";
$get = mysql_query($sql);
if(mysql_num_rows($get) > 0)
{
$_SESSION['sess_id'] = mysql_result($get, 0, 'id');
$_SESSION['sess_passwd'] = $_POST['lösenord'];
$_SESSION['sess_epost'] = $_POST['epost'];
$_SESSION['sess_active'] = 1;
// Gå till admin.php
echo "ADMIN";
}
else
{
// Gå till logga_ut.php
echo "NEJ";
}
// Stäng databasen
mysql_close($open);
?>
Jag la till att hämta och spara `id` som sessionsvariabel, då detta oftast är det snabbast sättet att identifiera användaren när man hämtar från databasen.
För du har väl en id-kolumn ?
Matte: Tack för din hjälp! Jag har en id kolumn för varje användare ja. Jag ska testa scriptet snart. Måste bara sola lite först! Solen steker på bra här! :)
256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849