Zou je me misschien verder kunnen helpen? (MSN stayfan [@] gmail.com).quote:Op dinsdag 1 februari 2005 20:49 schreef capetonian het volgende:
[..]
Um , ..... dit is een makkie, ..... in je process, .... gebruik php's mail() functie om een bericht te versturen, laat dit dan direct naar de database insert gebeuren, ... wat leuk is is dan nog twee kleine tooltjes in te bouwen, .... een zodat jij een bericht krijgt op het moment dat je collega zijn of haar bericht leest (je kan het als optie aanvinken bij het versturen van je bericht), en om evt een subroutine in te bouwen dat checkt of de bericht al is gelezen en deze dan (bijvoorbeeld) een herrinering laten versturen
[ code verwijderd ]
Uuuh, .. als je niet uitkomt, .. mag je me op msn toevoegen.
Ok bedankt!quote:Op donderdag 3 februari 2005 14:34 schreef Roönaän het volgende:
Ik zou voor 3 tabellen gaan.
Even anders / makkelijker geformuleerd.quote:Op donderdag 3 februari 2005 14:40 schreef dnzl het volgende:
[..]
Zou je me misschien verder kunnen helpen? (MSN stayfan [@] gmail.com).
Thanks![]()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $aannemer=$user['firstname']; $contact=$_POST['contact']; $bedrijf=$_POST['bedrijf']; $tel=$_POST['tel']; $email=$_POST['betreft']; $betreft=$_POST['betreft']; $bericht=$_POST['bericht']; $nsiemp=$_POST['nsiemp']; $sql = " INSERT INTO calls (aannemer, contact, bedrijf, tel, email, betreft, bericht, nsiemp) VALUES ('$aannemer','$contact','$bedrijf','$tel','$email','$betreft','$bericht','$nsiemp') "; mysql_query($sql) or die (mysql_error()); ?> |
Je oplossing voor het probleem is vrij eenvoudig, namelijk de mail functie aanroepen na je insert. Daarna blijft natuurlijk de vraag waarom je van je $_POST array op zo'n omslachtige wijze losse variabelen maakt. Ten eerste is dat onnodig en ten tweede zou je dat via de extract functie kunnen doen en ten derde zou je gewoon netjes niets moeten doen de array en gewoon als een array gebruikenquote:Op donderdag 3 februari 2005 16:19 schreef dnzl het volgende:
[..]
Even anders / makkelijker geformuleerd.
Op dit moment heb onderstaand script voor het invoegen van gegevens die via een formulier binnnen komen. Deze gegevens zijn zichtbaar als "nsiemp" inlogt.
[ code verwijderd ]
De invoer in nsiemp staat ook in de database in de tabel 'users'. Ik zou zo graag willen dat erop dit e-mailadres een standaard mailtje terecht kwam met de melding "Er staan nieuwe gegevens voor u klaar, ga naar....". Meer niet.
De vergelijking die gemaakt moet worden is dus alsvolgt nsiemp -> user -> user1 -> user1@mail.com.
Kan iemand me hiermee helpen?
Als je er verder niets mee doet dan is het vrij zinloos. Maar het is een mooie gelegenheid om te controleren op ongewenste input.quote:Op donderdag 3 februari 2005 19:23 schreef rickmans het volgende:
[..]
Je oplossing voor het probleem is vrij eenvoudig, namelijk de mail functie aanroepen na je insert. Daarna blijft natuurlijk de vraag waarom je van je $_POST array op zo'n omslachtige wijze losse variabelen maakt.
Ten eerste is dat onnodig
Hebben ze eindelijk om veiligheidsredenen register_globals=off gezet, ga jij ff de extract-funtie promotenquote:en ten tweede zou je dat via de extract functie kunnen doen
Huh? wat?quote:en ten derde zou je gewoon netjes niets moeten doen de array en gewoon als een array gebruiken.
Wat is er mis om per key te controleren? dus:quote:Op donderdag 3 februari 2005 20:02 schreef SuperRembo het volgende:
[..]
Als je er verder niets mee doet dan is het vrij zinloos. Maar het is een mooie gelegenheid om te controleren op ongewenste input.
1 2 3 4 5 | <?php if(empty($_POST["bloep"])){ //blaat } ?> |
Ik volg je niet, waar zit volgens jou een veiligheidsprobleem?quote:[..]
Hebben ze eindelijk om veiligheidsredenen register_globals=off gezet, ga jij ff de extract-funtie promoten
http://php.net/array zie de documentatie over wat een array precies is en wat voor functionaliteit het biedtquote:[..]
Huh? wat?
Ja zo kan 't ook.quote:Op donderdag 3 februari 2005 20:15 schreef rickmans het volgende:
[..]
Wat is er mis om per key te controleren? dus:
[ code verwijderd ]
extract($_POST) gebruiken geeft dezelfe risico's als register_globals = on, het overschrijven van variabelen. Overschrijven is 't standaard gedrag als je geen extract_type opgeeft.quote:Het is nutteloos om alleen daarom een array te vervormen tot aparte variabelen.
[..]
Ik volg je niet, waar zit volgens jou een veiligheidsprobleem?
Een array ken ik wel, maar die zin is krom en ik snap 'm niet.quote:http://php.net/array zie de documentatie over wat een array precies is en wat voor functionaliteit het biedt.
"en ten derde zou je gewoon netjes niets moeten doen de array en gewoon als een array gebruiken"
Nee dat is niet het geval. $_POST["foo"] is net zo min of net zo makkelijk te overschrijven als $foo met de setting van register_globals. Extract zorgt alleen voor het onndige feit dat je je array splits in een aantal variabelen. Deze variabelen zijn met de juiste register_globals niet overschrijfbaar. Mocht je weten hoe dat wel zou moeten, dan zou ik graag een stukje proof of concept zienquote:Op donderdag 3 februari 2005 21:13 schreef SuperRembo het volgende:
[..]
extract($_POST) gebruiken geeft dezelfe risico's als register_globals = on, het overschrijven van variabelen. Overschrijven is 't standaard gedrag als je geen extract_type opgeeft.
Hetgeen dat ik bedoelde is dat je een array gewoon moet benutten waar die bedoelt voor is en dat het maken van aparte variabelen voor iedere key volstrekt onnodig typwerk is en wellicht zelfs nog overhead veroorzaakt. Daarnaast kan het onduidelijkheid veroorzaken met het debuggen aangezien het niet direct duidelijk hoe de variabele in het process terecht is gekomen, dat laatste kan uiteraard voorkomen worden door een goede naming convention, maar dan nog is het voor mij dezelfde actie als:quote:[..]
Een array ken ik wel, maar die zin is krom en ik snap 'm niet.
1 2 3 4 5 6 7 8 9 | <?php $a = 1; $b = $a; //wat in jouw geval te lezen is als: $a = array(1,2); $1 = $a[0]; $2 = $a[1]; ?> |
quote:Op donderdag 3 februari 2005 22:04 schreef rickmans het volgende:
Nee dat is niet het geval. $_POST["foo"] is net zo min of net zo makkelijk te overschrijven als $foo met de setting van register_globals. Extract zorgt alleen voor het onndige feit dat je je array splits in een aantal variabelen. Deze variabelen zijn met de juiste register_globals niet overschrijfbaar. Mocht je weten hoe dat wel zou moeten, dan zou ik graag een stukje proof of concept zien.
1 2 3 4 5 6 7 8 | if (authenticated_user()) { $authorized = true; } extract($_POST); // $authorized _kan_ nu overschreven zijn if ($authorized) { echo $secrect_information; } |
Ach, een key zoeken in een array kost ook tijd.quote:Hetgeen dat ik bedoelde is dat je een array gewoon moet benutten waar die bedoelt voor is en dat het maken van aparte variabelen voor iedere key volstrekt onnodig typwerk is en wellicht zelfs nog overhead veroorzaakt. Daarnaast kan het onduidelijkheid veroorzaken met het debuggen aangezien het niet direct duidelijk hoe de variabele in het process terecht is gekomen, dat laatste kan uiteraard voorkomen worden door een goede naming convention, maar dan nog is het voor mij dezelfde actie als:
[ code verwijderd ]
Indien je gebruik maakt van andere variabelen zodat je weet dat deze gevalideerd zijn is dat een kleine valide reden (namelijkverzicht) en waarschijnlijk veroorzaakt het een voor jou niet merkbare overhead.
Ik vind het zeer overzichtelijk dat ongevalideerde user-input maar op 1 plaats voor komt.quote:Echter het blijft te overwegen of het wel overzichtelijk blijft en of het de overhead waard is.
quote:Op donderdag 3 februari 2005 22:35 schreef SuperRembo het volgende:
[..]
[ code verwijderd ]
(Hier mankeert natuurlijk meer aan dan aleen het gebruik van extract(), het is dan ook slechts een voorbeeld)
1 | // $authorized _kan_ nu overschreven zijn |
1 2 3 4 5 | <?php // Dit wordt uit de datbase uitgelezen $buttonname = "$record->buttonname"; $buttonname = explode(",", $buttonname); ?> |
1 2 3 4 | <?php echo '<td width="0%"><div align="center"><B><a href="?page='.$buttonlink[0].'">'.str_replace("%20", " ", $buttonname[0]);'</a></div</td>'; ?> |
Ehmz, als je elke keer bij $buttonname 1 optelt wordt ie toch nooit leegquote:Op vrijdag 4 februari 2005 12:53 schreef jeroen-heeft-koffie-nodig het volgende:
Nu wil dat dit laatste zich blijft weergeven netzolang totdat $buttonname leeg is. Maar elke keer als deze 'td' wordt weergegeven, dan moet er bij buttonname en buttonlink een 1 dr bij worden opgeteld.
ja klopt!quote:Op vrijdag 4 februari 2005 12:57 schreef Swetsenegger het volgende:
[..]
Ehmz, als je elke keer bij $buttonname 1 optelt wordt ie toch nooit leeg
ow, wacht je wilt de volgende uit de array? Correct?
quote:Op vrijdag 4 februari 2005 12:59 schreef jeroen-heeft-koffie-nodig het volgende:
[..]
ja klopt!
edit netzolang totdat de array leeg is!
1 2 3 4 5 6 | <?php foreach($buttonname as $whatever){ //doe je html ding met $whatever ipv $buttonname] } ?> |
quote:
1 2 3 4 5 6 7 8 | <?php $buttonname = explode(",", $buttonname); foreach($buttonname as $buttonname){ echo '<td width="0%"><div align="center"><B> <a href="?page='.$buttonlink[0].'">'.str_replace("%20", " ", $buttonname['0']);'</a></div</td>'; } ?> |
quote:Op vrijdag 4 februari 2005 13:11 schreef jeroen-heeft-koffie-nodig het volgende:
[..]
[ code verwijderd ]
Heb ik nu gedaan, het werkt gedeeltelijk, hoewel ik nu alleen nog maar elke keer de 1e letter van de array krijg, en niet het gehele woord voor de komma. Ook blijft overal buttonlink hetzelfde
1 2 3 4 5 6 7 8 9 10 | <?php $a=0; foreach($buttonname as $knopnaam){ echo '<td width="0%"><div align="center"><B> <a href="?page='.$buttonlink[$a].'">'.str_replace("%20", " ", $knopnaam);'</a></div</td>'; $a++; } ?> |
Hij heeft dat vast in een data access layer staan die netjes een array terug geeftquote:Op vrijdag 4 februari 2005 13:51 schreef Swetsenegger het volgende:
Waarom lees je de resultaten van je query dan in een array? Het is toch handiger om gewoon met een whilelus je resultaten in je HTML te zetten?
Dat is dus het standaard gedrag van extract() zonder extract_type parameter. Het gebruik van extract() bevorderd slecht programmeerwerk, dat was mijn punt.quote:Op vrijdag 4 februari 2005 08:22 schreef rickmans het volgende:
[..]! dat is geen security issue, dat is gewoon heel slecht programmeer werk, waarbij je een variable overschijft door een andere waarde terwijl dat niet de bedoeling is
!.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |