3 Vraagjes
1. is er een mogelijkehid om rekingnummers te checken ?
2. Ik heb deze code van iemand gekregen voor een admin functie maar hier zijn enkel de eerst 2 admin , ik zou eigenlijk hier een aanpassing moeten doen dat ik kan zeggen jij , jij en jij admin
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
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
<?php
function controle($naam, $wachtwoord, $admin)
{
if($admin == false)
{
$sql="SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";
}
Else
{
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "KLANT_ID");
if ($wachtwoord != $password)
{
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
?>
function controle($naam, $wachtwoord, $admin)
{
if($admin == false)
{
$sql="SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";
}
Else
{
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0)
{
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "KLANT_ID");
if ($wachtwoord != $password)
{
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
?>
Deze code heb ik van een vriend gekregen , ik zie nergens waar hij de $admin op true zet en hij pakt enkel de eerste ID in de DB als admin maar ik moet er meerdere hebben maar hoe ik er moet aan beginnen is mij een raadsel .
3. Met diezelfde admin functie zou ik in het menu moeten hebben dat je de link naar admin enkel kan zien als $admin = true; . heb wat al geprobeerd en zover kom ik uit op errors
Gewijzigd op 01/01/1970 01:00:00 door Nicolas Pierre
Hoe bedoel je SAn ?
2) admin is nu een constante, gebruikt hij ergens define om hem te definieren?
3) ik zie nergens mysql_real_escape_string();, sql injectie is nu mogelijk...
4) de wachtwoorden staan als plain/text opgeslagen, dus iedereen die je database hacked kan zo inloggen, gebruik het liefst iets als md5() hiervoor.
5) in de eerste sql staat een variable ($naam), deze moet je buiten de haakjes halen en aan elkaar 'lijmen' met een . :
Over je eerste vraag: wat wil je met die rekeningnummers? wil je dat iemand niet aobiwwihje242 kan invullen, of wil je kijken of hij bestaat? dit laatste lijkt me vrij lastig, als je betalingen wilt doen kan je beter iets als iDeal of Paypal op je site zetten. Ook is het niet heel veilig om rekeningnummers enzo op te slaan in een database.
Om meerdere admins te krijgen, zul je moeten weten waar die admin vandaan komt, en waar hij gedefinieerd is, hetzelfde geld voor je menu: als admin een constante is, kan je hem niet aanroepen met $admin. Ook moet je voor een vergelijking if($admin==true) hebben.
Ik zou dit eerst even verbeteren, en dan kunnen we je verder helpen (als je natuurlijk weet waar admin vandaan komt ;) )
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
En die query haalt iedereen op ongesorteerd en daar pak je het eerste resultaat van. Dat kan dus iedereen zijn.
Waarom doe je dat bij puntje 5 ?
En jah rekeningnummersnakijken dat ze teminste niet kunnen in duwen bv : phphulp.nl bij rekening nummer
Admin moet toch nergens gedefineerd worden(of ben ik mis ?) , ik maak toch een functie aan waar hij de constante gaat aanmaken en daar een waarde gaat aan geven bij de sessie van de persoon die inlogt ?
En de injectie : ben eerste jaars dus ben nog leek
Hazo san ma hij gaat toch ID 0 of 1 nemen als ik me niet vergis ?
Edit
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
73
74
75
76
77
78
79
80
81
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
<?php
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";
} else { // admin nodig? Haal eerste record op
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "KLANT_ID");
if ($wachtwoord != $password) {
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = md5($_POST['wachtwoord']);
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "Naam: ";
echo "<input type=\"text\" name=\"username\">";
echo "<br>";
echo "Wachtwoord: ";
echo "<input type=\"password\" name=\"wachtwoord\">";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
function controle($naam, $wachtwoord, $admin) {
if ($admin == false) {
$sql = "SELECT KLANT_ID, Username, Password FROM Klant WHERE Username='$naam'";
} else { // admin nodig? Haal eerste record op
$sql = "SELECT KLANT_ID, Username, Password FROM Klant LIMIT 0,1";
}
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
$password = mysql_result($result, 0, "Password");
$klantid = mysql_result($result, 0, "KLANT_ID");
if ($wachtwoord != $password) {
return false;
} else {
return $klantid;
}
} else {
return false;
}
}
// Check naam en wachtwoord
if (isset($_POST['verzonden'])) {
$username = $_POST['username'];
$wachtwoord = md5($_POST['wachtwoord']);
$klantid = controle($username, $wachtwoord, $admin);
if ($klantid != false) {
// Correct
$_SESSION['username'] = $username;
$_SESSION['wachtwoord'] = $wachtwoord;
$_SESSION['klantid'] = $klantid;
}
}
if (controle($_SESSION['username'], $_SESSION['wachtwoord'], $admin) == false) {
echo "<form method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?";
reset($_GET); // Zet de array pointer op 0, begin bij het begin
// Stuur meegestuurd variabelen opnieuw mee.
while($getvar = each($_GET)) {
$varnaam = $getvar['key'];
$varinhoud = $getvar['value'];
echo "$varnaam=$varinhoud&";
}
echo "\">\n";
echo "Naam: ";
echo "<input type=\"text\" name=\"username\">";
echo "<br>";
echo "Wachtwoord: ";
echo "<input type=\"password\" name=\"wachtwoord\">";
echo "<br>";
echo "<input type=\"submit\" value=\"verzenden\" name=\"verzonden\">";
echo "</form>";
echo "<p>Nog niet geregistreerd? <a href=\"aanmeldformulier.php\">[Registreer hier]</a><br>";
if ($admin == "true") {
echo "<p>--- Admin status is vereist!";
}
exit;
}
?>
Weet niet of hier meer mee bent maar dit heb ik al als een authenticatie script , waar hij de login gaat checken + de admin dan
Gewijzigd op 01/01/1970 01:00:00 door Nicolas Pierre
Zet dit bovenin je script.
Ik zou eventueel aanraden om op userid te zoeken en niet op username. Deze kun je in je query escapen door (int) voor je variable te zetten
SanThe : is gemaakt met Eclipse dus fouten zitten er niet in
Nicolas schreef op 28.11.2009 18:55:
SanThe : is gemaakt met Eclipse dus fouten zitten er niet in
Leuke opmerking.
Moet dan wel een goddelijk iets zijn dat Eclipse.