Door
bram unknown
op 09-02-2011 17:36
gewijzigd op 09-02-2011 17:38
3.443 views
Hey,
Ik heb hier 2 scripts die ik gebruikt.
Onder het kopje "account" op mijn website moet de gebruiken worden verzonden naar of het inlog scherm, of het account scherm. Dit ligt er natuurlijk aan of de gebruiker is ingelogd. Hier zijn mijn scripts:
}
else{
echo '
Welcome! Before we can move you to the account panel, you must log in. Please enter your username and password below.
<br></br>
<form method="post" action="?page=WizzardzAccount2.php">
<table border="0" id="Table">
<tr>
<td>Nickname:</td>
<td><input type="text" name="Nickname" value=""></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="Password" value=""></td>
</tr>
<tr height="15"></tr>
<tr>
<td><a href="?page=WizzardzForgotpassword.php">Forgot password?</a></td>
<td><a href="?page=WizzardzAccountCreate.php">Create new account?</a></td>
</tr>
</table>
<input type="submit" id="LoginButton" value="Login">
</form>';
}
?>
</html>
--
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername' and Password='$mypassword'";
$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
Ik mocht geen nieuw topic maken, dus post het hele bericht gewoon hier. Door het slotje van de admin is het bericht een beetje onoverzichtelijk geworden.
Hey,
Op mijn website wil ik iemand laten inloggen. Hiervoor gebruik ik session_start().
Het eerste probleem is dat mijn website een kader bevat die waar een pagina binnen in wordt geladen.
De session_start is het eerste wat moet worden geladen van de pagina. En daarom staat deze daar voor aan:
Quote:
Code (php)
1
2
3
<?php
session_start();
?>
Als iemand op de Account knop klikt komt hij op een pagina.
Het eerste wat die pagina doet is kijken of de pagina een post mee krijgt met "username" en "password".
In dit geval, controleert de pagina of de naam en wachtwoord bestaan en bij elkaar horen.
Dit controleren gaat met de verwijzing: require_once('WizzardzCheckuser.php');.
Op dit script kom ik later nog terug.
Het tweede was de pagina doet is controleren of er een session "user" bestaat.
Als dit het geval is komt de gebruiker normaal op een gebruikers panel.
Op dit moment het ik dat gedeelte vervangen met: echo "hier komt het gebruiker deel";.
Als de session niet bestaat is er een echo waar de html code in staat voor inloggen.
Deze inlog verwijst weer naar dezelfde pagina.
Maar nu zit er wel een post en kan de pagina dus gaan inloggen.
Het deel van account checken werkt trouwens wel, hoewel er kleine foutjes in zitten als variabelen tussen haakjes.
Dit is de "account" pagina.
Quote:
Code (php)
<?php
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password <br></br>" ;
}
}
//tot hier werkt het nog.
if(empty($_SESSION["user"])){
echo "hier komt het gebruiker deel";
}
else{
echo '
Welcome! Before we can move you to the account panel, you must log in. Please enter your username and password below.
<br></br>
<form method="post" action="?page=WizzardzAccount2.php">
<table border="0" id="Table">
<tr>
<td>Nickname:</td>
<td><input type="text" name="Nickname" value=""></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="text" name="Password" value=""></td>
</tr>
<tr height="15"></tr>
<tr>
<td><a href="?page=WizzardzForgotpassword.php">Forgot password?</a></td>
<td><a href="?page=WizzardzAccountCreate.php">Create new account?</a></td>
</tr>
</table>
<input type="submit" id="LoginButton" value="Login">
</form>';
}
?>
En hier is het deel waar de naam en pass worden gechecked.
Quote:
Code (php)
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername' and Password='$mypassword'";
$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){
// Register $myusername, $mypassword and redirect to file "login_success.php"
return 1;
}
else {
return 0;
}
}
?>
De fout die ik krijg, is dat de pagina altijd denkt dat er een session bestaat.
Ook als dit niet het geval is.
Als er nog vragen zijn zal ik deze zo spoedig mogelijk beantwoorden.
Ik hoop echt dat iemand weet wat de fout is.
als je $_SESSION["user"] niet aanmaakt, bestaat hij niet en is hij dus altijd leeg. als je dan empty($_SESSION["user"])) doet zal hij altijd true terug geven.
Ik was in de war gekomen omdat ik meerdere files had gemaakt omdat ik meerdere manieren had geprobeerd.
Ik heb de logincheck zo verandert nu:
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername' and Password='$mypassword'";
$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
[size=xsmall]Toevoeging op 14/02/2011 16:10:46:[/size]
Ik was in de war gekomen omdat ik meerdere files had gemaakt omdat ik meerdere manieren had geprobeerd.
Ik heb de logincheck zo verandert nu:
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername' and Password='$mypassword'";
$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
De session_start staat helemaal voor op de pagina, zoals uitgelegd in mijn post hier boven.
Het eerste probleem is dat mijn website een kader bevat die waar een pagina binnen in wordt geladen.
De session_start is het eerste wat moet worden geladen van de pagina. En daarom staat deze daar voor aan.
<?php
session_start();
?>
[size=xsmall]Toevoeging op 14/02/2011 16:23:30:[/size]
<?php
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password <br></br>" ;
}
}
if(!empty($_SESSION["user"])){
echo 'This is the users panel.<br>
Here you can choose what you want to do with your account. <br></br>
<table border="0">
<tr>
<td><a href="?page=WizzardzLogout.php">Logout</a></td>
</tr>
</table>';
}
else{
echo '
Welcome! Before we can move you to the account panel, you must log in. Please enter your username and password below.
<br></br>
<form method="post" action="?page=WizzardzAccount2.php">
<table border="0" id="Table">
<tr>
<td>Nickname:</td>
<td><input type="text" name="Nickname" value=""></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="Password" value=""></td>
</tr>
<tr height="15"></tr>
<tr>
<td><a href="?page=WizzardzForgotpassword.php">Forgot password?</a></td>
<td><a href="?page=WizzardzAccountCreate.php">Create new account?</a></td>
</tr>
</table>
<input type="submit" id="LoginButton" value="Login">
</form>';
}
?>
<?php
function CheckUser($user,$pass){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$mypassword = mysql_real_escape_string($pass);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername' and Password='$mypassword'";
$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