Inschrijvingen aan de hand van inloggegevens.

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik maak een website waarbij je je kunt inschrijven op activiteiten.
Waar ik erg op vast loop is dat je aan de hand van je inlog gegevens kunt inschrijven op een activiteit.
Na op de submit knop activiteiten gedrukt te hebben wil ik dat hij de personeelsnummer uit de tabel personeelsgegevens haalt waar mee je bent ingelogd en die dan bij in de tabel inschrijvingen zet.

Zal iemand me hieruit kunnen helpen?

Dit is mijn code voor de login.

inloggen.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  <div id="form2">
    <img src="../Images/anker2.jpg">
    <form action="../include/login_query.php" method="POST">
      <div id="insideform">
        <h4 class="text-success">Login</h4>
                <tr>
          <label>Gebruikersnaam</label>
          <input required type="text" class="form-control" name="username" />
        </tr>
        <br>
                <tr>
          <label>Wachtwoord</label>
          <input required type="password" class="form-control" name="password" />
        </tr>
                <br />
                <div class="form-group">
                    <button class="btn btn-primary form-control" name="login">Login</button>
                </div>
        <br />
        <br />
        <br />
      </div>
    </form>
  </div>



login_query.php

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
session_start();

  if (isset($_POST['login'])) {
    if (isset($_POST['username']) && isset($_POST['password'])) {
      include_once("../include/dbcon.php");

      $username = $_POST['username'];
      $password     = $_POST['password'];
      $stmt = $conn->prepare("SELECT * FROM personeelsgegevens WHERE Personeelsnummer = :Personeelsnummer AND Voucher = :Voucher");
      $stmt->bindParam(":Personeelsnummer", $username);
      $stmt->bindParam(":Voucher", $password);
      $stmt->execute();

      if ($stmt->rowCount() == 1){
        if($r = $stmt->fetch(PDO::FETCH_ASSOC)){
          echo "<script>alert('Succesvol ingelogd'); window.location='../php/activiteiten.php'</script>";
          $_SESSION["id"]   = $r['Personeelsnummer'];
          $_SESSION["rol"]  = "personeel";
          exit();
        }
      }else {
        $stmt = $conn->prepare("SELECT * FROM users WHERE user_name = :user_name AND password = :password");
        $stmt->bindParam(":user_name", $username);
        $stmt->bindParam(":password", $password);
        $stmt->execute();
          if ($stmt->rowCount() == 1){
            if($r = $stmt->fetch(PDO::FETCH_ASSOC)){
            echo "<script>alert('Succesvol ingelogd als admin'); window.location='../php/admin.php'</script>";
            $_SESSION["id"]   = $r['gebruikersID'];
            $_SESSION["rol"]  = "admin";
            exit();
          }
        }
 ?>


dit is de activiteiten pagina (activiteiten.php)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
      <?php
      include_once("../include/session.php");
      include '../include/dbcon.php';
      $stmt = $conn->prepare("SELECT * FROM activiteiten");
      $stmt->execute();

      if($stmt->rowCount() > 0) {
     while($r = $stmt->fetch(PDO::FETCH_ASSOC)){
echo <<< ACTIVITEIT
<div class="ac">
<button class="collapsible">{$r['Naam']}</button>
<div class="content1" style="display: none;">
  <div class="ac-name">{$r['Naam']} | Nijmegen | Deadline: {$r['Deadline']}</div>
    <div class="ac-time">
        <p class="ac-time-p-1">Tijden</p>
        <p class="ac-time-p-2">Plaatsen</p><br />
      <div class="ac-input">
        <form action="inschrijvingen.php?id={$r['ID']}" method="post" class="ac-form">
          <p class="ac-pl">{$r ['Aantal']}/{$r['Aantal']}</p>
          <input type="radio" name="time" value="1">10:00-12:00<br />
          <p class="ac-pl">{$r['Aantal']}/{$r['Aantal']}</p>
          <input type="radio" name="time" value="2">13:00-15:00<br/>
          <input type="submit" value="Inschrijven" class="ac-inschrijven" name="submit"/>
        </form>
      </div>
    </div>
    <div class="ac-dis">
      {$r['Omschrijving']}
      <br>
      <br>
    </div>
  </div>
  </div>
ACTIVITEIT;
              }
            }
          ?>
       <div class="table">

       </div>
    </div>
  </div>


en dit is de belangrijkste inschrijvingen.php waarbij dus de gebruiker aan de hand van het activiteit id en personeelsnummer waar die mee inlogt zich kan inschrijven

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include_once("../include/session.php");
include_once("../include/dbcon.php");
if(isset($_POST['submit'])){
    $personeelsnummer = htmlentities($_POST['personeelsnummer']);
    $workshopid = htmlentities($_POST['workshopid']);
    $tijd = htmlentities($_POST['tijd']);
    $query = $conn->prepare("INSERT INTO `inschrijvingen`(`personeelsnummer`, `workshopid`, `tijd`)
    VALUES (:personeelsnummer,:workshopid,:tijd)");
    $query->bindParam(":personeelsnummer", $personeelsnummer);
    $query->bindParam(":workshopid", $workshopid);
    $query->bindParam(":tijd", $tijd);
    $query->execute();
    header("location: activiteiten.php");
}
  else {
    header("location:../php/activiteiten.php?message=6");
  }

?>



Ik hoop dat iemand de oplossing voor me heeft.

Alle reacties


Acties:
  • +1 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:46

Creepy

Tactical Espionage Splatterer

En wat heb nu je zel al geprobeerd? Als ik je topic lees lijkt het erop alsof je zelf geen idee hebt hoe je dit wil doen en dat je dus ook nog niks zelf hebt geprobeerd. Dus alsof wij het maar even voor je moeten oplossen. Het is hier in de eerste plaats een forum, niet een helpdesk. In PRG draait het om zelf programmeren. Dus bedenk nu eerst eens zelf een oplossing richting, en probeer dat dan eens uit te werken. Of heb je dat gedaan en gaat er iets mis? Zo ja, wat gaat er dan mis? Alleen een "hij doet ut niet" is nogal weinig om je te kunnen helpen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 10-09 10:42

Barreljan

...Zoom-Zoom...

Even quick and dirty.

Na succesvolle login set je eventueel in de $_SESSION een key 'username'
$_SESSION['username'] = $_POST['username']

en bijv. (kan eleganter maar gaat om het idee)
$_SESSION['authenticated'] = True

Als de login succesvol is, refresh de pagina naar activiteiten.php.
Daarin kan je met PHP weer $_SESSION['username'] uitlezen.

Let wel op, je moet goed kijken naar de beveiliging.

In je activiteiten.php begin je dus met;

PHP:
1
2
3
4
5
6
7
8
if ($_SESSION['authenticated'] == True && isset($_SESSION['username'])) 
 (
 echo "laat activiteiten zien van $_SESSION['username']";
 )
else 
 )
 echo "niet ingelogd, scheer je weg";
 )


Hier kom je wel mee op de juiste weg. Verder zoeken op sessie afhandelingen moet wel lukken lijkt mij.


ps.

Kijk even naar je login_query.php, regel 7&8, je moet daar echt even wat escapes gaan doen. SQL injectie is mogelijk zo. Zie ook mysqli_real_escape_string

Kijk anders ook even naar de htmlentities functies, mochten er aparte karakters in namen zitten e.d.

Kijk ook even naar de functies password_hash en password_verify. Je bent nu plain text passwords aan het opslaan, wat nooit aangeraden word.

[ Voor 5% gewijzigd door Barreljan op 21-06-2019 16:21 ]

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Barreljan schreef op vrijdag 21 juni 2019 @ 16:19:
Kijk even naar je login_query.php, regel 7&8, je moet daar echt even wat escapes gaan doen. SQL injectie is mogelijk zo. Zie ook mysqli_real_escape_string
Ben het voor de rest eens met je post, maar dit is niet waar. Hij gebruikt netjes parameterized queries. Dit is mooier/beter dan zelf te lopen kloten met escapen en queries opbouwen.

Acties:
  • 0 Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 10-09 10:42

Barreljan

...Zoom-Zoom...

Daos schreef op vrijdag 21 juni 2019 @ 18:03:
[...]


Ben het voor de rest eens met je post, maar dit is niet waar. Hij gebruikt netjes parameterized queries. Dit is mooier/beter dan zelf te lopen kloten met escapen en queries opbouwen.
Daar heb je gelijk in, heb het ook wat redelijk snel zitten tikken.

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


Acties:
  • 0 Henk 'm!

  • ewoutw
  • Registratie: Oktober 2013
  • Laatst online: 05-09 00:25
code:
1
  $_SESSION["id"]   = $r['Personeelsnummer'];  = $r['Personeelsnummer'];

In deze regel sla je het (volgens mij) het personeel nummer op.
En je suurt hem ook nog mij met '$_GET['id']'

deze kan je dus altijd aanroepen met ' $_SESSION["id"]'
Dus 1 van de vars in de query waar de activiteit opslaat.

Maar weet je wel wat je aan het doen bent? dit is redelijk 101 php kunde
Pagina: 1