Ik Zit al enige tijd met dit script te rotzooien, maar ik krijg het niet voor elkaar om na het inloggen de juiste (user_id) te krijgen op (show_user.php). Het inloggen lukt wel anders zou je niet door gelinkt worden naar (show_user.php) maar niet met het juiste (user_id) je komt namelijk op een pagina terecht zonder info van die desbetreffende (user). Heeft dit met de session te maken of de link in de header ? Dus mijn vraag is weet iemand toevallig een how to of topic waar dit probleem uitgelegd word? of ziet iemand toevallig gelijk wat ik fout doe ? Alles staat online op http://163.158.253.94/cms en uiteraard het encrypte van de wachtwoorden komt als dit script werkt. Bedankt voor jullie tijd ! (hieronder het login script)


<?php
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';

if (!session_is_registered('user_id') || !session_is_registered('username'))
{
	// user is not logged in.
    if (isset($_POST['cmdlogin']))
    {
        // retrieve the username and password sent from login form
        // First we remove all HTML-tags and PHP-tags, then we create a md5-hash
        // This step will make sure the script is not vurnable to sql injections.
        
        $u = strip_tags($_POST['username']);
        $p = strip_tags($_POST['password']);
        //Now let us look for the user in the database.
        $query = sprintf("SELECT user_id, username FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
            mysql_real_escape_string($u), mysql_real_escape_string($p));
        $result = mysql_query($query);
        // If the database returns a 0 as result we know the login information is incorrect.
        // If the database returns a 1 as result we know  the login was correct and we proceed.
        // If the database returns a result > 1 there are multple users
        // with the same username and password, so the login will fail.
        if (mysql_num_rows($result) != 1)
        {
            // invalid login information
            echo "Wrong username or password!";
            //show the loginform again.
            include "index.php";
        } else {
            // Login was successfull
            $row = mysql_fetch_array($result);
            // Save the user ID for use later
            $_SESSION['user_id'] = $row['user_id'];
              // Save the username for use later
            $_SESSION['username'] = $u;
              // Now we show the user
            header("Location:show_user.php");
        }
		
    } else {
    	 // User is not logged in and has not pressed the login button
    	 // so we show him the loginform
        include "signup.php";
    }
 
} else {
	 // The user is already loggedin, so we show the user
    include "show_user.php";
}
?>
oke mooizo, ik ben nu gelijk even met de qnap helpdesk bezig en update van de firmware is nu wel gelukt hoop alleen dat alle instellingen behouden zijn. Ik heb gelukkig wel een stuk of 3 back ups van me website en de instellingen dus dat gaat wel goed komen Het opnieuw opstarten daarin tegen kan een klein half uur in beslag nemen. Ik kom hier straks op terug. Gelukkig ben ik nu wel in staat om de nieuwe php versie te installeren !! :D.
Gelukkig maar. We horen het wel als het gelukt is.
Welke PHP-versie heb je nu dan?
Dit is een recente versie!

Zet ook bovenbaan:
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>

Dan zie je alle fouten.
Ik leer van het boek php mysql the missing manual 2nd edition, en daar wordt helaas niet gewerkt met MySQLi functies.
Misschien dat boek maar eens in de open haard gooien? ;-)

Vooral als ze het ook nog hebben over session_is_registered() geeft het mij geen goed gevoel voor de recente en aanstaande PHP-versies.

Op phptuts.nl staan recente tutorials over MySQLi. Kijk daar eens naar.
Dat is best erg slecht, want MySQLi bestaat al zo'n 12 jaar..
hij geeft dan indd aan dat de fout in line 8 zit en dat is:


<?php
require_once 'scripts/connect.php';
require_once 'scripts/app_config.php';

error_reporting(E_ALL);
ini_set('display_errors',1);

if (!session_is_registered('user_id') || !session_is_registered('username'))
{
	// user is not logged in.
    if (isset($_POST['cmdlogin']))
    {
        // retrieve the username and password sent from login form
        // First we remove all HTML-tags and PHP-tags, then we create a md5-hash
        // This step will make sure the script is not vurnable to sql injections.
        
        $u = strip_tags($_POST['username']);
        $p = strip_tags($_POST['password']);
        //Now let us look for the user in the database.
        $query = sprintf("SELECT user_id FROM users WHERE username = '$u' AND password = '$p' LIMIT 1;",
            mysql_real_escape_string($u), mysql_real_escape_string($p));
        $result = mysql_query($query);
        // If the database returns a 0 as result we know the login information is incorrect.
        // If the database returns a 1 as result we know  the login was correct and we proceed.
        // If the database returns a result > 1 there are multple users
        // with the same username and password, so the login will fail.
        if (mysql_num_rows($result) != 1)
        {
            // invalid login information
            echo "Wrong username or password!";
            //show the loginform again.
            include "index.php";
        } else {
            // Login was successfull
            $row = mysql_fetch_array($result);
            // Save the user ID for use later
            $_SESSION['user_id'] = $row['user_id'];
              // Save the username for use later
            $_SESSION['username'] = $u;
              // Now we show the user
            header("Location:profile.php");
        }
		
    } else {
    	 // User is not logged in and has not pressed the login button
    	 // so we show him the loginform
        include "index.php";
    }
 
} else {
	 // The user is already loggedin, so we show the user
    include "profile.php";
}
?>


[size=xsmall]Toevoeging op 06/01/2016 19:26:39:[/size]

PHP Maarten op 06/01/2016 19:16:44

Dat is best erg slecht, want MySQLi bestaat al zo'n 12 jaar..


hahaha dan ben ik wel blij dat ik de gratis pdf versie heb gedownload in plaats van 40 euro uitgeven voor iets dat een klein beetje out dated is...
De functie session_is_registered() bestaat niet meer. Gebruik [php]isset[/php] om $_SESSION['user_id'] en $_SESSION['username'] te controleren.
Wat ik erg vind is dat het een boek uit 2013 is, en zo achterhaald is. Zo wordt het gebruik van $_REQUEST zelfs aangeraden zo te zien, en worden joins op de verkeerde manier uitgelegd. Fijn boek, gewoon weg ermee. Verbazingwekkend dat dit een O'Reilly boek is.

Reageren