Fout in script
Ik heb dit stuk code geschreven om de vrienden te laten zien van de user maar het werkt op 1 of andere manier niet. Zien jullie de fout?
Quote:
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
$naam = mysql_real_escape_string(htmlspecialchars(htmlentities(strip_tags($_GET['naam']))));
$checker = mysql_query("SELECT * FROM `friends` WHERE personOneID = '".$naam."' ") or die(mysql_error());
$row2 = mysql_fetch_assoc($checker);
////////////////////////////////////////////////////
if($naam = $row2['personOneID']) {
$p1checker = mysql_query("SELECT * FROM `friends` WHERE personOneID = '".$naam."' AND status = 1 ") or die(mysql_error());
$row3 = mysql_fetch_array($p1checker); // de row om gegevens op te halen (De vrienden dus!!!)
echo $row3['personTwoID'];
////////
$checker2 = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' ") or die(mysql_error());
$row4 = mysql_fetch_assoc($checker2);
////////
$checker2 = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' ") or die(mysql_error());
$row4 = mysql_fetch_assoc($checker2);
} elseif ($naam = $row4['personTwoID']){
$p2checker = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' AND status = 1 ") or die(mysql_error());
$row5 = mysql_fetch_array($p2checker); // de row om gegevens op te halen (De vrienden dus!!!)
echo $row5['personOneID'];
}
?>
$naam = mysql_real_escape_string(htmlspecialchars(htmlentities(strip_tags($_GET['naam']))));
$checker = mysql_query("SELECT * FROM `friends` WHERE personOneID = '".$naam."' ") or die(mysql_error());
$row2 = mysql_fetch_assoc($checker);
////////////////////////////////////////////////////
if($naam = $row2['personOneID']) {
$p1checker = mysql_query("SELECT * FROM `friends` WHERE personOneID = '".$naam."' AND status = 1 ") or die(mysql_error());
$row3 = mysql_fetch_array($p1checker); // de row om gegevens op te halen (De vrienden dus!!!)
echo $row3['personTwoID'];
////////
$checker2 = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' ") or die(mysql_error());
$row4 = mysql_fetch_assoc($checker2);
////////
$checker2 = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' ") or die(mysql_error());
$row4 = mysql_fetch_assoc($checker2);
} elseif ($naam = $row4['personTwoID']){
$p2checker = mysql_query("SELECT * FROM `friends` WHERE personTwoID = '".$naam."' AND status = 1 ") or die(mysql_error());
$row5 = mysql_fetch_array($p2checker); // de row om gegevens op te halen (De vrienden dus!!!)
echo $row5['personOneID'];
}
?>
Ik zie niet helemaal waarom je al die queries nodig hebt. Los daarvan klopt je foutafhandeling van geen kanten, gebruik je * ipv specifieke kolommen in je queries en controleer je niet of er wel een rij wordt terug gegeven.
Waarom al die verschillende query's ?
Mag ik vragen hoe jij database eruit ziet ?
want dit gaat niet helemaal goed.
Waarom gebruik je bij je query's mysql_fetch_assoc en alleen bij de laatste mysql_fetch_array ?
je if/elseif voorwaarden klopt niet:
Moet worden:
Code (php)
Al deze checks zijn niet echt nodig....
Code (php)
1
2
3
2
3
<?PHP
$naam = mysql_real_escape_string(htmlspecialchars(htmlentities(strip_tags($_GET['naam']))));
?>
$naam = mysql_real_escape_string(htmlspecialchars(htmlentities(strip_tags($_GET['naam']))));
?>
Gewijzigd op 10/05/2012 22:22:35 door Marco PHPJunky
Maar ik heb nu een nieuw script gemaakt en het werkt.
Maar hun eigen naam komt er in te staan.
Hoe zorg ik er voor dat dat niet gebeurd?
Quote:
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
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
<?php
session_start();
include("config.php");
$naam = $_GET['naam'];
/////////////////////////////////////////////////////////////////////////////
$userID = mysql_query("SELECT userID FROM `friends` WHERE userID = '".$naam."' AND status = 1 ") or die(mysql_error()); ////// Checken van de user die ingevoerd is bestaat.
$userIDRow = mysql_fetch_assoc($userID);
/////////////////////////////////////////////////////////////////////////////
$friendID = mysql_query("SELECT friendID FROM `friends` WHERE friendID = '".$naam."' AND status = 1 ") or die(mysql_error());////// Checken van de user die ingevoerd is bestaat.
$friendIDRow = mysql_fetch_assoc($friendID);
/////////////////////////////////////////////////////////////////////////////
if($naam == $userIDRow['userID']){
$userIDgegevens = mysql_query("SELECT * FROM `friends` WHERE userID = '".$naam."' AND status = 1 ") or die(mysql_error());
$userIDgegevensRow = mysql_fetch_assoc($userIDgegevens);
echo $userIDgegevensRow['friendID'];
while($row = mysql_fetch_array($userIDgegevens)) {
echo $row['friendID'];
echo '<br />';
}
} elseif($naam == $friendIDRow['friendID']) {
$friendIDgegevens = mysql_query("SELECT * FROM `friends` WHERE friendID = '".$naam."' AND status = 1 ") or die(mysql_error());
$friendIDgegevensRow = mysql_fetch_assoc($friendIDgegevens);
echo $friendIDgegevensRow['userID'];
while($row = mysql_fetch_array($friendIDgegevens)) {
echo $row['userID'];
echo '<br />';
}
} else {
// als de user geen vrienden heeft dan echo't die ook niks uit
}
?>
session_start();
include("config.php");
$naam = $_GET['naam'];
/////////////////////////////////////////////////////////////////////////////
$userID = mysql_query("SELECT userID FROM `friends` WHERE userID = '".$naam."' AND status = 1 ") or die(mysql_error()); ////// Checken van de user die ingevoerd is bestaat.
$userIDRow = mysql_fetch_assoc($userID);
/////////////////////////////////////////////////////////////////////////////
$friendID = mysql_query("SELECT friendID FROM `friends` WHERE friendID = '".$naam."' AND status = 1 ") or die(mysql_error());////// Checken van de user die ingevoerd is bestaat.
$friendIDRow = mysql_fetch_assoc($friendID);
/////////////////////////////////////////////////////////////////////////////
if($naam == $userIDRow['userID']){
$userIDgegevens = mysql_query("SELECT * FROM `friends` WHERE userID = '".$naam."' AND status = 1 ") or die(mysql_error());
$userIDgegevensRow = mysql_fetch_assoc($userIDgegevens);
echo $userIDgegevensRow['friendID'];
while($row = mysql_fetch_array($userIDgegevens)) {
echo $row['friendID'];
echo '<br />';
}
} elseif($naam == $friendIDRow['friendID']) {
$friendIDgegevens = mysql_query("SELECT * FROM `friends` WHERE friendID = '".$naam."' AND status = 1 ") or die(mysql_error());
$friendIDgegevensRow = mysql_fetch_assoc($friendIDgegevens);
echo $friendIDgegevensRow['userID'];
while($row = mysql_fetch_array($friendIDgegevens)) {
echo $row['userID'];
echo '<br />';
}
} else {
// als de user geen vrienden heeft dan echo't die ook niks uit
}
?>
Waar is nou je SQL injection beveiliging?
Die vergeet ik echt niet.
Want je probeert nu te filteren op 2 rows in 1 tabel....
Als ik vanuit ga dat je deze goed hebt genormaliseerd zou dit dus eigenlijk al niet eens moeten kunnen. (of ik lees hem nu even snel verkeerd)
Want dan zou je dus een tabel hebben met de 'users' en daarnaast een tabel met de 'friends' van de users/gebruikers...
En ja natuurlijk komt het ID van de user voor in de friends tabel maar dan kan je het net zo goed in 1 query doen zoals:
Code (php)
1
SELECT [hier de velden] FROM friends WHERE userID = mysql_real_escape_string($naam) AND status = 1;
Dan zou je dus vanuit die query of in die query een 'JOIN'/'andere query' kunnen uitvoeren op de users tabel om daarmee de data van de vrienden op te vragen...
(wat dan ook jou voorkeur heeft/is)
Gewijzigd op 14/05/2012 22:27:42 door Marco PHPJunky
Quote:
Die voer ik heus wel in hoor.
Die vergeet ik echt niet.
Die vergeet ik echt niet.
Doe het nou meteen goed dan zit je daar ook niet mee.
Straks als je je project af heb hebt je zoveel regels codes dat je helemaal de draad kwijt bent. Je gaat ze dan echt niet allemaal af om zoiets erin te zetten. Dat zal veel meer tijd kosten dan er nu even simpel en snel mysql_real_escape_string omheen te zetten.
wat het doet. Ik heb dit script gemaakt en hij doet het goed. Maar
degene krijgt zich zelf in de echo.
En je hebt inderdaad gelijk. Ik zal voortaan gelijk
mysql_real_escape_string er in zetten.
Remco van Akker op 15/05/2012 07:36:34:
Ik heb dit script gemaakt en hij doet het goed. Maar
degene krijgt zich zelf in de echo.
degene krijgt zich zelf in de echo.
Dan werkt het script dus niet goed ;-)
Remco van Akker op 15/05/2012 07:36:34:
Als ik eerlijk moet zijn weet ik eigenlijk niet wat een JOIN is en
wat het doet.
wat het doet.
Misschien dan eens in verdiepen?!
Maar nog als snap ik niet waarom ik die JOINS moet gebruiken?