dbh.inc.php:

<?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
<?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??
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:

<?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.
Hoi ik krijg de volgende foutmeldingen:

Signup: http://localhost:8080/signup.php?error=emptyfields&uid=ed1&[email protected]

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!





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?
Ik krijg geen foutmeldingen, maar krijg niks in de database toegevoegd.
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.
Hallo,

inloggen lukt nu wel maar de wachtwoorden zijn nog steeds zichtbaar. De code tot nog toe:

<!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:



<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


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 [php]mysqli_real_escape_string[/php] toe op je variabelen die je in je query gebruikt.

Over je wachtwoorden. Ik raad zelf aan om de wachtwoorden te hashen met [php]password_hash[/php], en bij een inlogcontrole met [php]password_verify[/php] 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?

<!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:



<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??


[size=xsmall]Toevoeging op 02/04/2021 17:29:53:[/size]

ps Hoe kun je eigenlijk plaatjes posten?
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.

Reageren