Je doet dit waarschijnlijk via phpMyAdmin? Die heeft de beperking van HTTP file uploads, enkele MB's dus. Wat je kunt doen:quote:Op woensdag 7 september 2005 22:02 schreef wonderer het volgende:
Ik wil graag backupbestanden van 200000 records terugzetten... hoe kan ik dat het beste doen? Uploaden via SQL gaat niet...
1 2 3 | <?php include "header.php?pagina=homepage"; ?> |
Die bestaan al, maar het zou wel eens leuk zijn om een archive te zien die zich ook aan de standaarden houdtquote:Op donderdag 8 september 2005 16:31 schreef Chandler het volgende:
offtopic (beetje) misschien is het eens leuk om een PHP regex archive op te zetten?
1 2 3 4 5 6 7 8 9 10 | <?php mysql_connect("localhost", "root", ""); mysql_select_db("hack"); $query = mysql_query('SELECT bla FROM users ORDER BY bla '.$_GET['ORDER']); while($row = mysql_fetch_array($query)) { echo $row[bla]; } ?> |
Nee, daarmee is aangetoont dat je browser aan url encoding doetquote:Op vrijdag 9 september 2005 11:05 schreef MaxPowered het volgende:
Hoi,
Ik last laatst een artikel over SQL injection. Dus ik ff mijn site daarop gecheckt.
Een voorbeeld van SQL Injection uit het artikel:
[ code verwijderd ]
Als men daarna http://localhost/hack.php?ORDER=desc; DROP TABLE users zou uitvoeren, zou de tabel users verwijderd worden.
Mijns inziens is dit bullshit. Als ik het in de browser plak, krijg ik het volgende als ik op enter druk:
http://localhost/hack.php?ORDER=desc;%20DROP%20TABLE%20users
Is hiermee aangetoond dat SQL-injection niet werkt?
Alvast bedankt voor de tips,
m@x
1 2 | ad_id id_user |
1 2 | user_id name |
1 2 3 | rate_id user rating |
1 2 3 4 5 6 7 | <?php SELECT COUNT(ad.ad_id) AS number, user.name, AVG(SUM(rate.rating)) FROM ad INNER JOIN user ON (id_user = user_id) RIGHT JOIN rate ON (id_user = user) WHERE ad.id_user=1 ?> |
1 2 3 4 5 6 | SELECT user.name, COUNT(ad.ad_id) AS number, AVG(SUM(rate.rating)) FROM user INNER JOIN ad ON ad.id_user = user.user_id LEFT JOIN rate ON rate.user = user.user_id WHERE user.user_id = 1 GROUP BY user.name |
Dat had ik inderdaad ook al geprobeerd.quote:Op vrijdag 9 september 2005 22:02 schreef SuperRembo het volgende:
Er moet nog een GROUP BY user.name bij en volgens mij moet het een LEFT JOIN zijn in plaats van RIGHT JOIN.
[ code verwijderd ]
1 2 3 4 5 6 | SELECT user.name, COUNT(ad.ad_id) AS number, AVG(rate.rating) AS average FROM user INNER JOIN ad ON ad.id_user = user.user_id LEFT JOIN rate ON rate.user = user.user_id WHERE user.user_id =".$_GET['id']." GROUP BY user.name" |
Dat maakt het wel minder bug gevoelig. Een luie programmeur is een slechte programmeur.quote:Op vrijdag 9 september 2005 22:50 schreef SuperRembo het volgende:
Ja da's handig zeg. Nu hoef je niet meer soms "table." voor een veldnaam te zetten, nee je zet er altijd "table_" voor
Ik snap deze opmerking nietquote:Op vrijdag 9 september 2005 22:50 schreef SuperRembo het volgende:
Ja da's handig zeg. Nu hoef je niet meer soms "table." voor een veldnaam te zetten, nee je zet er altijd "table_" voor
Dat lijkt me sowieso een vereistequote:Op vrijdag 9 september 2005 23:02 schreef Swetsenegger het volgende:
Ik gebruik nergens ambigue fields zoals je ziet.
En waarom niet zoals roonaan zegt... tja geen idee. Ik vind naamgeving irritant, zou alles het liefst een nummer geven
Overigens werkt de query wel, maar je moet natuurlijk in je life table wel dezelfde veldnamen gebruiken als in je test tabel
Roonaan stelt voor om voor elk veld in de tabel "users" de string "user_" te plakken. Dan zijn de veldnamen uniek, en hoek je (meestal) geen tabelnamen te vermelden voor de veldnamen in je query.quote:Op vrijdag 9 september 2005 23:01 schreef JeRa het volgende:
[..]
Ik snap deze opmerking nietwat zeg je nu eigenlijk?
1 | SELECT foo.name, bar.name FROM foo INNER JOIN bar ON bar.id = foo.id |
1 | SELECT foo_name, bar_name FROM foo INNER JOIN bar ON bar_id = foo_id |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |