Dingesquote:Op woensdag 12 juli 2006 10:13 schreef Desdinova het volgende:
[edit] @ dinges met snelste mysql_resultaat[/edit]
Klinkt logisch! Ga er gelijk mee aan de slag.quote:$sql_styles = "SELECT * FROM css_selectedstyle WHERE `id` = '".$id."' LIMIT 0,1";
$result = mysql_query($sql_styles);
$row = mysql_fetch_object($result);
elke databasekolom van de gepakte rij is nu bereikbaar via $row->kolomnaam. Door de limit zou hij meteen moeten stoppen na de eerste vondst
Ik had het inderdaad over codeer-snelheid. Naja, en het feit dat ik geen lelijke omwegen wil maken om 1 waarde uit een database te vissen.quote:[edit2]
misschien dat mysql_fetch_array() ipv mysql_fetch_object() sneller is. dan benader je je kolommen met $row['kolomnaam'].
dat zou je eigenlijk ff moeten benchmarken. maar dit is verwaarloosbaar want je hebt t volgens mij op codeer-snelheid en niet over executiontime
Het werkt eigenlijk ernstig simpel.quote:Op woensdag 12 juli 2006 10:15 schreef Desdinova het volgende:
[..]
ja hoe werkt dat precies? is het gewoon een hidden field ofzoiets die je een random waarde geeft, alsmede een selectie afbeeldingen met dezelfde tekens maar dan wat onduidelijker?
1 2 3 4 5 | if (($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] >0) && ($_POST['prijs_nieuw'] >0)) { mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')'); $aangepast++; } ?> |
1 |
Van wat ik nu van jouw methode begrijp, gebruik je dus alleen de hash (en niet de SID) om een session te verifiëren? Lijkt me niet slim (makkelijk te misbruiken) en nogal overbodig.quote:Op woensdag 12 juli 2006 10:31 schreef mschol het volgende:
ben aan het kutten met sessies en het onthouden van een login doe ik nu als volgt:
bij login wordt:een hash aangemaakt (md5 van huidige tijd + IP adres) de hash + Session id worden samne met IP en timestamp in database opgeslagen er wordt een cookie gezet met daarin het hash nummer
is dit een correcte manier om sessies te gebruiken (veilig genoeg enzo?)
de SID is in mijn script me echte session id die door de server wordt gegenereerd en ik neem aan dat je die juist NIET in je cookie wilt hebben staan?quote:Op woensdag 12 juli 2006 12:13 schreef JeRa het volgende:
[..]
Van wat ik nu van jouw methode begrijp, gebruik je dus alleen de hash (en niet de SID) om een session te verifiëren? Lijkt me niet slim (makkelijk te misbruiken) en nogal overbodig.
Beter maak je een goede random SID aan en sla je dié op in een cookie. In de database sla je diezelfde SID op samen met andere dingen die je wilt verifiëren (zoals IP-adres, user agent, etc).
er staat nu name="km_nieuw[$i]"quote:Op woensdag 12 juli 2006 12:10 schreef JeRa het volgende:
@qu63
Je zult ook in het formulier moeten aangeven dat je meer regels (dus een array) wilt:
[ code verwijderd ]
Waarom zou je die niet in je cookie willen hebben staan? Dat doen werkelijk alle sites die met SIDs werken. Bovendien is die hash die je nu opslaat het equivalent van een session ID, dus sla je die alsnog op.quote:Op woensdag 12 juli 2006 12:18 schreef mschol het volgende:
[..]
de SID is in mijn script me echte session id die door de server wordt gegenereerd en ik neem aan dat je die juist NIET in je cookie wilt hebben staan?
Als ik jouw IP-adres weet dan kan ik een tijdsbestek gaan afscannen door heel veel hashes uit te proberen en zodoende jouw session te stelen. Érg gevoelig voor hijacking dus, wat je bij een SID niet hebt.quote:en hoe wil je een md5 hash vn IP + tijd gaan misbruiken (tijd is op seconde precies)
Doe eens een print_r($_POST) en kom erachter wat er nu eigenlijk naar PHP wordt gestuurdquote:Op woensdag 12 juli 2006 12:19 schreef qu63 het volgende:
[..]
er staat nu name="km_nieuw[$i]"
ik probeerde net al wat met foreach, maar dat ging ook niet helemaal
hmm ik ging er juist vanuit dat je je session id nooit moet opslaan in je cookie...quote:Op woensdag 12 juli 2006 12:30 schreef JeRa het volgende:
[..]
Waarom zou je die niet in je cookie willen hebben staan? Dat doen werkelijk alle sites die met SIDs werken. Bovendien is die hash die je nu opslaat het equivalent van een session ID, dus sla je die alsnog op.
[..]
Als ik jouw IP-adres weet dan kan ik een tijdsbestek gaan afscannen door heel veel hashes uit te proberen en zodoende jouw session te stelen. Érg gevoelig voor hijacking dus, wat je bij een SID niet hebt.
Wat heb je nou aan een random session ID als je er nog een random hash (nog een session ID) tegenaan gooit? Laat die hele hash achterwege en gebruik gewoon één session IDquote:Op woensdag 12 juli 2006 12:33 schreef mschol het volgende:
[..]
hmm ik ging er juist vanuit dat je je session id nooit moet opslaan in je cookie...
en dat je dus een eigen radom iets moet hebben om je session id op te halen...
maar die hash zou je opzich moeten kunnen blijven gebruikenm, mits je er maar genoeg unieke dingen in propt tohch (ik doe eens gek: username+wachtwoord +email er ook nog bij)
[tijd_nieuw] => 1 [km_nieuw] => 1 [prijs_nieuw] => 1quote:Op woensdag 12 juli 2006 12:30 schreef JeRa het volgende:
[..]
Doe eens een print_r($_POST) en kom erachter wat er nu eigenlijk naar PHP wordt gestuurddie $i kun je dus achterwege laten.
En dat was in een formulier met namen voor de velden als km_nieuw[], tijd_nieuw[], etc? Laat eens de HTML zienquote:Op woensdag 12 juli 2006 12:53 schreef qu63 het volgende:
[..]
[tijd_nieuw] => 1 [km_nieuw] => 1 [prijs_nieuw] => 1
en dat terwijl ik in totaal 5 nieuwe regels heb ingevuld.
quote:Op woensdag 12 juli 2006 12:59 schreef JeRa het volgende:
[..]
En dat was in een formulier met namen voor de velden als km_nieuw[], tijd_nieuw[], etc? Laat eens de HTML zien
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 82 83 84 85 86 87 | function form() { if ($_GET['order'] == 'km' ) { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY km, tijd'); } elseif ($_GET['order'] == 'tijd') { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY tijd, km'); } else { $result = mysql_query('SELECT tijd, km, prijs FROM qu63 ORDER BY km, tijd'); } <form method="get" action="update.php"> <input type="text" name="an" value="0" maxlength="2" size="1"><input type="submit" value="Submit"> </form> <form method="post" action="update.php"> <table> <tr><td><a href="update.php?order=tijd">Tijd (uren)</a></td><td><a href="update.php?order=km">Afstand (km)</a></td><td>Prijs</td></tr> php while ($row = mysql_fetch_assoc($result)) { echo '<tr><td>'.$row['tijd'].'</td>'; echo '<td>'.$row['km'].'</td>'; echo '<td><input type="text" name=prijs['.$row['tijd'].']['.$row['km'].'] value='.$row['prijs'].'>'; echo '<input type="hidden" name=oud['.$row['tijd'].']['.$row['km'].'] value='.$row['prijs'].'></td></tr>'; } for($i = 0; $i < $_GET['an']-1; $i++) { echo "<tr><td><input name=\"tijd_nieuw[$i]\"></td>"; echo "<td><input name=\"km_nieuw[$i]\"></td>"; echo "<td><input name=\"prijs_nieuw[$i]\"></td></tr>"; } <tr><td><input name="tijd_nieuw"></td> <td><input name="km_nieuw"></td> <td><input name="prijs_nieuw"></td></tr> </table> <input type="submit" value="Update"> </form> php } function update() { $aangepast = 0; echo print_r($_POST); nieuwe waarden? if (($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] >0) && ($_POST['prijs_nieuw'] >0)) { mysql_query('INSERT INTO qu63 (prijs, tijd, km) VALUES ('.$_POST['prijs_nieuw'].','.$_POST['tijd_nieuw'].','.$_POST['km_nieuw'].')'); $aangepast++; } //Bij het begin beginnen :) reset($_POST['oud']); //De array bevat tijd, afstand en prijs. //Dat is niet in 1 lus uit te lezen, dus doen we het met twee. while (list($tijd, $tmp) = each($_POST['oud'])) { while (list($km, $prijs) = each($tmp)) { //Als er een andere prijs staat dan zetten we die in de database if($_POST['prijs'][$tijd][$km] != $prijs) { mysql_query('UPDATE qu63 SET prijs = '.intval($_POST['prijs'][$tijd][$km]).' WHERE tijd = '.$tijd.' AND km = '.$km); $aangepast++; } } } $refresh = 3; echo '<meta http-equiv="refresh" content="'.$refresh.'; URL="'.$_SERVER['PHP_SELF'].'" />'; echo 'Update uitgevoerd, '.$aangepast.' waarden aangepast.<br />'; echo 'Refresh in '.$refresh.' seconden.'; } //Een eventuele addslashes ongedaan maken. Niet echt nuttig met alleen cijfers, maar wel zo duidelijk. if (get_magic_quotes_gpc()) { function stripslashes_deep(&$value, $key) { if(is_array($value)) { array_walk($value, 'stripslashes_deep'); } else { $value = stripslashes($value); } } array_walk($_GET, 'stripslashes_deep'); array_walk($_POST, 'stripslashes_deep'); array_walk($_COOKIE, 'stripslashes_deep'); } mysql_connect(DB_HOST, DB_USER, DB_PASS); mysql_select_db(DB_DATABASE); { if (count($_POST)) { update(); } else { form(); } ?> |
de whilie-loop werkt wel, die wordt gewoon geupdatequote:Op woensdag 12 juli 2006 13:33 schreef JeRa het volgende:
@qu63
Zet de veldnamen tussen aanhalingstekens, grote kans dat het dan wél werkt.
Sowieso doe je er goed aan alle attributes tussen aanhalingstekens te zetten.
1 2 3 4 5 | echo "<tr><td><input name=\"tijd_nieuw[$i]\"></td>"; echo "<td><input name=\"km_nieuw[$i]\"></td>"; echo "<td><input name=\"prijs_nieuw[$i]\"></td></tr>"; } |
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.quote:Op woensdag 12 juli 2006 13:50 schreef qu63 het volgende:
alleen kan ik die ene regel die alles in mn sql-tabel moet proppen niet goed maken, omdat er dus verschillende $_POST['km_nieuw'] waarden zijn.. dat is het enige punt eigenlijk.
de Update loop zit er ook al in en werkt ook.quote:Op woensdag 12 juli 2006 14:06 schreef JeRa het volgende:
[..]
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);quote:Op woensdag 12 juli 2006 14:06 schreef JeRa het volgende:
[..]
Dus je hebt wel verschillende waarden uit $_POST, maar je weet niet hoe je de INSERT/UPDATE-query moet schrijven voor meerdere waarden? Met een INSERT kun je standaard meerdere values meegeven (zie de MySQL manual) maar voor een UPDATE zul je een loopje moeten maken over alle waarden.
Normaal gesproken maakt ie de afbeelding 'on-the-fly'. Anders zou je er geen GD voor nodig hebben.quote:Op woensdag 12 juli 2006 10:15 schreef Desdinova het volgende:
[..]
ja hoe werkt dat precies? is het gewoon een hidden field ofzoiets die je een random waarde geeft, alsmede een selectie afbeeldingen met dezelfde tekens maar dan wat onduidelijker?
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?quote:Op woensdag 12 juli 2006 14:34 schreef Darkomen het volgende:
precies zoals het er staatipv in de while loopt steeds " INSERT INTO tbl_name (a,b,c) VALUES(1,2,3)" te doen voeg je achter (1,2,3) ,(4,5,6) toe.
1 2 3 4 5 6 7 8 9 | if (($_POST['km_nieuw'] > 0) && ($_POST['tijd_nieuw'] >0) && ($_POST['prijs_nieuw'] >0)) { foreach($_POST['km_nieuw'] as $km_nieuw) { mysql_query('INSERT INTO qu63 (km) VALUES ('$km_nieuw')'); $aangepast++; } foreach($_POST['tijd_nieuw'] as $tijd_nieuw) { mysql_query('INSERT INTO qu63 (tijd) VALUES ('$tijd_nieuw')'); $aangepast++; } foreach($_POST['prijs_nieuw'] as $prijs_nieuw) { mysql_query('INSERT INTO qu63 (prijs) VALUES ('$prijs_nieuw')'); $aangepast++; } ?> |
niet dusquote:Op woensdag 12 juli 2006 15:47 schreef qu63 het volgende:
[..]
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?
ik heb nu dit:
[ code verwijderd ]
kan dat
Ehm...door te controleren of ze hetzelfde zijn? Ik snap je niet.quote:Op woensdag 12 juli 2006 15:47 schreef qu63 het volgende:
[..]
maar hoe kan ik er voor zorgen dat 4,5,6 niet hetzelfde is als 1,2,3?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |