PHP SESSION hulp nodig!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan deman

jan deman

15/11/2019 01:07:18
Quote Anchor link
hallo allemaal,

ik ben bezig met een script en ik loop ergens tegen aan, het gaat als volgt:

ik moet er voor zorgen dat als de klant pagina 1 heeft ingevuld de data verstuurt word naar het database vervolgends, komt hij aan bij pagina 2 en daar moet zijn speciaal gegenereerde wachtwoord (die al in zijn database row staat) tevoorschijn kom. ik wil dit doen door middel van zijn userID die hij heeft meegekregen van pagina 1.

ik wil dus dat iedereen met een userid zijn password row te zien krijgt, (een ander script heeft zijn wachtwoord al gegenereerd en in zijn row geplaats dus dit heb ik al voor elkaar gekregen) ik er nog niet aan begonnen heb alleen een idee hoe ik het wil aanpakken maar ik weet simpel weg niet waar ik moet kijken, als ik zijn row probeer op te vragen via zijn userID lukt het simpel weg niet dus heb alles weer verwijderd en ben weer een aantal keer uit scratch begonnen maar ik kom voor mijn gevoel geen stap verder hopelijk kan iemand mij vertellen hoe ik zou moeten beginnen. ben nieuwe met session dus graag ook code en uitleg hoe ik mijn userID in me database krijg in een session het tergelijkertijd door passeer aan de volgende pagina en doormiddel van userID de klant zijn password kan aanvragen.


ik hoop dat het niet al te warrig is.

groetjes,

Jan
 
PHP hulp

PHP hulp

29/11/2024 05:29:06
 
- Ariën  -
Beheerder

- Ariën -

15/11/2019 01:39:07
Quote Anchor link
Begrijp ik goed dat je een password ongehashed opslaat in rauw formaat?
In dat geval ben je al de verkeerde weg ingeslagen.
 
Bart V B

Bart V B

15/11/2019 02:09:01
Quote Anchor link
Mijn tip, begin met kleinere stapjes, eerst weten hoe sessions werken.
Als dat te behappen is, dan pas met database gaan werken.

Hier een stukje code met uitleg erin hoe het er ongeveer uit moet zien.
Let op! niet live gebruiken want het is zo lek als een mandje, ik heb het sec getikt om het een beetje begrijpelijk te maken.

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
<?php
//we starten een session
session_start();

// voor het gemak
$dummypassord = 'Hello World!';

// database connectie
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


mysqli_query($con,"INSERT INTO users (username, password , email)
VALUES ('"
.$_POST['username']."', '".$dummypassord."', '".$_POST['email']."')");

// auto-generated id, nu de funpart
$newUser = mysqli_insert_id($con);
//maken een session aan
$_SESSION['userid'] = $newUser;

// database sluiten
mysqli_close($con);
//automatisch naar volgende pagina
header('Location: wachtwoordpagina.php');
// einde oefening.
exit();
?>


wachtwoordpagina.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
<?php
// ook hier starten we een session
session_start();
// connectie maken
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


// och laten we een simpelere benadering geven, het kan ook zo:
$sql="SELECT username, password FROM users WHERE id = ''".$_SESSION['userid']."'";
$result = mysqli_query($con,$sql);

$row = mysqli_fetch_assoc($result);
echo $row['username'].' met wachtwoord: '.$row['password'];
?>
Gewijzigd op 15/11/2019 02:10:28 door Bart V B
 
Jan deman

jan deman

16/11/2019 22:18:23
Quote Anchor link
Bart V B op 15/11/2019 02:09:01:
Mijn tip, begin met kleinere stapjes, eerst weten hoe sessions werken.
Als dat te behappen is, dan pas met database gaan werken.

Hier een stukje code met uitleg erin hoe het er ongeveer uit moet zien.
Let op! niet live gebruiken want het is zo lek als een mandje, ik heb het sec getikt om het een beetje begrijpelijk te maken.

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
<?php
//we starten een session
session_start();

// voor het gemak
$dummypassord = 'Hello World!';

// database connectie
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


mysqli_query($con,"INSERT INTO users (username, password , email)
VALUES ('"
.$_POST['username']."', '".$dummypassord."', '".$_POST['email']."')");

// auto-generated id, nu de funpart
$newUser = mysqli_insert_id($con);
//maken een session aan
$_SESSION['userid'] = $newUser;

// database sluiten
mysqli_close($con);
//automatisch naar volgende pagina
header('Location: wachtwoordpagina.php');
// einde oefening.
exit();
?>


wachtwoordpagina.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
<?php
// ook hier starten we een session
session_start();
// connectie maken
$con=mysqli_connect("localhost","my_user","my_password","my_db");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


// och laten we een simpelere benadering geven, het kan ook zo:
$sql="SELECT username, password FROM users WHERE id = ''".$_SESSION['userid']."'";
$result = mysqli_query($con,$sql);

$row = mysqli_fetch_assoc($result);
echo $row['username'].' met wachtwoord: '.$row['password'];
?>






oke ik heb het getest maar ik zie denk ik iets over het hoofd aangezien niks in mijn database komt maar ik krijg geen foutmelding dus het ligt niet aan de connectie van me database want ik word gewoon door gestuurt naar de volgende pagina hier is mijn html code en mijn php hopelijk kun jij zien wat er fout gaat:

<html>
<head>
<link rel="stylesheet" type="text/css"href="maincss/indexstyle.css">
<head>


<body>

<div class="container_form">
<form action="test.php" method="POST">
<div class="inputstyle_div">
naam<input type="text" name="naam">
email<input type="password" name="email">
<input type="submit" value="inloggen" >
</div>



</form>
</div>

</body>


















</html>



dit is het php script:

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
<?php
//we starten een session
session_start();

// voor het gemak
$code1 = 'een ogenblik geduld';

// database connectie
$con=mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


mysqli_query($con,"INSERT INTO users (naam, email)
VALUES ('"
.$_POST['naam']."', '".$code1."', '".$_POST['email']."')");

// auto-generated id, nu de funpart
$newUser = mysqli_insert_id($con);
//maken een session aan
$_SESSION['userid'] = $newUser;

// database sluiten
mysqli_close($con);
//automatisch naar volgende pagina
header('Location: r2_page.html');
// einde oefening.
exit();

?>
 
Thomas van den Heuvel

Thomas van den Heuvel

16/11/2019 22:22:32
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO users (naam, email)

twee kolommen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
VALUES ('".$_POST['naam']."', '".$code1."', '".$_POST['email']."')

drie waarden

Dit levert je dus naar alle waarschijnlijkheid een vette (My)SQL-error op.

Het feit dat er niets in je database verschijnt is natuurlijk al een sterke indicatie dat er iets misgaat met de query.

NB: en als er quotes in $_POST['naam'] of $_POST['email'] zitten is je query ook om zeep. Maak dit soort karakters onschadelijk met de mysqli_real_escape_string() functie.
Gewijzigd op 16/11/2019 22:23:57 door Thomas van den Heuvel
 
Jan deman

jan deman

16/11/2019 23:02:57
Quote Anchor link
Thomas van den Heuvel op 16/11/2019 22:22:32:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO users (naam, email)

twee kolommen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
VALUES ('".$_POST['naam']."', '".$code1."', '".$_POST['email']."')

drie waarden

Dit levert je dus naar alle waarschijnlijkheid een vette (My)SQL-error op.

Het feit dat er niets in je database verschijnt is natuurlijk al een sterke indicatie dat er iets misgaat met de query.

NB: en als er quotes in $_POST['naam'] of $_POST['email'] zitten is je query ook om zeep. Maak dit soort karakters onschadelijk met de mysqli_real_escape_string() functie.


ik heb de value $code1 erbij gezet nu krijg ik alles in mijn database te zien dus dankjewel voor dat maar nu krijg ik dus het volgende probleem met me script op pagina 2 die ik gekregen heb van bart (van vorige reactie)ik gebruik dit script op mijn volgende pagina maar ik krijg niet mijn $code1 inhoud te zien wat ook later weer aangepast moet kunnen worden en ook weer later ingezien kan worden door de klant met die userID in zijn session. het script staat bij bart zijn reactie gebruik precies hetzelfde maar ik krijg die echo niet te zien in mijn html page:


<!DOCTYPE html>

<html>
<head>
<link rel="stylesheet" type="text/css"href="maincss/r2pagestyle.css">
<head>


<body>

<div class="container_form">
<form action="opvraag.php" method="POST">
code1
<br><br>
<div class="inputstyle_div">
code1<br><input type="password" name="code1">
<input type="submit" value="inloggen" name="submit">
</div>



</form>
</div>

</body>


















</html>




php script:

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
<?php
// ook hier starten we een session
session_start();

// connectie maken
$con=mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }


// och laten we een simpelere benadering geven, het kan ook zo:
$sql="SELECT naam, email FROM users WHERE id = ''".$_SESSION['userid']."'";
$result = mysqli_query($con,$sql);

$row = mysqli_fetch_assoc($result);
echo $row['naam'].' code '.$row['code1'];

?>
 
Thomas van den Heuvel

Thomas van den Heuvel

16/11/2019 23:25:53
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
... SELECT naam, email FROM ...

Je vraagt enkel de naam- en de e-mailadres-kolom op, niet de code(1)-kolom of wat dan ook. Die komt dan dus ook niet in $row terug.

Het is overigens niet nodig om het hele vorige bericht te quoten, tenzij er specifieke passages in zitten die je er uit wil lichten.
 
Jan deman

jan deman

16/11/2019 23:42:13
Quote Anchor link
nu heb ik: SELECT naam, email, code1

maar tot nu toe krijg ik niks te zien dus hoe zou het er dan uit moeten zien?
 
- Ariën  -
Beheerder

- Ariën -

16/11/2019 23:53:25
Quote Anchor link
Die zou je gewoon moeten zien, als dit veld in je SELECT van je query staat.
Of dit veld moet leeg zijn?

We hebben trouwens ook [code] en [/code] tags voor je code.
Als je dit kan toepassen op je voorgaande berichten, graag ;-)
 
Jan deman

jan deman

17/11/2019 00:03:14
Quote Anchor link
nee in het veld staat standaard "een ogenblik geduld" maar ik zie geen echo verschijnen in me script. ik krijg alleen deze melding van xampp: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\r2_script\opvraag.php on line 17
code

dus moet ik me parameter nou veranderen naar mysqli_result of verhelpt dat het probleem niet?
 
- Ariën  -
Beheerder

- Ariën -

17/11/2019 00:12:03
Quote Anchor link
Dan is je query niet goed, en loopt je query uit op een FALSE, die op zijn beurt wordt gegeven aan mysqli_fetch_assoc().


Sowieso hoor je ook te controleren of mysqli_query fout gaat, en in dat geval een mysqli_error($con); te tonen.
 
Jan deman

jan deman

17/11/2019 00:19:28
Quote Anchor link
dit is me query dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$sql="SELECT naam, email FROM users WHERE id = ''".$_SESSION['userid']."'";
$result = mysqli_query($con,$sql);

$row = mysqli_fetch_assoc($result);
echo $row['naam'].' code '.$row['code1'];


wat gaat er precies fout in de code? ben niet ervaren
 
- Ariën  -
Beheerder

- Ariën -

17/11/2019 00:26:01
Quote Anchor link
Een single-quote te veel na je =
En je mist ook (weer) code1 als veld in je SELECT.

Als je nou mysqli_error($con); gebruikt, dan zie je de foutmelding.
 
Jan deman

jan deman

17/11/2019 00:40:15
Quote Anchor link
iedereen super bedankt voor alle tijd en hulp!!!!!
alles werkt nu hoe ik het wel kan eindelijk weer verder met dingen die ik wel snap dus ik val jullie verder niet meer lastig (voorlopig) :P als jullie nog enige tips hebben met linkjes erbij om dit onderwerp in de toekomst beter te snappen zou ik dat erg op prijs stellen :) nogmaals bedankt !
 
Bart V B

Bart V B

17/11/2019 10:13:45
Quote Anchor link
Ja ik heb nog een tip. Je eureka moment dat hij werkt is mooi. :)
Maar je vergeet een hele belangrijke waar ik al een hint op heb gegeven en Thomas over verder gaat, het is nog lek.

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
<?php
//we starten een session
session_start();

// voor het gemak
$code1 = 'een ogenblik geduld';

// database connectie
$con=mysqli_connect("localhost","root","","test");
// Check connection
if (mysqli_connect_errno())
  {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }



$name = mysqli_real_escape_string($con, $_POST['naam']);
$code1 = mysqli_real_escape_string($con, code1);
$email = mysqli_real_escape_string($con, $_POST['email']);

$sql = mysqli_query($con,"INSERT INTO users (naam, ,code, email)
VALUES ('"
.$name."', '".$code1."', '".$email."')");
// voor debuggen
if (!mysqli_query($con,$sql)) {
  echo $sql.'<br>';
  die('Error: ' . mysqli_error($con));
}


// auto-generated id, nu de funpart
$newUser = mysqli_insert_id($con);
//maken een session aan
$_SESSION['userid'] = $newUser;

// database sluiten
mysqli_close($con);
//automatisch naar volgende pagina
header('Location: r2_page.html');
// einde oefening.
exit();

?>


Probeer altijd voor jezelf er een verhaal van te maken.
Dan word je puzzel een stuk makkelijker.
Als ik code schrijf dan begin ik altijd met comments schrijven. (// <-- deze dus)
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
<?php
// ik wil een session starten

// als er iets is gepost dan..


//controles uitvoeren

// verbinding maken met database

// waardes onschadelijk maken

// query uitvoeren


// als het lukt dan gaan we de session vullen

// alles goed?

//volgende pagina

?>

Als je dit zo een beetje aanhoud, dan is het veel makkelijker als het ergens misgaat dat je weet waar het probleem ongeveer zit. Immers als de query mislukt dan zal het in het blokje staan bij query uitvoeren enz.
Gewijzigd op 17/11/2019 10:16:21 door Bart V B
 



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.