Gå til innhold

PHP feilmelding jeg ikke klarer å tyde


Anbefalte innlegg

Jeg får denne feilmeldingen fra siden jeg bruker til å sjekke login detaljer på siden min. Siden vises kun i et halvt sekund, siden den videresender brukeren til den riktige siden etter at login-detaljene er godkjent (eller underkjent).

 

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

 

Her er koden "sjekk siden" min inneholder:

 

<?php
ob_start();
$host="localhost"; // Host name 
$username="***"; // Mysql username 
$password="***"; // Mysql password 
$db_name="***"; // Database name 
$tbl_name="***"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// To protect MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$myEncryptedPassword = md5($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$myEncryptedPassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1)
{
session_register("myusername");
session_register("myEncryptedPassword"); 
//header("location:login_success.php");
echo '<meta http-equiv="refresh" content="0; url=/index.php?id=7">';
}
else 
{
echo '<meta http-equiv="refresh" content="0; url=/index.php?id=5">';
}
ob_end_flush();
?>

 

Ut ifra feilmeldingen virker det som å sette "Register Globals" til true vil fjerne feilmeldingen, men jeg har lest litt om funksjonen, og den virker ikke spesielt gunstig å ha påslått.

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar
Videoannonse
Annonse

Sikter du til Josh Homme så mente han nok at du skal bruke $_SESSION['navn på variabel'] direkte og ikke bruke session_register() da denne funksjonen er tatt bort.

 

Om du sikter til meg så mener eg at du skal endre navn på variabel enten i session eller i lokalt variabelnavn. I stede for å bruke $_SESSION['myusername'] = $myusername så bruker du $_SESSION['myUsername'] = $myusername.

Lenke til kommentar

Takk for svar. Jeg har oppdatert det slik du sa (tror jeg), men innloggingen fungerer ikke etter at jeg oppdaterte fila slik:

 

if($count==1)
{
$sessionUsername = $myusername;
$sessionPassword = $mypassword;
$_SESSION['myusername'] = $sessionUsername;
$_SESSION['myEncryptedPassword'] = $sessionPassword;

echo '<meta http-equiv="refresh" content="0; url=/index.php?id=7">';
}

 

Mvh

 

Francis

Lenke til kommentar

Slik?

 

checklogin.php:

if($count==1)
{
$_SESSION['usrname'] = $myusername;
$_SESSION['pswd'] = $myEncryptedPassword;

echo '<meta http-equiv="refresh" content="0; url=/index.php?id=7">';
}

 

index.php?id=7:

 

<?php 
session_start();
if(!session_is_registered(usrname))
{
echo '<meta http-equiv="refresh" content="0; url=/index.php?id=5"></meta>';
//header("location:index.php?id=5");
}
?>

 

Etter mitt hode burde dette fungere, men det gjør det ikke. Jeg blir sendt tilbake til index.php?id=5 rett som det er.

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar

Du skal IKKE bruke session_is_registered. Poste feilmeldinger kanskje? Jeg aner ikke hvordan ditt hode mener det burde fungere. :)

 

<?php

session_start();

mysql_connect('localhost', 'user', 'pass');
mysql_select_db('my_db');

$username = $_POST['myusername'];
$password = $_POST['mypassword'];

$sql = sprintf('SELECT * FROM mytable WHERE username = %s AND password = %s', mysql_real_escape_string($username), md5($password));
$result = mysql_query($sql);

if (mysql_num_rows($result) == 1) {
$_SESSION['username'] = $username;
header('Location: login_success.php');
die();
}

header('Location: login_failure.php');
die();

Lenke til kommentar

Jeg får ingen feilmeldinger, jeg blir bare sendt tilbake.

 

Grunnen til at jeg har session_is_registered() er at jeg ønsker at folk som ikke er innlogget, men allikevel trykker inn /index.php?id=7 i nettleseren skal bli videresendt til login siden.

 

Det er kanskje session_is_registered() som er problemet her da?

 

Jeg beklager hvis jeg oppleves som utrolig treg akkurat nå :/.

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar

Ikke noe problem å ha samme navn på nøkkel i $_SESSION som du har navn på variabelen.

 

sql koden til homme

$sql = sprintf('SELECT * FROM mytable WHERE username = "%s" AND password = "%s"', mysql_real_escape_string($username), md5($password));

 

sjekke session variabler

if (isset($_SESSION['username'])) {
 //vis side
} else {
 //login
}

Lenke til kommentar

Takk for svar!

 

Jeg har testet noe mer. Jeg har endret sjekken i index.php?id=7 til dette:

 

if(!(isset($_SESSION['myusername']))) 
{
 echo '<meta http-equiv="refresh" content="0; url=/index.php?id=5"></meta>';
}

 

Koden over fungerer helt fint, men kun når jeg lagrer session med:

 

session_register("myusername");

 

Gjør jeg det med:

 

$_SESSION['myusername'] = $myusername;

 

fungerer det ikke. Jeg har for ordens skyld prøvd å endre session variablen til:

 

$_SESSION['myName'] = $myusername;

 

og sjekken til:

 

if(!(isset($_SESSION['myName']))) 
{
 echo '<meta http-equiv="refresh" content="0; url=/index.php?id=5"></meta>';
}

 

men det fungerer altså ikke.

 

Mvh

 

Francis

Endret av :Francis:
Lenke til kommentar

Aha!

 

Tusen tusen takk! Nå fungerer det helt fortreffelig etter at jeg brukte session_start(); over $_SESSION[].

 

Jeg trodde session allerede var startet, ettersom jeg har session_start(); helt helt øverst i index.php, som alle sidene bruker.

 

Mvh

 

Francis

Endret av :Francis:
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...