error met $_SESSION["username"]
ik heb echt geen flauw idee wat er fout gaat, maar ik heb een login systeem gemaakt op mijn site. Dat werkt allemaal nog goed, tot ikdan op het idee kwam op de pagina na het inloggen:"Welkom, 'ingelogde'." Dat leek me vrij simpel gewoon met $_SESSION["username"] en een leuke query, maar het blijkt niet te werken. Hij heeft van het begin af aan 1 waarde aan $id toegekent en dat is 5, maakt niet onder welke naam ik inlog, venster refreshen, browser opnieuw openen, werkt allemaal niet.
-- nalogin.php -------------------------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include("login/connection.php");
$sql = "SELECT id FROM login WHERE username='" . $_SESSION["username"] ."' AND wachtwoord='". $_SESSION["wachtwoord"] . "'";
$id = mysql_query($sql);
$a = explode("#", $id);
$id = $a[1];
$sql2 = "SELECT l1.voornaam FROM ";
$sql2 .= "leden AS l1, login AS l2 ";
$sql2 .= "WHERE l1.id = " . $id . " AND l2.tid = " . $id;
$res = mysql_query($sql2);
$row = mysql_fetch_array($res);
echo $row[0];
?>
include("login/connection.php");
$sql = "SELECT id FROM login WHERE username='" . $_SESSION["username"] ."' AND wachtwoord='". $_SESSION["wachtwoord"] . "'";
$id = mysql_query($sql);
$a = explode("#", $id);
$id = $a[1];
$sql2 = "SELECT l1.voornaam FROM ";
$sql2 .= "leden AS l1, login AS l2 ";
$sql2 .= "WHERE l1.id = " . $id . " AND l2.tid = " . $id;
$res = mysql_query($sql2);
$row = mysql_fetch_array($res);
echo $row[0];
?>
Je bent succesvol ingelogd.
<p>
Dit is een deel van de code, in de file die je te zien krijgt na de login pagina.
-- login_2.php -------------------------------------------
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
$query = "SELECT * FROM login WHERE username='" . $_POST["username"] ."' AND wachtwoord='". $_POST["wachtwoord"] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0)
{
$username = $_POST["username"];
$wachtwoord = $_POST["wachtwoord"];
$_SESSION["username"] = $username;
$_SESSION["wachtwoord"] = $wachtwoord;
?>
$query = "SELECT * FROM login WHERE username='" . $_POST["username"] ."' AND wachtwoord='". $_POST["wachtwoord"] . "'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0)
{
$username = $_POST["username"];
$wachtwoord = $_POST["wachtwoord"];
$_SESSION["username"] = $username;
$_SESSION["wachtwoord"] = $wachtwoord;
?>
Met deze code haal ik de gegevens uit de velden die in het form zijn ingevuld.
Nu kan het aan mij liggen, dat ik iets niet zie, een stomme fout maak of zoiets maar bij $a[1] komt altijd de waarde 5 uit??? Of ik doe iets verkeerd met sessies??
alvast bedankt
Gewijzigd op 05/01/2005 23:09:00 door Mischa Gorinskat
of moet je tussen de haakjes een naam geven, want nu krijg ik dus:
Notice: A session had already been started - ignoring session_start() in c:\easyphp1-7\www\jonkheid\login\beveiligd.php on line 10
Die nota wil zeggen dat je meer maals session_start() in je pagina hebt...
(helemaal boven aan zonder enige output ervoor)
daarna worden alle bestanden via een switch ingeladen, dus:
-het formpje word in geladen,
-daarna de pagina die controleert of de invoer overeenkomt met de database gegevens
-en tot slot de pagina nalogin.php waarop ik dus probeer de naam te weergeven, via $_SESSION["usernam"].
Gewijzigd op 05/01/2005 23:55:00 door Mischa Gorinskat
Waarom niet gewoon de username echoën?
Of probeer dit ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$sql = "SELECT id FROM login WHERE username='" . $_SESSION["username"] ."'";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
$id = $row['id']; // Geen idee hoe de rij noemt ?
}
$sql = "SELECT voornaam FROM leden WHERE id='" . $id . "'";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
$voornaam = $row['voornaam'];
}
echo $voornaam;
?>
$sql = "SELECT id FROM login WHERE username='" . $_SESSION["username"] ."'";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
$id = $row['id']; // Geen idee hoe de rij noemt ?
}
$sql = "SELECT voornaam FROM leden WHERE id='" . $id . "'";
$res = mysql_query($sql);
if ($row = mysql_fetch_array($res)) {
$voornaam = $row['voornaam'];
}
echo $voornaam;
?>
Begrijp namelijk niet waarom je de 2de keer uit meerdere tabellen selecteert ;) Misschien voor later in je script... Anyway, hoop dat dit je kan helpen...
echt bedankt