logingsysteem

Status
Niet open voor verdere reacties.

patje8

Gebruiker
Lid geworden
31 jul 2005
Berichten
436
Heb een quiz gemaakt waar men eerst moet inloggen met gebruikersnaam en paswoord.
Het probleem is echter dat wanneer de gegevens in de top10 moeten geplaatst worden hij de username niet meer vindt.

De code van mijn quiz is:
PHP:
<?php 

// Include configuratie.php zodat we verbinding hebben met de database... 
include("configuratie.php"); 

// Als er (nog) niet op submit gedrukt is... 
if (!IsSet($_POST['submit'])) 
{ // geven we de quiz weer: 
?> 
<style type="text/css">
<!--
body {
	background-color: #0099FF;
}
-->
</style> 

<form action='begrippen.php' method='post'> 
  <div align="center">Welke omschrijving past het best bij het begrip?<br>
    <br>
1) Een melodie ...? <br>
<input type='radio' name='q1' value='a1'>
is wat je ziet<br> 
<input type='radio' name='q1' value='a2'>
zegt iets over lengte van tonen<br> 
<input type='radio' name='q1' value='a3'>
verandert van toonhoogte<br> 
<br>
2) Een ritme ...? <br>
<input type='radio' name='q2' value='a1'>
is wat je hoort<br> 
<input type='radio' name='q2' value='a2'>
kun je klappen<br> 
<input type='radio' name='q2' value='a3'>
zegt iets over de lengte van tonen<br> 
<br>
<br>
<input type='submit' name='submit' value='Controleer antwoorden'> 
  </div>
</form> 
<? 
} 
else 
{ 
    // Je begint met 0 punten, per goede vraag komen daar 10 punten bij. 
     
    $score = 0; 
    // anders; als er wel op submit gedrukt is, controleren we of de antwoorden goed zijn. 
    if ($_POST['q1'] == a3) // hier staat dus: Als het antwoord op vraag 1 (q1) = a1 dan... 
    { 
        $score = $score + 10; // dan komen er 10 punten bij de huidige aantal punten. 
        // nu geven we ook nog even weer dat die persoon de vraag goed had! 
        echo "Je had vraag 1 goed!<br />\n"; 
    } 
    else // als het antwoord op vraag 1 dus niet a1 (en dus fout was): 
    { 
        // krijg je er geen punten bij en word er weergegeven dat je vraag 1 fout had. 
        echo "Helaas, je had vraag 1 fout!<br />\n"; 
    } 
    // nu gaan we hetzelfde doen bij vraag 2..daar is antwoord 2 (a2) het juiste antwoord. 
    if ($_POST['q2'] == a2) 
    { 
        $score = $score + 10; 
        echo "Je had vraag 2 goed!<br />\n"; 
    } 
    else 
    { 
        echo "Helaas, je had vraag 2 fout!<br />\n"; 
    } 
    // We zijn klaar met het nakijken van de antwoorden. 
        // Dan gaan we nu die gegevens in de mySQL tabel zetten... 
        mysql_query("INSERT INTO top10 (username,score,vraag)
		                 VALUES (select username from leden,$score,$vraag)") 
                or die(mysql_error()); 
         
        // De gegevens zijn toegevoegd en dat geven we even weer: 
        echo "Bedankt, voor het maken van de quiz.<br />\n Je kunt hierboven kijken welke antwoorden je goed en fout had.<br />\n Als je veel goede antwoorden had heb je grote kans dat je in de <a href='top10.php'>top 10</a> staat."; 
    } 
?>

Wat is het probleem?
 
username opslaan in sessie en deze dan laden met variabele:

PHP:
<?php
$username = $_SESSION['user'];
?>
 
Je bedoelt dat ik jouw code moet laden en onderstaande code moet veranderen

PHP:
 mysql_query("INSERT INTO top10 (username,score,vraag)
		VALUES ($user,$score,'begrippen')")
 
ja, want wat je nu hebt gedaan:

in een query zet je nog een query die die niet gaat uitvoeren. dus sla eerst alle gegevens op in variablen.
EN JE USERNAME OOK NOG IN EEN SESSIE
 
Heb nu onderstaande code:

PHP:
<?php 

// Include configuratie.php zodat we verbinding hebben met de database... 
include("configuratie.php"); 
$username = $_SESSION['user'];
// Als er (nog) niet op submit gedrukt is... 
if (!IsSet($_POST['submit'])) 
{ // geven we de quiz weer: 
?>

<style type="text/css">
<!--
body {
	background-color: #0099FF;
}
-->
</style> 
<form action='begrippen.php' method='post'> 
  <div align="center">Welke omschrijving past het best bij het begrip?<br>
    <br>
1) Een melodie ...? <br>
<input type='radio' name='q1' value='a1'>
is wat je ziet<br> 
<input type='radio' name='q1' value='a2'>
zegt iets over lengte van tonen<br> 
<input type='radio' name='q1' value='a3'>
verandert van toonhoogte<br> 
<br>
2) Een ritme ...? <br>
<input type='radio' name='q2' value='a1'>
is wat je hoort<br> 
<input type='radio' name='q2' value='a2'>
kun je klappen<br> 
<input type='radio' name='q2' value='a3'>
zegt iets over de lengte van tonen<br> 
<br>
<input type='submit' name='submit' value='Controleer antwoorden'> 
  </div>
</form> 
<? 
} 
else 
{ 
    // Je begint met 0 punten, per goede vraag komen daar 10 punten bij. 
     
    $score = 0; 
    // anders; als er wel op submit gedrukt is, controleren we of de antwoorden goed zijn. 
    if ($_POST['q1'] == a3) // hier staat dus: Als het antwoord op vraag 1 (q1) = a1 dan... 
    { 
        $score = $score + 10; // dan komen er 10 punten bij de huidige aantal punten. 
        // nu geven we ook nog even weer dat die persoon de vraag goed had! 
        echo "Je had vraag 1 goed!<br />\n"; 
    } 
    else // als het antwoord op vraag 1 dus niet a1 (en dus fout was): 
    { 
        // krijg je er geen punten bij en word er weergegeven dat je vraag 1 fout had. 
        echo "Helaas, je had vraag 1 fout!<br />\n"; 
    } 
    // nu gaan we hetzelfde doen bij vraag 2..daar is antwoord 2 (a2) het juiste antwoord. 
    if ($_POST['q2'] == a2) 
    { 
        $score = $score + 10; 
        echo "Je had vraag 2 goed!<br />\n"; 
    } 
    else 
    { 
        echo "Helaas, je had vraag 2 fout!<br />\n"; 
    } 
    // We zijn klaar met het nakijken van de antwoorden. 
        // Dan gaan we nu die gegevens in de mySQL tabel zetten... 
        mysql_query("INSERT INTO top10 (username,score,vraag)
		                 VALUES ($user,$score,'begrippen')") 
                or die(mysql_error()); 
         
        // De gegevens zijn toegevoegd en dat geven we even weer: 
        echo "Bedankt, voor het maken van de quiz.<br />\n Je kunt hierboven kijken welke antwoorden je goed en fout had.<br />\n Als je veel goede antwoorden had heb je grote kans dat je in de <a href='top10.php'>top 10</a> staat."; 
    } 
?>

Helaas lukt het nog niet. Krijg steeds volgende melding.

Helaas, je had vraag 1 fout!
Je had vraag 2 goed!
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '30,'begrippen')' at line 2
 
je moet je sessie eerst instellen.

geeft evt. even hier je loginscript en je configuratie.php bestand dan kan ik er even naar kijken.
en wat is lijn 2? want hier staat niks op lijn 2
 
Configuratie.php
PHP:
<?php 

// Vul hier je MySQL database gegevens in 
$connect['host']    = "localhost"       ;  // Je mySQL host; in 99% van alle gevallen: localhost 
$connect['user']    = ""            ;      // Je username 
$connect['pass']    = ""                 ; // En bij behorende wachtwoord 
$connect['data']    = ""            ;      // En als laatste de naam van de database..
// Hieronder hoef je niets te wijzigen 

// Sessie starten 
session_start(); 

 mysql_connect($connect['host'],$connect['user'],$connect['pass']) 
or die("Kon geen verbinding maken met de mySQL database! Controleer je gegevens (host, user, pass)"); 
mysql_select_db($connect['data']) 
    or die("Kon geen database selecteren! Controleer je gegevens (database naam)");  

// Inlog functie 
// Retourneerd TRUE als user is ingelogd 
function is_logged_in() 
{ 
    global $HTTP_SESSION_VARS; 

        if (!IsSet($HTTP_SESSION_VARS['userid'])) 
        { 
            return (0); 
        } 

    return (1); 
} 
?>

login.php

PHP:
<div align="center"><style type="text/css">
<!--
body {
	background-color: #0099FF;
}
-->
</style><?php 

// Als je script werkt met deze regel bovenaan 
// is het een goed script 
error_reporting(E_ALL); 

// Config includen om met de MySQL databeest verbinding 
// te maken 
include("config.php"); 

// Kijken of het formulier is gesubmit 
if (IsSet($HTTP_POST_VARS['submit'])) 
{ 

    // Kijken of de user wel een gebruikersnaam en pass heeft ingevuld 
    if (!IsSet($HTTP_POST_VARS['password']) || !IsSet($HTTP_POST_VARS['username'])) 
    { 
        exit("Je moet wel een password/user combinatie invullen."); 
    } 

    // Het wachtwoord is gecodeerd (md5), dus gaan we kijken of deze combi van user/pass ook in de DB bestaat 
    $CombiCheckQ = mysql_query("SELECT username,userid,email 
                                  FROM leden 
                                WHERE username = '".addslashes($HTTP_POST_VARS['username'])."' 
                                  AND password = '".md5($HTTP_POST_VARS['password'])."' 
                                  AND actief = 1 
                              "); 

        // Kijken of er resultaten zijn, zoja, is de user ingelogd 
        if (mysql_num_rows($CombiCheckQ) == 0) 
        { 
            exit("Een ongeldige user/pass combinatie is ingevoerd."); 
        } 

        // Sessie registreren 
        $gegevens = mysql_fetch_array($CombiCheckQ); 

        $HTTP_SESSION_VARS['username'] = $gegevens['username']; 
        $HTTP_SESSION_VARS['userid']   = $gegevens['userid']; 
        $HTTP_SESSION_VARS['email']    = $gegevens['email']; 

        // Redirecten naar beveiligde_pagina.php 
        if (headers_sent()) 
        { 
            echo "<script language=\"JavaScript\">"; 
            echo "document.location='beveiligde_pagina.php'"; 
            echo "</script>"; 
        } else { 
            header("location: beveiligde_pagina.php"); 
        } 

        // Stoppen met parsen 
        exit(); 

} else { 

    // Formulier voor inloggen laten zien 

    echo "<form action=\"inloggen.php\" method=\"post\">"; 
    echo "Gebruikersnaam: "; 
    echo " <input name=\"username\"><br />\n<br />\n"; 
    echo "Paswoord: "; 
    echo " <input name=\"password\" type=\"password\"><br />\n<br />\n"; 
    echo "<input type=\"submit\" name=\"submit\" value=\"Log in\"><br />\n"; 
    echo "</form>"; 

} 
?>
Niet nog aangemeld? Doe dit dan <a href="aanmelden.php">hier</a>.</div>
 
PHP:
// Sessie registreren 
        $gegevens = mysql_fetch_array($CombiCheckQ); 

        $HTTP_SESSION_VARS['username'] = $gegevens['username']; 
        $HTTP_SESSION_VARS['userid']   = $gegevens['userid']; 
        $HTTP_SESSION_VARS['email']    = $gegevens['email'];

noem je sessie eens: username
 
ff wachte kijk zo mot eerst eten:D

en welke PHP versie gebruik je en wat is lijn 2 in jouw script want daar is de foutmelding
 
Krijg geen foutmelding meer maar de username verschijnt niet in mijn tabel van top10.
 
wat heb je gedaan om die foutmelding weg te krijgen?
en welke PHP en MYSQL versie gebruikje. foutmelding die er net stond zei namelijk dat de foute syntax was gebruikt die niet compatible was met jouw mysql versie.
 
login.php
PHP:
<div align="center"><style type="text/css">
<!--
body {
    background-color: #0099FF;
}
-->
</style><?php 

// Als je script werkt met deze regel bovenaan 
// is het een goed script 
error_reporting(E_ALL); 

// Config includen om met de MySQL databeest verbinding 
// te maken 
include("config.php"); 

// Kijken of het formulier is gesubmit 
if (IsSet($HTTP_POST_VARS['submit'])) 
{ 

    // Kijken of de user wel een gebruikersnaam en pass heeft ingevuld 
    if (!IsSet($HTTP_POST_VARS['password']) || !IsSet($HTTP_POST_VARS['username'])) 
    { 
        exit("Je moet wel een password/user combinatie invullen."); 
    } 

    // Het wachtwoord is gecodeerd (md5), dus gaan we kijken of deze combi van user/pass ook in de DB bestaat 
    $CombiCheckQ = mysql_query("SELECT username,userid,email 
                                  FROM leden 
                                WHERE username = '".addslashes($HTTP_POST_VARS['username'])."' 
                                  AND password = '".md5($HTTP_POST_VARS['password'])."' 
                                  AND actief = 1 
                              "); 

        // Kijken of er resultaten zijn, zoja, is de user ingelogd 
        if (mysql_num_rows($CombiCheckQ) == 0) 
        { 
            exit("Een ongeldige user/pass combinatie is ingevoerd."); 
        } 

        // Sessie registreren 
        $gegevens = mysql_fetch_array($CombiCheckQ); 

        $HTTP_SESSION_VARS['username'] = $gegevens['username']; 
        $HTTP_SESSION_VARS['userid']   = $gegevens['userid']; 
        $HTTP_SESSION_VARS['email']    = $gegevens['email']; 
		
		// sessie user aanmaken
		$_SESSION['user'] = $_POST['username'];

        // Redirecten naar beveiligde_pagina.php 
        if (headers_sent()) 
        { 
            echo "<script language=\"JavaScript\">"; 
            echo "document.location='beveiligde_pagina.php'"; 
            echo "</script>"; 
        } else { 
            header("location: beveiligde_pagina.php"); 
        } 

        // Stoppen met parsen 
        exit(); 

} else { 

    // Formulier voor inloggen laten zien 

    echo "<form action=\"inloggen.php\" method=\"post\">"; 
    echo "Gebruikersnaam: "; 
    echo " <input name=\"username\"><br />\n<br />\n"; 
    echo "Paswoord: "; 
    echo " <input name=\"password\" type=\"password\"><br />\n<br />\n"; 
    echo "<input type=\"submit\" name=\"submit\" value=\"Log in\"><br />\n"; 
    echo "</form>"; 

} 
?>
Niet nog aangemeld? Doe dit dan <a href="aanmelden.php">hier</a>.</div>

en je quiz script:
PHP:
 <?php 

// Include configuratie.php zodat we verbinding hebben met de database... 
include("configuratie.php"); 

// Als er (nog) niet op submit gedrukt is... 
if (!IsSet($_POST['submit'])) 
{ // geven we de quiz weer: 
?> 
<style type="text/css">
<!--
body {
    background-color: #0099FF;
}
-->
</style> 

<form action='begrippen.php' method='post'> 
  <div align="center">Welke omschrijving past het best bij het begrip?<br>
    <br>
1) Een melodie ...? <br>
<input type='radio' name='q1' value='a1'>
is wat je ziet<br> 
<input type='radio' name='q1' value='a2'>
zegt iets over lengte van tonen<br> 
<input type='radio' name='q1' value='a3'>
verandert van toonhoogte<br> 
<br>
2) Een ritme ...? <br>
<input type='radio' name='q2' value='a1'>
is wat je hoort<br> 
<input type='radio' name='q2' value='a2'>
kun je klappen<br> 
<input type='radio' name='q2' value='a3'>
zegt iets over de lengte van tonen<br> 
<br>
<br>
<input type='submit' name='submit' value='Controleer antwoorden'> 
  </div>
</form> 
<? 
} 
else 
{ 
    // Je begint met 0 punten, per goede vraag komen daar 10 punten bij. 
     
    $score = 0; 
    // anders; als er wel op submit gedrukt is, controleren we of de antwoorden goed zijn. 
    if ($_POST['q1'] == a3) // hier staat dus: Als het antwoord op vraag 1 (q1) = a1 dan... 
    { 
        $score = $score + 10; // dan komen er 10 punten bij de huidige aantal punten. 
        // nu geven we ook nog even weer dat die persoon de vraag goed had! 
        echo "Je had vraag 1 goed!<br />\n"; 
    } 
    else // als het antwoord op vraag 1 dus niet a1 (en dus fout was): 
    { 
        // krijg je er geen punten bij en word er weergegeven dat je vraag 1 fout had. 
        echo "Helaas, je had vraag 1 fout!<br />\n"; 
    } 
    // nu gaan we hetzelfde doen bij vraag 2..daar is antwoord 2 (a2) het juiste antwoord. 
    if ($_POST['q2'] == a2) 
    { 
        $score = $score + 10; 
        echo "Je had vraag 2 goed!<br />\n"; 
    } 
    else 
    { 
        echo "Helaas, je had vraag 2 fout!<br />\n"; 
    } 
    // We zijn klaar met het nakijken van de antwoorden. 
        // Dan gaan we nu die gegevens in de mySQL tabel zetten... 
        $username = $_SESSION['user'];
		$query = "INSERT INTO top10 (username,score,vraag) VALUES ($username,$score,$vraag)";
		mysql_query($query) or die(mysql_error()); 
         
        // De gegevens zijn toegevoegd en dat geven we even weer: 
        echo "Bedankt, voor het maken van de quiz.<br />\n Je kunt hierboven kijken welke antwoorden je goed en fout had.<br />\n Als je veel goede antwoorden had heb je grote kans dat je in de <a href='top10.php'>top 10</a> staat."; 
    } 
?>
 
Laatst bewerkt:
Krijg nu volgende melding:

Unknown column 'patricia' in 'field list'
 
Iemand had me aangeraden om een config.php en configuratie.php aan te maken. Kan het probleem hierdoor zijn want als het quiz.php verander naar config.php krijg ik de foutmelding:

Unknown column 'patricia' in 'field list'

Als ik het verander in configuratie.php krijg ik:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '30,'begrippen')' at line 1
waar de volgende code fout is:
PHP:
        $username = $_SESSION['username']; 
        $query = "INSERT INTO top10 (username,score,vragen) VALUES ($username,$score,'begrippen')"; 
        mysql_query($query) or die(mysql_error());

Anders mail ik mijn bestanden eens door.
 
verander $username = $_SESSION['username']; in $username = $_SESSION['user'];

lukt dit niet stuur me dan maar een mailtje via mijn profiel dan krijg je me mail.
 
ik kan wel uren naar het script staren maar wat moet er in de mysql database?
anders schiet ik ook niet veel op.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan