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:


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Wizzardz</title>
<link rel="stylesheet" type="text/css" href="WizzardzAccount.css">
</head>
<?
if(isset($_POST["Nickname"]) && isset($_POST["Password"])){
require_once('WizzardzCheckuser.php');
$check=CheckUser($_POST["Nickname"],$_POST["Password"]);
if(!$check){
echo "wrong username or password" ;
}
}
if(isset($_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>';
}
?>
</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

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$_SESSION['user'] = $myusername;
return 1;
}
else {
return 0;
}
}
?>


Met deze scripts laat hij elke keer het deel zien waar hij al is ingelogd.
Iemand een idee?

Bedankt!
is 1 topic niet voldoende?

[size=xsmall]Toevoeging op 09/02/2011 17:38:10:[/size]

wat is je probleem?
Dit is een andere code

[size=xsmall]Toevoeging op 09/02/2011 17:39:07:[/size]

Met deze scripts laat hij elke keer het deel zien waar hij al is ingelogd.
Iemand een idee?
nogmaals : Wat is je probleem, leg het eens goed uit / gebruik ook goed nederlands
Het script kijkt of de gebruiker is ingelogd, als dit waar is laat hij het 'account panel' zien.
Als de gebruiker niet is ingelogd, controleert het script de naam en logt hem vervolgens in.

Dit script verwijst elke keer naar optie 1. Hij denkt dus dat de gebruiker is ingelogd terwijl dit niet het geval is.
Dat zou ik niet doen de naam controleren .

Ik zou kijken of de sessie bestaat . En dan een melding geven dat de sessie verlopen is. en dan de login weergeven

Stel er zit een vreemde achter je pc , die hoeft dan maar op submit te drukken
Het script kijkt of de persoon wel bestaat en logt vervolgens in?

En ik snap nu pas wat je bedoelt met 2 topics. Dat was gewoon foutje van het internet. ;)
Okay, begin al eens met het volgende: php bovenaan, html onderaan.

Alles wat je hebt aan php logica
( if(isset($_POST["Nickname"]) ... )
moet boven
<!DOCTYPE html ...
komen.

Als je daar in slaagt, kunnen we verder kijken naar je probleem.
en ik mis session_start(), en inderdaad zoals kris zegt eerst php en dan pas html (logica eerst, en dan pas de output)
Dan ga ik verder:


Onnodig variabelen aanmaken
variabelen horen niet binnen de quotes
mysql_real_escape_string in een sessie? Heel vreemd
session_start mist zoals al gezegt
html niet valid
php boven html onder behalve doctype die moet helemaal bovenaan
* is een wildcard selecteer wat je wilt
Bouw fouthandeling in
@ jordi

volgens mij maakt dat niet zoveel uit of je die doctype nou helemaal boven aan zet, ik doe gewoon eerst php en daarna echo ik de doctype + <html> enzovoort, ik probeer juist altijd te beginnen met session start ;P

Reageren