Hulp met inloggen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ed Jeurissen

Ed Jeurissen

27/03/2021 21:50:25
Quote Anchor link
dbh.inc.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$servername
= "localhost";
$dbUsername = "root";
$dbPassword = "usbw";

$conn = mysqli_connect($servername, $dbUsername, $dbPassword);

if(!$conn)
{

  die("Connection failed: ".mysqli_connect_error());
}

echo "Connected successfully";
?>


signup.inc.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
    if (isset($_POST['signup-submit'])){

      require 'dbh.inc.php';

      $username = $_POST['uid'];
      $email = $_POST['mail'];
      $password = $_POST['pwd'];
      $passwordRepeat = $_POST['pwd-repeat'];

      if(empty($username)||empty($email)||empty($password)||empty($passwordRepeat))
      {

        header ("Location: ../signup.php?error=emptyfields&uid=".$username."&mail=".$email);
        exit();
      }

      else if(!filter_var ($email, FILTER_VALIDATE_EMAIL && !preg_match("/^[a-zA-Z0-9]$*/", $username)))
      {

        header ("Location: ../signup.php?error=invalidmailuid=");
        exit();
      }

      else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
      {

        header ("Location: ../signup.php?error=invalidmail&uid=".$username);
        exit();
      }

      else if(!pragematch("/^[a-zA-Z0-9]*$/", $username))
      {

        header ("Location: ../signup.php?error=invaliduid&mail=".$email);
        exit();
      }

      else if ($password!==$passwordRepeat)
      {

        header ("Location: ../signup.php?error=password&uid=".$username."&mail=".$email);
          exit();
      }

      else
       {
        $sql = "SELECT uidUsers FROM users WHERE uidUsers=?";
        $stmt = mysqli_stmt_init($conn);
        if(!mysql_stmt_prepare($stmt, $sql))
        {

          header("Location: ../signup.php?error=sqlerror");
          exit();
        }

        else
        {
            mysql_stmt_bind_param($stmt, "s", $username);
            mysql_stmt_execute($stmt);
            mysql_stmt_store_result($stmt);
            $resultCheck = mysql_stmt_num_rows();
            if($resultCheck>0)
            {

              header("Location: ../signup.php?error=usertaken".$email);
              exit();
           }

            else
            {
              $sql = "INSERT INTO users (uidUsers, emailUsers, pwdUsers) VALUES(?, ?, ?)";
              $stmt = mysqli_stmt_init($conn);
                if(!mysql_stmt_prepare($stmt, $sql))
                {

                  header("Location: ../signup.php?error=sqlerror");
                  exit();
                }

                else
                {
                $hashedPwd = password_hash($password, PASSWORD_DEFAULT);
                mysql_stmt_bind_param($stmt, "sss", $username, $email, $hashedPwd);
                mysql_stmt_execute($stmt);
                header("Location: ../signup.php?signup=succes");
                exit();
                }
            }
          }
        }

        mysql_stmt_close($stmt);
        mysql_close($conn);
        }

        else {
          header('Location: ../signup.php');
          exit();
        }

?>


Zie bovenstaande code. Ik kan niet inloggen


Wie kan me helpen??
Gewijzigd op 27/03/2021 21:58:44 door - Ariën -
 
PHP hulp

PHP hulp

24/09/2021 23:00:56
 
- Ariën -
Beheerder

- Ariën -

27/03/2021 22:00:22
Quote Anchor link
Dan moet je toch wat meer informatie geven...
Wat doe je, en wat gebeurt er precies?

Zet ook je error reporting eens wat hoger door dit bovenaan te plaatsen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
?>


Ik vermoed dat pragematch een typfout is, en dat dit preg_match moet zijn. Als je de error reporting aan zet, dan zal je hier wel een foutmelding over moeten krijgen.
Gewijzigd op 27/03/2021 22:02:27 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

28/03/2021 12:29:29
Quote Anchor link
Hoi ik krijg de volgende foutmeldingen:

Signup: http://localhost:8080/signup.php?error=emptyfields&uid=ed1&mail=edkloptphp@mail.com

Login: http://localhost:8080/index.php?error=sqlerror


preg_match heb ik aangepast. Dat was inderdaad een tikfout!

CREATE TABLE users (
idUsers int(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
uidUsers TINYTEXT NOT NULL,
emailUsers TINYTEXT NOT NULL,
pwdUsers LONGTEXT NOT NULL
);

Om de tabel in PHPmyadmin aan te maken.

Uiteraard gedaan maar krijg geen gebruikers in de database!
 
- Ariën -
Beheerder

- Ariën -

28/03/2021 12:37:11
Quote Anchor link
Ik mis je foutmeldingen.
Uiteraard kunnen we niet op je localhost kijken, als je daar op doelt.

Trouwens, waarom zou je persoonlijke gegevens in je URL meegeven?
Gewijzigd op 28/03/2021 12:38:46 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

28/03/2021 12:43:44
Quote Anchor link
Ik krijg geen foutmeldingen, maar krijg niks in de database toegevoegd.
 
- Ariën -
Beheerder

- Ariën -

28/03/2021 12:53:09
Quote Anchor link
Aan de URL te zien heb je een paar velden niet ingevuld.

Haal die location redirect op lijn 13 even tijdelijk weg, en kijk eens met print_r($_POST); wat er in je POST-request staat.

Uiteindelijk is het ook raadzaam om de gebruikersnaam en mailadres uit die redirect te halen. Waarom zou je die gebruiken?

Persoonlijk ben ik meer van het aangeven van welke validaties er mislukken, in plaats van een globale foutmelding waarbij de gebruiker het maar opnieuw moet proberen zonder te weten wat er mis is.
Gewijzigd op 28/03/2021 12:56:06 door - Ariën -
 
Adoptive Solution

Adoptive Solution

28/03/2021 12:56:38
Quote Anchor link
Quote:
maar krijg niks in de database toegevoegd.


Je maakt wel verbinding met de server, maar je geeft geen database op om te gebruiken.

Vergelijk :
https://www.w3schools.com/php/func_mysqli_connect.asp
 
Ed Jeurissen

Ed Jeurissen

02/04/2021 15:03:51
Quote Anchor link
Hallo,

inloggen lukt nu wel maar de wachtwoorden zijn nog steeds zichtbaar. De code tot nog toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
    <head>
        <title>Registreren</title>
    </head>
        <body>
            <form method="post">
            Gebruiker   : <input type="text" name="uidGebruiker" placeholder="Gebruiker"><br />
            E-mail       : <input type="text" name="emailGebruiker" placeholder="E-mail" /><br />
            Wachtoord: <input type="password" name="pwdGebruiker" placeholder=  "Wachtwoord" /><br />
            Herhaal wachtoord: <input type="password" name="pwdherhaal" placeholder="Herhaal wachtwoord"><br>
            <input type="submit" name="submit" value="verstuur" />
            </form>
    

            <?php
            if (!empty($_POST['submit']))
                {

                include ("connectDB.php");
                //query opstellen
                $Gebruiker=$_POST['uidGebruiker'];
                $Email=$_POST['emailGebruiker'];
                $Wachtwoord=$_POST['pwdGebruiker'];
                $WachtwoordHerhaal=$_POST['pwdherhaal'];
                $query = "INSERT INTO gebruikers
                                (uidGebruiker, emailGebruiker, pwdGebruiker, pwdherhaal)
                                VALUES
                                ('$Gebruiker', '$Email','$Wachtwoord','$WachtwoordHerhaal')"
;
                //query runnen
                $result=mysqli_query($conn, $query) or die(mysqli_error($conn));
                }

            ?>
    

            
        </div>
    </body>
</html>


Je ziet het lukt wel met inloggen maar de wachtwoorden blijven zichtbaar! Die wil ik uiteraard versleutelen.

Vraag 1 hoe moet ik de wachtwoorden versleutelen??

Vraag 2 is van een andere orde. Ik nog een tabel gemaakt met plantennrijkgegevens:


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<html lang="nl">
     <head>
          <title>invoeren Plantenrijk-gegevens</title>
          <meta charset=tf-8">
     </head>
     <body>
          <form method="post">
            <p>Vul hieronder de plantenrijkgevens in:</p>
            <p><input type = "text" size = "25" name = "plantenrijk"></p>
            <p><input type = "submit" value = "Voeg toe"></p>
          </form>

<?php
// Connectie met de database maken

include("connectdb.php");

if (!empty($_POST['submit']))
    {

    include ("connectDB.php");
    //query opstellen
    $Plantenrijk=$_POST['plantenrijk'];
    $query = "INSERT INTO plantenrijk
                    (Beschrijving)
                    VALUES
                    ('$Planterijk')"
;
    //query runnen
    $result=mysqli_query($conn, $query) or die(mysqli_error($conn));
    }

?>

</body>
</html>


Als ik hier gegevens wil invoeren lukt dat ook niet iemand hier een oplossing voor??

Groetjes
Ed

Edit:
Code-tags geplaatst. Gelieve voortaan [code] en [/code] om je code-blokken te plaatsen, of gebruik te maken van de https://www.phphulp.nl/img/icon/editor/script.png knop boven het reactieveld.
Gewijzigd op 02/04/2021 17:36:05 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

02/04/2021 15:13:34
Quote Anchor link
Zou je het tussen [code] en [/code] tags kunnen plaatsen? Dan is het beter leesbaarder.

Allereerst beveilig je jouw data niet tegen corruptie en SQL-injection. Je zou dus nooit 's-Hertogenbosch kunnen invullen, en iedereen met kwade bedoelingen kan je query naar eigen wens aanpassen. Dus pas mysqli_real_escape_string toe op je variabelen die je in je query gebruikt.

Over je wachtwoorden. Ik raad zelf aan om de wachtwoorden te hashen met password_hash, en bij een inlogcontrole met password_verify te controleren of de invoer gelijk is met wat er als hash in de database staat.

Verder gebruik je $Plantenrijk, maar gebruik je in je query opeens $Planterijk.
PHP kent niet het grammaticale groene boekje. Maar met menig goede editor zou je eigenlijk bij het uittypen van de variabele de juiste ervan al voorgeschoteld moeten krijgen.

En nog een puntje: waarom zou je een wachtwoord dubbel in de database willen opslaan?
Gewijzigd op 02/04/2021 15:25:40 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

02/04/2021 17:24:14
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="nl">
    <head>
        <title>Connectie</title>
        <link rel="stylesheet" href="screen.css">
    </head>
        <body>
            <?php    
                $host
= "localhost";
                $gebruiker = "root";
                $wachtwoord = "usbw";
                $database = "planten";
                $conn = mysqli_connect($host, $gebruiker, $wachtwoord, $database )
                or die("verbinding mislukt: ". mysqli_connect_error());

                echo "Verbinden met database is gelukt!";

            ?>

        </div>
    </body>
</html>


Dit stuk hierboven gaat wel goed. Echter als ik bijv. Mossen wil invoeren met het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<html lang="nl">
<head>
          <title>invoeren Plantenrijk-gegevens</title>
          <meta charset=tf-8">
     </head>
     <body>
          <form method="post">
            <p>Vul hieronder de plantenrijkgevens in:</p>
            <p><input type = "text" size = "25" name = "plantenrijk"></p>
            <p><input type = "submit" value = "Voeg toe"></p>
          </form>

<?php
// Connectie met de database maken

include("connectDBplanten.php");

if (!empty($_POST['submit']))
    {

    include ("connectDBplanten.php");
    //query opstellen
    $Plantenrijk=$_POST['Beschrijving'];
    $query = "INSERT INTO plantenrijk
                    (Beschrijving)
                    VALUES
                    ('$Plantenrijk')"
;
    //query runnen
    $result=mysqli_query($conn, $query) or die(mysqli_error($conn));
    }

?>

</body>
</html>



Vraag wat gaat hier niet goed??


Toevoeging op 02/04/2021 17:29:53:

ps Hoe kun je eigenlijk plaatjes posten?
Gewijzigd op 02/04/2021 17:36:41 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

02/04/2021 17:39:51
Quote Anchor link
Plaatjes kan je tussen [img] en [/img] tags plaatsen.
Uiteraard dienen deze wel op internet te staan, je kan je uploaden bij bijvoorbeeld ImgBB

Over je probleem:
Jij doet dit: $_POST['Beschrijving']
Maar waar is je formulier-veld met de name 'beschrijving'?
Daarnaast adviseer ik om uiteraard netjes te escapen, zoals ik al eerder zei.
Gewijzigd op 02/04/2021 17:40:28 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

02/04/2021 19:38:16
Quote Anchor link
Wrong image

een paar plaatjes!!

En de code tot nu toe:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<html lang="nl">
     <head>
          <title>invoeren Plantenrijk-gegevens</title>
          <meta charset=tf-8">
     </head>
     <body>
          <form method="post">
            <p>Vul hieronder de plantenrijkgevens in:</p>
            <p><input type = "text" size = "25" name = "Beschrijving"></p>
            <p><input type = "submit" value = "Voeg toe"></p>
          </form>

<?php
// Connectie met de database maken

include("connectDBplanten.php");

if (!empty($_POST['submit']))
    {

    include ("connectDBplanten.php");
    //query opstellen
    $Plantenrijk=$_POST['Beschrijving'];
    $query = "INSERT INTO plantenrijk
                    (Beschrijving)
                    VALUES
                    ('$Plantenrijk')"
;
    //query runnen
    $result=mysqli_query($conn, $query) or die(mysqli_error($conn));
    }

?>

</body>
</html>


Iets toevoegen lukt nog steeds niet. Wat doe ik toch fout??

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
 
- Ariën -
Beheerder

- Ariën -

02/04/2021 19:45:38
Quote Anchor link
Allereerst heb je geen link naar een plaatje, maar een reeks websites waar het plaatje op staat.
Zo werkt de img-tag niet. ;-)
Zie hier de opmaakcodes.

Over je probleem:
Wat lukt er dan niet aan?
Wat gebeurt er wel? Zie je errors?
Wat zie je als je $query echo'ed?
Wat zie je als je $_POST door print_r haalt?
Gewijzigd op 02/04/2021 19:48:03 door - Ariën -
 
Adoptive Solution

Adoptive Solution

02/04/2021 20:07:42
Quote Anchor link
Er wordt twee maal een include van connectDBplanten.php gedaan.
Regel 16 en 20.
1 maal is genoeg.

In connectDBplanten.php heb je alleen regels 8 - 18 nodig.
Het is geen webpagina.
 
Ed Jeurissen

Ed Jeurissen

02/04/2021 20:22:57
Quote Anchor link
https://ibb.co/jzRtCSJ
https://ibb.co/HPnDrKH
https://ibb.co/1n2ncKk
https://ibb.co/t3V0NXN

Zo beter??

als ik de link kopieer doet ie het!

Met de echo's:
https://ibb.co/k3rrGXv

Hij geeft dus niks terug. Gebeurt er dan ook niks in de database??
 
- Ariën -
Beheerder

- Ariën -

02/04/2021 20:27:54
Quote Anchor link
De URL's in je IMG-tags zijn gewoon websites waar het plaatje op staat. Rechtsklik daar op het plaatje, en je vindt de exacte link wel, maar URL-tags mogen ook, hoewel we de code liever als tekst in het forum zien.

Maar ik heb je net een aantal vragen gesteld, heb je daar al naar gekeken?
Het is gewoon een kwestie van debuggen.
Gewijzigd op 02/04/2021 20:28:37 door - Ariën -
 
Adoptive Solution

Adoptive Solution

02/04/2021 20:34:42
Quote Anchor link
En als je nog een name aan submit toevoegt, werkt het.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<p><input type = "submit" name="submit" value = "Voeg toe"></p>
 
Ed Jeurissen

Ed Jeurissen

02/04/2021 20:57:23
Quote Anchor link
Gelukt!!
 
- Ariën -
Beheerder

- Ariën -

02/04/2021 21:05:12
Quote Anchor link
Persoonlijk vind ik het netter om dit te doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
    // hier wordt alles uitgevoerd nadat je formulier verstuurd is.
}
?>


Dan hoef je niet steeds te controleren op een bepaald submit-veld.
Gewijzigd op 02/04/2021 21:05:44 door - Ariën -
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.