DB hulp
ik heb een vraagje, hoe kan ik een waarde uit mijn DB halen
en die dan in een variable steken?
ik heb een registration/login systeem er op,
maar ik zou al mijn waarden dat elke user heeft graag in bv $_session['user_id'] hebben, dit is mijn code van mijn login script
met dit kan ik aan mijn $_session['username'] maar ik zou graag ook andere waarden er willen uithalen zoals $_session[user_id] en ik kon niet op de juiste zoek woorden komen om te googelen
Code (php)
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
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
<link href="login.css" rel="stylesheet" type="text/css" />
<div id="Login">
<?php
// sesion start
@session_start();
//include
include ('mysql.php');
if (@$_SESSION['loggedin'] == true) {
echo 'your already logged in';
} else {
//form post check
if (isset ($_POST['submit'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = sha1 ($_POST['password']);
// als het leeg is
if (!empty ($username))
{
$sql= mysql_query ("
SELECT
*
FROM
users
WHERE
username='$username'
AND
user_password='$password'
LIMIT 1
");
// als er zijn
if (mysql_num_rows ($sql) > 0) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
echo '<div id="login">your now logged in!</div>';
// header("refresh: 1; index.php?site=home");
} else {
echo 'Your username and/or password is incorect!';
}
}
else {
echo 'Enter all fields!';
}
} else
{
// geen form post ==> login form
echo '<center>
<form action="index.php?site=login" method="post">
<table width="100px" border="0" cellspacing="4" cellpadding="0">
<tr>
<td>Username:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Login"/>
</from>
<center>';
}
}
?>
</div>
<div id="Login">
<?php
// sesion start
@session_start();
//include
include ('mysql.php');
if (@$_SESSION['loggedin'] == true) {
echo 'your already logged in';
} else {
//form post check
if (isset ($_POST['submit'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = sha1 ($_POST['password']);
// als het leeg is
if (!empty ($username))
{
$sql= mysql_query ("
SELECT
*
FROM
users
WHERE
username='$username'
AND
user_password='$password'
LIMIT 1
");
// als er zijn
if (mysql_num_rows ($sql) > 0) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
echo '<div id="login">your now logged in!</div>';
// header("refresh: 1; index.php?site=home");
} else {
echo 'Your username and/or password is incorect!';
}
}
else {
echo 'Enter all fields!';
}
} else
{
// geen form post ==> login form
echo '<center>
<form action="index.php?site=login" method="post">
<table width="100px" border="0" cellspacing="4" cellpadding="0">
<tr>
<td>Username:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
</table>
<input type="submit" name="submit" value="Login"/>
</from>
<center>';
}
}
?>
</div>
Gewijzigd op 01/01/1970 01:00:00 door Kiwi productions
Ik zou zo weinig mogelijk in de sessie zetten. Hooguit logged_in en een user_id.
ok, maar kan ik het dan in bv $userid, zetten?
Na regel 33:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// als er zijn
if (mysql_num_rows ($sql) > 0) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
while($rij = mysql_fetch_assoc($sql))
{
// welke variabele? // welke kolom in de database?
$userid = $rij['userid'];
$username = $rij['gebruikersnaam'];
$userplace = $rij['woonplaats'];
}
echo '<div id="login">your now logged in!</div>';
// header("refresh: 1; index.php?site=home");
?>
// als er zijn
if (mysql_num_rows ($sql) > 0) {
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $username;
while($rij = mysql_fetch_assoc($sql))
{
// welke variabele? // welke kolom in de database?
$userid = $rij['userid'];
$username = $rij['gebruikersnaam'];
$userplace = $rij['woonplaats'];
}
echo '<div id="login">your now logged in!</div>';
// header("refresh: 1; index.php?site=home");
?>
Quote:
Ik zou zo weinig mogelijk in de sessie zetten. Hooguit logged_in en een user_id.
Jan heeft helemaal gelijk, Je zou ook nog het ip adres van de gebruiker in een sessie kunnen zetten.
Wat betreft de info fetchen, Net zoals jan zei, hooguit een user_id in een sessie. Aan de hand van die user id kan je de gegevens van die gebruiker ophalen.
Code (php)
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
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
<?PHP
# Errors
error_reporting(E_ALL);
# Query
$Query =
"
SELECT
blaat1,
blaat2,
blaat3
FROM
users
WHERE
id = '".intval($_SESSION['user_id'])."'
";
# Resultaat
$Result = mysql_query($Query);
# Kijken of query is gelukt
if(!$Result)
{
# Foutje in de query
echo 'Er is een fout opgetreden met het selecteren van de data: '.mysql_error();
}
else
{
# Rijen fetchen
$Row = mysql_fetch_assoc($Result);
# Nu kan je bijvoorbeeld blaat1 op de volgende manier opvragen:
echo 'Blaat1 heeft de volgende waarde: '.$Row['blaat1'];
}
?>
# Errors
error_reporting(E_ALL);
# Query
$Query =
"
SELECT
blaat1,
blaat2,
blaat3
FROM
users
WHERE
id = '".intval($_SESSION['user_id'])."'
";
# Resultaat
$Result = mysql_query($Query);
# Kijken of query is gelukt
if(!$Result)
{
# Foutje in de query
echo 'Er is een fout opgetreden met het selecteren van de data: '.mysql_error();
}
else
{
# Rijen fetchen
$Row = mysql_fetch_assoc($Result);
# Nu kan je bijvoorbeeld blaat1 op de volgende manier opvragen:
echo 'Blaat1 heeft de volgende waarde: '.$Row['blaat1'];
}
?>
Zoals je ziet gebruik ik bij de query een WHERE, als het goed is heb je bij het inloggen een sessie aangemaakt met het id van die gebruiker. Aan de hand van dat id kunnen we nu de juiste informatie selecteren.
Hopelijk heb je wat aan het voorbeeldje. Gaat een beetje om het id.
Gewijzigd op 01/01/1970 01:00:00 door Mr.Ark
Code (php)
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
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
<?php
@session_start();
include ('mysql.php');
if (@$_SESSION['loggedin'] == true) {
# Query
$Query =
"
SELECT
user_id,
username,
woonplaats
FROM
users
WHERE
username = '".intval($_SESSION['username'])."'
";
# Resultaat
$Result = mysql_query($Query);
# Kijken of query is gelukt
if(!$Result)
{
# Foutje in de query
echo 'Er is een fout opgetreden met het selecteren van de data: '.mysql_error();
}
else
{
# Rijen fetchen
$Row = mysql_fetch_assoc($Result);
}
echo ' <FORM action="ucp.php" method="get">
Username: <input type="text" name="User" value="Miiaauw"><br />
<input type="submit" value="Verstuur" name="verstuurd">
<input type="Reset" name="Reset"> </form>';
echo $Row['user_id'];
} else {
echo 'Your not logged in';
}
?>
@session_start();
include ('mysql.php');
if (@$_SESSION['loggedin'] == true) {
# Query
$Query =
"
SELECT
user_id,
username,
woonplaats
FROM
users
WHERE
username = '".intval($_SESSION['username'])."'
";
# Resultaat
$Result = mysql_query($Query);
# Kijken of query is gelukt
if(!$Result)
{
# Foutje in de query
echo 'Er is een fout opgetreden met het selecteren van de data: '.mysql_error();
}
else
{
# Rijen fetchen
$Row = mysql_fetch_assoc($Result);
}
echo ' <FORM action="ucp.php" method="get">
Username: <input type="text" name="User" value="Miiaauw"><br />
<input type="submit" value="Verstuur" name="verstuurd">
<input type="Reset" name="Reset"> </form>';
echo $Row['user_id'];
} else {
echo 'Your not logged in';
}
?>
maar het raare is, ik krijg geen error of antwoord
Gewijzigd op 01/01/1970 01:00:00 door kiwi productions
En waar is je error_reporting(E_ALL);?
En zet net onder je $row = mysql_fetch_assoc(...); eens dit:
print_r($row);
Tevens vind ik dat je hetzelf moeilijk maakt met hoofdletters in de variabele-namen. Dus $row of $Row... ze zijn verschillend.
-> intval($_SESSION['username'])
intval gebruik je voor cijfers. Maak van intval eens mysql_real_escape_string.
Net zoals Eddy zegt, haal de @ weg dat onderdrukt fouten.
maar ik weet niet wat ik hier doe maar het werkt niet
Code (php)
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
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
session_start();
include ("mysql.php");
if (@$_SESSION['loggedin'] == true)
{
echo 'hello ' ,$_SESSION['username'], '<br /><a href="index.php?site=logout">Logout</a>';
//check admin
$result = mysql_query("
SELECT *
FROM users
WHERE username = '".mysql_real_escape_string($_SESSION['username'])."'
");
while($row = mysql_fetch_array($result))
{
if ($row['rang'] = '5')
{
echo '<br /> user panel';
}
else
{
echo '<br /> admin panel';
}
}
}
else {
echo '<div align="left"; border="0";>Welcome Guest <br />
<a href="index.php?site=login">Login</a> ~ <a href="index.php?site=register">Register</a></div>';
}
?>
session_start();
include ("mysql.php");
if (@$_SESSION['loggedin'] == true)
{
echo 'hello ' ,$_SESSION['username'], '<br /><a href="index.php?site=logout">Logout</a>';
//check admin
$result = mysql_query("
SELECT *
FROM users
WHERE username = '".mysql_real_escape_string($_SESSION['username'])."'
");
while($row = mysql_fetch_array($result))
{
if ($row['rang'] = '5')
{
echo '<br /> user panel';
}
else
{
echo '<br /> admin panel';
}
}
}
else {
echo '<div align="left"; border="0";>Welcome Guest <br />
<a href="index.php?site=login">Login</a> ~ <a href="index.php?site=register">Register</a></div>';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door kiwi productions
Wat zie je op je scherm?
Waar is de error_reporting()??? Die missen we nog stééds!
Geef gewoon even wat echo's halverwege om aan te geven waar het script is.
Geef even een print_r() van $row, tussen lijn 14 en 15.
En stel je probleem even goed voor....'het werkt niet' zegt ons ook niets.
moest
zijn
maar ik heb terwijl ook een vraag:
hoe kan ik een link
laten uitvoeren
Gewijzigd op 01/01/1970 01:00:00 door kiwi productions
Kun je je vraag wat beter formuleren ?
Lees de tutorials eens door op phptuts.nl
SanThe schreef op 27.09.2009 14:38:
Lees de tutorials eens door op phptuts.nl
ik heb naar die site geweest, maar ik vind daar niet direct wat ik nodig heb,
en elk woordje na te lezen wat daar gezegd word/werd is tijdverlies
Je probleem niet goed formuleren en gewoon maar herhalen is ook tijdverlies.
Ga zelf eens denken.
Wat doet een link? Wat kán een link doen?
Hoe zie ik met PHP of een opgevraagd adres iets wil doen (tip: $_GET)
En wat moet ik daarna met die query doen?
Let wel... het ID is altijd uniek (als goed is!!!!)... dus die LIMIT is niet nodig.
Controleer wel goed of alles klopt, want met dit soort acties kan je redelijk plat gaan (iemand die automatisch verwijder.php?id=1 tm verwijder.php?id=9999 opvraagt oid).
Eddy Erkelens schreef op 27.09.2009 15:24:
Controleer wel goed of alles klopt, want met dit soort acties kan je redelijk plat gaan.
En denk aan sql-injection.
...link....?id = 1 or 1 = 1
kiwi schreef op 27.08.2009 15:13:
ik ben nog redelijk starter in PHP, maar ik weet wel hoe ik dingen uit en in mijn database kan steken
kiwi schreef op 26.09.2009 00:54:
hey, ik heb een vraagje, hoe kan ik een waarde uit mijn DB halen en die dan in een variable steken?
LOL.....
Gewijzigd op 01/01/1970 01:00:00 door The Ultimate
Bart schreef op 27.09.2009 16:16:
LOL.....
kiwi schreef op 27.08.2009 15:13:
ik ben nog redelijk starter in PHP, maar ik weet wel hoe ik dingen uit en in mijn database kan steken
kiwi schreef op 26.09.2009 00:54:
hey, ik heb een vraagje, hoe kan ik een waarde uit mijn DB halen en die dan in een variable steken?
LOL.....
uiteindelijk gebleken dat ik alleen er kon insteken XD
edit: kdenk dak da eruithalen onder de knie heb
Gewijzigd op 01/01/1970 01:00:00 door kiwi productions