Door
bart de kinkelaar
op 26-01-2015 19:33
gewijzigd op 26-01-2015 19:39
2.376 views
Ik ben bezig met een site, heb al een inlog & registreer-systeem.
Toch krijg ik het niet voor elkaar om een dingetje te maken dat weergeeft: "Ingelogd als (naam gebruiker)"
Hij weergeeft de code namelijk als tekst op de site.
Bovenaan de code staat gewoon:
<?php
session_start();
?>
is de code.
Omderaan die code
<?php
if ( isset($_SESSION['logIn']) ) {
echo "<!DOCTYPE html>
<body>
<div class=´container´>
<p> Je bent ingelogd als:</p> <?php echo $_SESSION['username']?>
</div>";
}
else {
echo "<!DOCTYPE html>
<body>
<div class=´container´>
<p> je bent niet ingelogd</p>
</div>";
}
mysqli_close($con);
?>
het gedeelte waar ik op doel. Het gedeelte dat de naam van de gebruiker moet laten zien.
Waarom echo je alles? je hoeft alleen maar de relevante delen te echo'en.
Daarnaast herhaal je HTML-code, wat ook onnodig is.
En zoals je in de code highlighting hierboven al kunt zien staat er PHP-code in een tekst-string (gebruik je geen editor die je PHP een kleurtje geeft?).
Is dit trouwens je hele HTML-document? Waar is je html / head tag? Waar sluit je je body / html af?
Attributen van HTML-tags moeten te allen tijde tussen "dubbele quotes" worden geschreven.
Tot slot escape je (user)output niet. Dat is potentieel ook gevaarlijk.
Er vanuitgaande dat je UTF-8 als character encoding voor je document gebruikt kun je bovenstaande code verkorten tot het volgende, los van die hele niet-kloppende-HTML-document-opbouw santekraam:
<div class="container">
<p><?php
if (isset($_SESSION['logIn'])) {
?>Je bent ingelogd als: <?php echo htmlspecialchars($_SESSION['username'], ENT_QUOTES, 'UTF-8') ?><?php
} else {
?>Je bent niet ingelogd.<?php
}
?></p>
</div>
<?php
session_start(); // Start a new session
$con=mysqli_connect("localhost","root","superbart","fifaholland");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
};
// Get the data passed from the form
$username = $_POST['username'];
$password = $_POST['password'];
// escape variables for security
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$sql = "select * FROM users WHERE username = '$username' and password = '$password'";
$result = mysqli_query($con, $sql) or die ( mysql_error() );
$nrOfRows = mysqli_num_rows($result);
if ($nrOfRows > 0)
{
$_SESSION['logIn'] = "true";
header("Location:index.html"); // This is wherever you want to redirect the user to
}
else
{
header("Location:notlogin.php");
}
mysqli_close($con);
?>