ugrás a tartalomhoz

Miért nem tudom kiíratni a változókat?

Freddy88 · 2013. Már. 27. (Sze), 15.02
Heló!

Van egy olyan problémám hogy már több mint fél éve, nem használtam a PHP nyelvet és sok minden kiesett azóta. Szóval egy logint szeretnék írni, ami működik is, de szeretnék néhány adatot kiíratni a felhasználóról, viszont ez már nem megy olyan simán. A kérdés az, hogy miért nem kapja meg a változókat?
Tehát:
A login:
  1. if($_POST['login']){  
  2.         $fnev=$_POST['fnev'];  
  3.         $pass=$_POST['pass'];  
  4.           
  5.         if(!$fnev){  
  6.             echo "<h5>Nincs megadva felhasználónév</h5>";  
  7.             $login=false;  
  8.         }  
  9.         else{  
  10.             $login=true;  
  11.         }  
  12.           
  13.         if(!$pass){  
  14.             echo "<h5>Nincs megadva jelszó</h5>";  
  15.             $login=false;  
  16.         }  
  17.         else{  
  18.             $login=true;  
  19.         }  
  20.         if($login){  
  21.             $pass=md5($pass);  
  22.             $fnev=mysql_real_escape_string($fnev);  
  23.             $ertek=mysql_query("SELECT * FROM user WHERE name='$fnev' AND pass='$pass'");  
  24.             if(mysql_num_rows($ertek)!=1){  
  25.                 echo "<h5>Hibás felhasználónév és/vagy jelszó</h5>";  
  26.                 $login=false;  
  27.             }  
  28.             else{  
  29.                 $login=true;  
  30.             }  
  31.             if($login){  
  32.                 while($sorok=mysql_fetch_array($ertek)){  
  33.                     $fnev=$sorok['name'];  
  34.                       
  35.                     $_SESSION['user']=true;  
  36.                     $_SESSION['fnev']=$fnev;  
  37.                       
  38.                     $now=date("Y-m-d H:i:s", time());  
  39.                       
  40.                     mysql_query("UPDATE user SET visit='$now'");  
  41.                       
  42.                     header("Location: $_SERVER[PHP_SELF]");  
  43.                 }  
  44.             }  
  45.         }  
  46.     }  
Ez pedig az index fájl szükséges része:
  1. include("connect.php");  
  2.     session_start();  
  3.     if(!emptyempty($_SESSION['user'])){  
  4.         $user=true;  
  5.         $fnev=$_SESSION['fnev'];  
  6.         $ertek2=mysql_query("SELECT * FROM user WHERE name='$fnev'");  
  7.         while($sorok2=mysql_fetch_array($ertek2)){  
  8.                     $fnev=$sorok2['name'];  
  9.                     $avatar=$sorok2['avatar'];  
  10.                     $lastvisit=$sorok2['visit'];  
  11.                     $regdate=$sorok2['reg'];  
  12.         }  
  13.     }  
  14.     else{  
  15.         $user=false;  
  16.     }  
És ide akarom beírni:
  1. <div class="content">Köszöntünk <?=$fnev;?><br /><img src="avatar/<?=$avatar;?>" /><br />Regisztrált:<br /><b><?=$regdate;?></b><br />Utoljára belépett:<br /><b><?=$lastvisit;?></b><br />Erről az IP címről:<br /><b><?=$ip;?></b><br /><a href="logout.php">Kilépés</a></div>  
 
1

http://xkcd.com/327/

Poetro · 2013. Már. 27. (Sze), 15.11
http://xkcd.com/327/
Egyébként az ide rész hol van?
3

A lap bal oldalán, a

Freddy88 · 2013. Már. 27. (Sze), 16.40
A lap bal oldalán, a bejelentkezés doboz helyén.
5

Ez komoly?

Poetro · 2013. Már. 27. (Sze), 17.01
Ez komoly? Így már világos. Mivel sose mutattad meg az oldalt, valamint még a fájlstruktúrát sem ismerjük, valamint az alkalmazásod érdemi működését, így nem igazán tudunk ezzel az információval előbbre jutni.
4

Szerintem ezekkel van a

hunkris · 2013. Már. 27. (Sze), 17.01
Szerintem ezekkel van a hiba:
  1. <?=$fnev;?>  
Át kéne írni őket erre:
  1. <?php echo $valtozo; ?>  
6

session_start, session_write_close

csla · 2013. Már. 27. (Sze), 17.30
Nem tudjuk, hogy a "login" résznél van-e session_start(). Ha van, akkor a header() függvény előtt használd a session_write_close() függvényt, mert lehet, hogy nem kerül mentésre a munkamenet.
7

Segíteni én sem tudok, de egy

jgege · 2013. Már. 27. (Sze), 20.42
Segíteni én sem tudok, de egy logikai buktára azért felhívnám a figyelmed :)
  1. if($_POST['login']){    
  2.         $fnev=$_POST['fnev'];    
  3.         $pass=$_POST['pass'];    
  4.             
  5.         if(!$fnev){    
  6.             echo "<h5>Nincs megadva felhasználónév</h5>";    
  7.             $login=false;    
  8.         }    
  9.         else{    
  10.             $login=true;    
  11.         }    
  12.             
  13.         if(!$pass){    
  14.             echo "<h5>Nincs megadva jelszó</h5>";    
  15.             $login=false;    
  16.         }    
  17.         else{    
  18.             $login=true;    
  19.         }    
Nem vagyok benne biztos, hogy !$fnev elég én inkább !empty($fnev)-t használnék, de a bukó ott van, hogy ha $fnev-ben nincs semmi, de $pass-ban van akkor $login mindig true lesz. Ha $login-t elején pl $pass után true-ra állítod, a 2 else-t pedig kiszeded ez a problémád megoldódott :)
Ezt a <?=$valtozo; ?> megoldást még nem láttam :)
8

<?=$valtozo?>

csla · 2013. Már. 28. (Cs), 00.45
Az echo-nak a rövid szintakszisa.
http://php.net/manual/en/function.echo.php
9

Nem szokás

Pepita · 2013. Már. 28. (Cs), 01.05
Azért nem látta Jgege sem, mert általában a rövid tag ki van kapcsolva XML és társai miatt. Ezért nem szokjuk hasnyálnyi.
10

Mindennap tanulok valami újat

jgege · 2013. Már. 28. (Cs), 11.18
Mindennap tanulok valami újat :)