:Francis: Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 (endret) 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 8. mars 2009 av :Francis: Lenke til kommentar
AstroChicken Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 Kommentér ut hele scriptet, og så legg til linje for linje fra begynnelsen til du finner hvor problemet ligger. Også, google Lenke til kommentar
nomore Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 Prøv å endre navn på lokal variabel eller session variabel. Lenke til kommentar
Alex Moran Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 Session_register er deprecated. Sessions skal settes med $_SESSION-arrayet. $_SESSION['key'] = 'value'; Lenke til kommentar
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 Mener du slik?: $_SESSION[0] = "myusername"; $_SESSION[1] = "myEncryptedPassword"; Jeg testet det, og det fungerte ikke å logge inn. MVh Francis Lenke til kommentar
nomore Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 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
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 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
nomore Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 Du missforstår. Ikke ha samme navn på en lokal variabel og en session variabel. Lenke til kommentar
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 (endret) 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 8. mars 2009 av :Francis: Lenke til kommentar
Alex Moran Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 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
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 (endret) 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 8. mars 2009 av :Francis: Lenke til kommentar
OIS Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 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
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 (endret) 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 8. mars 2009 av :Francis: Lenke til kommentar
OIS Skrevet 8. mars 2009 Del Skrevet 8. mars 2009 Hvis du ikke har session.auto_start = 1 i php.ini, så må du kalle session_start før du bruker $_SESSION. session_register kaller session_start automagisk. Men du bør ikke bruke session_register da den forsvinner i PHP6. Lenke til kommentar
:Francis: Skrevet 8. mars 2009 Forfatter Del Skrevet 8. mars 2009 (endret) 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 8. mars 2009 av :Francis: Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå