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:


if($_POST['login']){
		$fnev=$_POST['fnev'];
		$pass=$_POST['pass'];
		
		if(!$fnev){
			echo "<h5>Nincs megadva felhasználónév</h5>";
			$login=false;
		}
		else{
			$login=true;
		}
		
		if(!$pass){
			echo "<h5>Nincs megadva jelszó</h5>";
			$login=false;
		}
		else{
			$login=true;
		}
		if($login){
			$pass=md5($pass);
			$fnev=mysql_real_escape_string($fnev);
			$ertek=mysql_query("SELECT * FROM user WHERE name='$fnev' AND pass='$pass'");
			if(mysql_num_rows($ertek)!=1){
				echo "<h5>Hibás felhasználónév és/vagy jelszó</h5>";
				$login=false;
			}
			else{
				$login=true;
			}
			if($login){
				while($sorok=mysql_fetch_array($ertek)){
					$fnev=$sorok['name'];
					
					$_SESSION['user']=true;
					$_SESSION['fnev']=$fnev;
					
					$now=date("Y-m-d H:i:s", time());
					
					mysql_query("UPDATE user SET visit='$now'");
					
					header("Location: $_SERVER[PHP_SELF]");
				}
			}
		}
	}
Ez pedig az index fájl szükséges része:

include("connect.php");
	session_start();
	if(!empty($_SESSION['user'])){
		$user=true;
		$fnev=$_SESSION['fnev'];
		$ertek2=mysql_query("SELECT * FROM user WHERE name='$fnev'");
		while($sorok2=mysql_fetch_array($ertek2)){
					$fnev=$sorok2['name'];
					$avatar=$sorok2['avatar'];
					$lastvisit=$sorok2['visit'];
					$regdate=$sorok2['reg'];
		}
	}
	else{
		$user=false;
	}
És ide akarom beírni:

<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:
<?=$fnev;?>
Át kéne írni őket erre:
<?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 :)

if($_POST['login']){  
        $fnev=$_POST['fnev'];  
        $pass=$_POST['pass'];  
          
        if(!$fnev){  
            echo "<h5>Nincs megadva felhasználónév</h5>";  
            $login=false;  
        }  
        else{  
            $login=true;  
        }  
          
        if(!$pass){  
            echo "<h5>Nincs megadva jelszó</h5>";  
            $login=false;  
        }  
        else{  
            $login=true;  
        }  
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 :)