Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18quote:Op dinsdag 27 december 2005 11:43 schreef wobbel het volgende:
Ook nogmaals mijn vraag dan maar
[PHP/(My)SQL] voor dummies - Deel 18
dan is die post later geeditquote:Op dinsdag 27 december 2005 12:00 schreef freiss het volgende:
[..]
Die is al beantwoord: [PHP/(My)SQL] voor dummies - Deel 18
Het is de bedoeling dat bij een HTTP request de headers eerst komenk, vervolgens een lege regel (newline), en daarna de data. Op de manier zoals het eerst gedaan werd zat de header ná de data, en dat gaat dus niet werkenquote:Op maandag 26 december 2005 14:41 schreef SuperRembo het volgende:
Je moet de data versturen na "Connection Close\r\n\r\n". (Vraag me niet waarom)
Dat was inderdaad het evrwarrende, en ik moest \r\n veranderen naar \n. Nu werkt het iig.quote:Op dinsdag 27 december 2005 21:18 schreef SuperRembo het volgende:
Ja dat zag ik later ook.
Het komt alleen een beetje vreemd over dat je eerst de header "Connection Close" stuurt en daarna pas de data. Maar die header betekent natuurlijk niet dat de connectie meteen dicht gegooid moet worden, maar dat de connectie dicht moet als ie klaar is.
Dat is afhankelijk van het OS van de server.quote:Op dinsdag 27 december 2005 22:39 schreef pc-fr34k het volgende:
\r\n veranderen naar \n.
Oh, handig, dan weet ik dat ook weer. Leer elke dag nog wat.quote:Op dinsdag 27 december 2005 22:40 schreef Swetsenegger het volgende:
[..]
Dat is afhankelijk van het OS van de server.
\r\n is windows \n is Linux.
1 2 3 | $aantal = mysql_query("SELECT COUNT(*) FROM tabel"); ?> |
je wilt alles in een loop?quote:Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
[ code verwijderd ]
Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
<?phpquote:Op woensdag 28 december 2005 11:15 schreef Send-a-Claus het volgende:
Ik wil in een tabel het aantal rijen tellen en dat vervolgens als variabele gebruiken in php. Dus heb ik het volgende gemaakt:
[ code verwijderd ]
Maar dat werkt natuurlijk niet. Ik moet dat resultaat nog fetchen enzo, maar daar heb ik totaal geen verstand van. Weet iemand hoe dat moet, want van al die mysql_fetch dingen op php.net wordt ik ook niet wijzer.
1 2 3 | $query = mysql_query("SELECT * FROM xxx") ?> |
1 2 3 | $aantal = mysql_num_rows($query) ?> |
1 2 3 4 5 | $result = mysql_query("SELECT COUNT(*) FROM tabel"); $row = mysql_fetch_row($result); $aantal = $row[0]; ?> |
Ja, dat kan. Maar als je verder niets doet met de rijen uit de tabel dan is het nogal onzinnig om ze allemaal in te lezen. Daarnaast is een count in mysql sneller, omdat niet alle data hoeft te worden overgepompt van mysql naar php. Ofwel, het werkt, maar het is sterk af te raden.quote:Op woensdag 28 december 2005 11:19 schreef freiss het volgende:
Volgens mij kan je gewoon:
[ code verwijderd ]
doen, en dan aanroepen met
[ code verwijderd ]
Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberenquote:Op zondag 25 december 2005 18:57 schreef Swetsenegger het volgende:
Toevallig heb ik ook een url probleempje.
Welke kan ik nu beter gebruiken? rawurlencode of urlencode?
Het gaat om een link meegestuurd in een e-mail, met daarin een bevestigings token van 32 karakters.
Dit werkte prima in OE en Entourage (microsofts mail client voor Mac), maar niet in Outlook 2000, welke de url automatisch encode. Aangezien mijn script niet decode, maar wel de lengte van de token checked, geeft hij een foutmelding.
Ik wil nu dus de tokenencode, mailen, en de bevestigingspagina de token weer laten encoden.
Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.quote:Op woensdag 28 december 2005 12:14 schreef wobbel het volgende:
ik doe voor ál mijn SQL inserts/updates/selects/deletes altijd addslashes();
En mocht bij DELETE maar 1 record verwijderd worden, dan doe ik ook LIMIT 1
En bij selecteren ga ik eerst kijken of de $_POST en/of $_GET wel bestaat.
Is dat veilig genoeg?
1 2 3 4 5 6 7 8 | if(!get_magic_quotes_gpc()) { $_POST['name']=addslashes($_POST['name']); $_POST['address']=addslashes($_POST['address']); $_POST['city']=addslashes($_POST['city']); } ?> |
Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.quote:Op woensdag 28 december 2005 12:20 schreef Light het volgende:
[..]
Lastig. Als je urlencode hebt geprobeerd en dat werkt niet goed samen met Outlook dan kun je eens rawurlencode proberen
Hier mijn activate scriptje (ff iets simpels gekozen)quote:Op woensdag 28 december 2005 12:21 schreef Swetsenegger het volgende:
[..]
Ehmz, addslashes is overbodig als magic quotes aanstaat. Dus het is handig om te controleren of magic quotes aanstaat, en zo nee DAN addslashes te doen.
[ code verwijderd ]
Delete, inderdaad limit 1 als het om 1 record gaat, en if ($_SERVER['REQUEST_METHOD']=='GET') is wel handig.
Maar je controleert geen userinput op die manier, je probeert alleen de schade te beperken indien er verkeerde input is. Handiger is het om te controlere of dat wat in je GET staat overeenkomt met wat je verwacht.
Verwacht je bv een id terug, controleer dan op is_numeric. Verwacht je een string van een bepaalde lengte (bv een token van 32 karakters) controleer dan met strlen of de lengte van de GET overeenkomt met bv 32 karakters.
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 | php session_start(); /* Load main library Files */ require_once("lib/htconfig.php"); require_once($GLOBALS['SITE']['LibPath'] . "/main.php"); /* Register page title */ $tml->RegisterVar ("DESC", "Activeren"); if(!$_GET['username'] || !$_GET['hash']) { $error->Report ("Niet alle (verplichte)variablen zijn toegewezen."); } else { $MySQL_Username_Select = mysql_query("SELECT count(*) FROM Leden WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'"); $MySQL_Username_Count = mysql_result($MySQL_Username_Select, 0); if($MySQL_Username_Count == 1) { $MySQL_Actief_Update = "UPDATE Leden SET Actief = '2' WHERE Username = '" . addslashes($_GET['username']) . "' AND Hash = '" . addslashes($_GET['hash']) . "' AND Actief = '1'"; $MySQL_Actief_Query = mysql_query($MySQL_Actief_Update) or die("Fout in query op regel " . __LINE__); $main->Message ("Geactiveerd", "Je hebt je account nu succesvol geactiveerd. Je kan nu inloggen.", "menu_home"); } else { $error->Report ("Er is geen gebruikersnaam gevonden die nog geactiveerd moet worden."); } } /* Output Pages */ $tml->Output(); ?> |
Waarom doe je addslashes bij een select?quote:Op woensdag 28 december 2005 12:25 schreef wobbel het volgende:
[..]
Hier mijn activate scriptje (ff iets simpels gekozen)
[ code verwijderd ]
En soms controleer ik iets wel 4x ofzo, maar dat maakt toch niet uit?![]()
Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens opquote:Op woensdag 28 december 2005 12:22 schreef Swetsenegger het volgende:
[..]
Nee, ik had geen enkele encode gebruikt. Werkt prima in OE en entourage, en ook in Outlook 2003. Maar bij iemand met Outlook 2000 stonden er opeens vreemde gecodeerde karakters tussen.
Maar is urlencode sowieso aan te raden wanneer je een bevestigingslink mailt?
Het is dus een md5hash.quote:Op woensdag 28 december 2005 12:34 schreef Light het volgende:
[..]
Het lijkt me wel handig ja. Al was het maar omdat je dan je mail in plaintext kunt versturen en alle mail clients het toch nog wel goed oppakken. Overigens is het niet nodig als je er zeker van bent dat er geen vreemde tekens in de tekst staat, door bijvoorbeeld md5 te gebruiken. Dat levert ook weer een string van 32 tekens op
Da's ook een voorbeeld dat er uberhaupt checks nodig zijn. Misschien doen ze wel user input valideren, dwz een is_numeric check op dingen die numeriek moeten zijn. En toch is dat niet voldoende.quote:Op woensdag 28 december 2005 11:52 schreef Swetsenegger het volgende:
Een beter voorbeeld om aan te tonen dat het controleren van userinput een MUST is, is er niet
Persoonsgegevens bij X-Toys.nl
%0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail clientquote:Op woensdag 28 december 2005 12:35 schreef Swetsenegger het volgende:
[..]
Het is dus een md5hash.
Daar staan dus geen vreemde tekens in. Tussen de 32 karakters stond plotseling !%0d%0d.
Ik heb nog niet gezocht waar%0d voor staat, dan kan ik misschien achterhalen hoe die er plotseling inkomen. de ! is sowieso een raadsel.
Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.quote:Op woensdag 28 december 2005 12:43 schreef Light het volgende:
[..]
%0d is ACSII 13 is een newline. Enige reden die ik daarvoor kan verzinnen is dat de url halverwege wordt afgekapt door de mail client, die dan bij het versturen de enters er maar fijn in laat zitten. Dat uitroepteken heeft er vast ook mee te maken. Maar het ligt dus gewoon aan de mail client
HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.quote:Op woensdag 28 december 2005 12:58 schreef Swetsenegger het volgende:
[..]
Hmz...., het is inderdaad een lange url en er zat een enter in. Hoe voor kom ik dat? Want die krijg ik er ook met een urldecode niet uit.
Zelfs als ik de url selecteerde en copy paste gaf hij die newline. Als platte tekst versturen ipv html? Maar dat is vrij lastig ivm het netjes weergeven van de bestelling.
Ja, ik stuur dus een html mail, met in de body gewoon een <a href....quote:Op woensdag 28 december 2005 13:36 schreef Light het volgende:
[..]
HTML mail? Gewoon de link neerzetten, en met een stukje tekst erbij dat als het niet werkt dat ze dan even alles op 1 regel moete kopieren. Tenminste, dat lijkt mij handig. Voor de rest zou ik ook niet weten hoe je het moet oplossen.
quote:Op woensdag 28 december 2005 15:58 schreef Light het volgende:
Ik neem aan dat je zelf geen enters in de url plant, en dat je de url tussen " " hebt staan in die link. Als het dan mis gaat kan het volgens mij alleen nog maar aan de betreffende mail client liggen.
1 2 3 | $body .= "<a href=\"http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."\">http://www.domein.nl/bevestig.php?bestelling=".$bestel_id."&bestel_code=".$activatie_id."</a><br /><br />"; ?> |
Ik hou het erop dat het aan de specifieke mail client lagquote:Op woensdag 28 december 2005 19:14 schreef Light het volgende:
Dat ziet er gewoon goed uitEn die spatie voor \" mag het verschil ook niet zijn.
Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzoquote:Op woensdag 28 december 2005 19:27 schreef FuifDuif het volgende:
In hoeverre is PHP (inmiddels) geschikt en volwassen genoeg voor echte design pattern implementaties en object geörienteerd ontwikkelen?
Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruikenquote:Op woensdag 28 december 2005 19:38 schreef JeRa het volgende:
[..]
Volwassen genoeg voor de zeer algemene omschrijving die jij geeft. Echter is de keuze voor PHP nooit zo vanzelfsprekend als wordt vaak wordt aangenomen, right tool for the right job enzo
Ik snap iets niet aan deze redenering. Je hebt het gevoel dat PHP een hobbyistentaaltje is, waardoor je wellicht zou willen kijken naar alternatieven. Maar je zegt niet waar je beperkt wordt, en als je niet wordt beperkt in je werken dan is er toch niets mis met PHP?quote:Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:
Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
Het formulier wordt gegenereerd met PHP en vervolgens wil ik dat de selectielijst standaard de huidige datum/tijd toont. Vervolgens wil ik deze informatie bij de submit weer afvangen. Dit is de connectie met PHP. Tijdens mijn zoektocht kwam ik de smarty functie tegen, deze was PHP en vandaar mijn vraag. Mocht je een andere oplossing weten dan houd ik mij natuurlijk ook aanbevolen...quote:Op woensdag 28 december 2005 20:53 schreef JeRa het volgende:
Wat is de connectie met PHP, dit lijkt me vooral HTML en Javascript?
Gewoon kijken met welke van beiden je het beste je geld kan verdienen.quote:Op woensdag 28 december 2005 19:45 schreef FuifDuif het volgende:
[..]
Het punt is: ik zelf hou best wel van PHP. Ik vind dat de syntaxis wel eens wat stenger mag (zoals het niet mogen declareren van variabelen in bijvoorbeeld if-statements en deze dan daaronder, buiten de if-statement, gewoon kunnen gebruiken), maar wat betreft de mogelijkheden en de elegantie van de taal an sich, ben ik een voorstander van PHP (uiteraard wel uitgaande van de right tool for the right job). Alleen heb ik nog altijd een beetje het gevoel, dat PHP een wat hobbyisten taaltje is. Ik ben bang dat ik mijzelf ernstig beperk, wanneer ik mij wat meer serieus ga verdiepen in de wat 'hogere' mogelijkheden. Met andere woorden: ik ben bang dat dat verspilde moeite is.
1 2 3 4 | 120.86 120.76 -0.08% 67.73 67.67 -0.09% etcetc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <tr> <td>78.39</td> <td>78.47</td> <td>+0.10%</td> </tr> <tr> <td>120.86</td> <td>120.76</td> <td>-0.08%</td> </tr> <tr> <td>67.73</td> <td>67.67</td> <td>-0.09%</td> </tr> etcetc |
1 2 3 4 5 | -0.08% -0.09% $procenten = array('0.10', '-0.08', '-0.09', etc); |
www.php.net/filequote:Op woensdag 28 december 2005 21:28 schreef Petertjuhh het volgende:
Ik heb een bestandje waar ik een bepaalde rij alleen wil uitlezen. Zo ziet het er nu uit:
[ code verwijderd ]
en ik wil graag de procenten uitlezen.
In html ziet het er zo uit:
[ code verwijderd ]
Hoe kan ik dit dan in een array zetten?
Bijv:
[ code verwijderd ]
Bedankt, ik ben eruitquote:Op woensdag 28 december 2005 22:06 schreef Swetsenegger het volgende:
[..]
www.php.net/file
www.php.net/explode
Je kan toch nooit SQL injecten met alleen maar cijfers?quote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Als iemand een session overneemt betekent dat nog niet dat hij/zij iets aan die session kan veranderen. Dit gebeurt alleen via jouw webinterface en die interface dient dus goed in elkaar te zittenquote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Zolang jij de invoer controleert (zowel de key als de value) en zorgt dat die invoer aan de gestelde eisen voldoet voordat je die in de sessie stopt, kan iemand ook met een sessie hijack de gegevens niet zodanig veranderen dat er gevaarlijke dingen in komen te staan. En als je waarden concequent controleert voordat je ze in de sessie stopt dan hoef je ze niet te controleren als je ze er weer uithaalt.quote:Op woensdag 28 december 2005 23:06 schreef Swetsenegger het volgende:
Nog een vraag over veiligheid.
Ik stop bestellingen in een array, key is het id van de produkt database, value is het aantal dat besteld wordt. Deze array staat in een sessie. Zodra iemand wat besteld, wordt de sessie bijgewerkt. De invloed op het bestel formulier is beperkt. Men kan de aantallen van bestelde produkten wijzigen. Deze waarde controleer ik met is_numeric.
De waarden welke uit de array komen gaan zonder verdere controlle de database in. In hoeverre is het realistisch dat iemand een sessie hyjacked om op die manier sql te injecten of is dat gewoon paranoia?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |