php 2 sessions tegelijk?

Status
Niet open voor verdere reacties.

timboiscool

Gebruiker
Lid geworden
27 nov 2008
Berichten
205
Hoi allemaal ik ben bezig met een site genaamd: FriendsLink!

maar ik kom tijdens het inloggen op het volgende probleem:

Als ik inlog moet er een plaatje komen te staan en de tekst : Welcome [naam]

maar inplaats daarvan kom er geen plaatje te staan en alleen te tekst Welcome

en als ik dan op logout klik dan krijg ik pas het goede te zien?
maar als ik dan weer op logout klik lukt dat niet?

hier is de source:

Code:
<html>

<head>
<link href="styles/homecss.css" rel="stylesheet" type="text/css">

<title>FriendsLink</title>
</head>

<body>

<div id="container">

<div id="user">
<?php
error_reporting(0);
require('connectmysql.php');
session_start();

$subm = $_POST['subm'];
$usern = $_POST['username'];
$pass = $_POST['pass'];
$logout = $_POST['logout'];
$susern = $_SESSION['usern'];

if($logout){
Session_destroy() or die("could not logout!");

echo "You Logged out!";
}


if($subm){

$extract = mysql_query("SELECT * FROM members WHERE usernames = '$usern' AND passwords = '$pass'") or die(mysql_error());
$numrows = mysql_num_rows($extract);
$row = mysql_fetch_assoc($extract);
$gusern = $row['usernames'];
$guserp = $row['passwords'];


if($usern == $gusern && $pass == $guserp && $usern != null && $pass != null){

$_SESSION['logdin'] = 1;
$_SESSION['usern'] = $usern;

echo "<h2>Succesfully logged in!</h2>";

}else{

echo "Username or password is incorrect! <br> Please try again!";

}
}

if($_SESSION['logdin'] != 1){


echo "
<form name='Login' method='POST' action='index.php'>

<br>
<br>
<br>
<h3>Username:</h3>
<input type='text' name='username' />
<br>
<h3>Password:</h3>
<input type='password' name='pass'/>
<br>
<br>
<input type='submit' name='subm' value='Login'/>
<br>
<br>
<a href='register.php'>Don't have a account?<br>Register!</a>
<br>
</form>
";

}else{

echo "
<br>
<img src='images/$susern.png' alt='$susern' width='150' height='200' /> 
<h3>Welcome<br>$susern</h3>
<br>
<br>

<form name='logoutform' action='index.php'>

<input type='submit' value='Logout' />

</form>



";


}



?>


</div>

<div id="information">information</div>

<div id="footer">footer</div>

</div>

</body>

</html>
 
De naam die getoond moet worden krijgt bovenin een waarde
PHP:
$susern = $_SESSION['usern'];
Op dat moment is er echter nog niet ingelogd en heeft $_SESSION['usern'] nog geen waarde. Deze krijgt pas na het inloggen een waarde
PHP:
$_SESSION['usern'] = $usern;

De makkelijkste oplossing is om i.p.v. $susern, $_SESSION['usern'] te gebruiken of om
PHP:
$_SESSION['usern'] = $usern;
te veranderen in
PHP:
$susern = $_SESSION['usern'] = $usern;

Overigens is je script op dit moment kwetsbaar voor SQL-injectie.
 
De naam die getoond moet worden krijgt bovenin een waarde
PHP:
$susern = $_SESSION['usern'];
Op dat moment is er echter nog niet ingelogd en heeft $_SESSION['usern'] nog geen waarde. Deze krijgt pas na het inloggen een waarde
PHP:
$_SESSION['usern'] = $usern;

De makkelijkste oplossing is om i.p.v. $susern, $_SESSION['usern'] te gebruiken of om
PHP:
$_SESSION['usern'] = $usern;
te veranderen in
PHP:
$susern = $_SESSION['usern'] = $usern;

Overigens is je script op dit moment kwetsbaar voor SQL-injectie.

Bedankt!

Ik heb nu de code een beetje verandert en zou dit dan goed zijn?(ik weet namelijk niet hoe ik sql inject moet doen xD)

PHP:
<html>

<head>
<link href="styles/homecss.css" rel="stylesheet" type="text/css">

<title>FriendsLink</title>
</head>

<body>

<div id="container">

<div id="user">
<?php
error_reporting(0);
require('connectmysql.php');

$subm = $_POST['subm'];
$usern = $_POST['username'];
$pass = $_POST['pass'];
$logout = $_POST['logout'];

if($logout){
Session_destroy() or die("could not logout!");

echo "You Logged out!";
}


if($subm){

$query = sprintf("SELECT * FROM members WHERE usernames = '%s' AND passwords = '%s'", mysql_real_escape_string($usern), mysql_real_escape_string($pass));
$extract = mysql_query($query) or die(MYSQL_ERROR());
$numrows = mysql_num_rows($extract);
$row = mysql_fetch_assoc($extract);
$gusern = $row['usernames'];
$guserp = $row['passwords'];


if($usern == $gusern && $pass == $guserp && $usern != null && $pass != null){

session_start();

$susern = $_SESSION['usern'] = $usern;

echo "<h2>Succesfully logged in!</h2>";

}else{

echo "Username or password is incorrect! <br> Please try again!";

}
}

if(!$_SESSION['usern']){


echo "
<form name='Login' method='POST' action='index.php'>

<br>
<br>
<br>
<h3>Username:</h3>
<input type='text' name='username' />
<br>
<h3>Password:</h3>
<input type='password' name='pass'/>
<br>
<br>
<input type='submit' name='subm' value='Login'/>
<br>
<br>
<a href='register.php'>Don't have a account?<br>Register!</a>
<br>
</form>
";

}else{

echo "
<br>
<img src='images/$susern.png' alt='$susern' width='150' height='200' /> 
<h3>Welcome<br>$susern</h3>
<br>
<br>

<form name='logoutform' action='index.php'>

<input type='submit' value='Logout' />

</form>



";


}



?>


</div>

<div id="information">information</div>

<div id="footer">footer</div>

</div>

</body>

</html>
 
Laatst bewerkt:
Door mysql_real_escape_string te gebruiken voorkom je de SQL-injectie. Overigens is het niet per se nodig om hier sprintf te gebruiken, dit kan ook
PHP:
$query = "SELECT * FROM members WHERE usernames = '" . mysql_real_escape_string($usern) . "' AND passwords = '" . mysql_real_escape_string($pass) . "'";
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan