Heey,
In ben bezig met m'n CMS en ik heb een probleem met m'n session handling. Zodra ik inlog met een willekeurig profiel en ik naar het onderdeel "Edit Profile" ga, wordt altijd entry met id nr. 1 opgehaald. Hieronder drie scripts: de inlogcontrole; de html form en de form controle.
De inlogcontrole.php checkt, zoals de naam al zegt, de id met de database en maakt de sessie aan (hopelijk omschrijf ik het zo goed)
De editprofileform.php haalt de data uit de database en zet die in de form zodat de gebruiker de al eerder ingevoerde data meteen kan zien en aanpassen.
De editprofilecontrole.php voert de controle uit bij veranderingen van het profiel en veranderd de data ook daadwerkelijk in de database.
Zelf denk ik dat het probleem zit in de SQL code van de editprofileform maar ik weet niet precies de oplossing...
Hoe kan ik zorgen dat de juiste data uit de database gehaald wordt? dus de informatie van degene die is ingelogd?
Bij voorbaat dank!
Script 1: inlogcontrole.php
<?php
//Username and Password from the login screen
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
// encrypt password
$encrypted_mypassword=md5($mypassword);
//niets ingevuld
if($myusername == null || $mypassword == null) {
header("Location: inlogscherm.php?msg=2");
exit;
//Protection of MySQL injection
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
//wel wat ingevuld, controle met db
} else {
//db includen + q uitvoeren
include("../../databaseconnectie/database.php");
$sql="SELECT username, password FROM users WHERE username='" . $myusername . "' AND password='" . $encrypted_mypassword . "'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
if ($count==1){
//sessie aanmaken met userid
session_register("myusername");
session_register("mypassword");
header("Location: ../index.php");
} else {
header("Location: inlogscherm.php?msg=1");
}
}
?>
Script 2: de editprofileform.php (snippet; zonder html form)
<?php
echo "<h2>Verander je profiel</h2>";
include('../databaseconnectie/database.php');
$sql = "SELECT userid,name,email,userpic,usergear,usermsg FROM users WHERE userid = " . session_is_registered(myusername);
$res = mysql_query($sql);
$msg = $_GET['msg'];
switch ($msg){
case "1":
echo "<font color='#ff0000'><small>You forgot something to fill in!</small></font>";
break;
case "2":
echo "<small><font color='#ff0000'>Updated!<BR><BR></font></small>";
break;
default:
echo "";
break;
}
while ($row = mysql_fetch_array($res)){
?>
Script 3: de editprofilecontrole.php
<?
include('../../databaseconnectie/database.php');
$id = $_GET['id'];
$name = $_POST['name'];
$email = $_POST['email'];
$usergear = $_POST['usergear'];
$usermsg = $_POST['msg'];
if($id == null || $name == null || $email == null || $usergear == null || $usermsg == null) {
header("Location: ../index.php?show=3&profile=1&err=1");
} else {
$kwerie = "UPDATE users SET name = '". $name ."', email = '".$email."', usergear = '".$usergear."', usermsg = '".$usermsg."'
WHERE userid = '".$id."'";
mysql_query($kwerie);
header("Location: ../index.php?show=3&profile=1&err=2");
}
?>
1.077 views