Extra forum/Scripts categorie: Tips/Snippets
Ik zat me te bedenken dat het misschien wel handig is om gewoon een forum-categorie of script-categorie "Tips" aan te maken. Hierin kunnen dan kleine handige snippets in geplaatst worden die eigenijk niet in de huidige scriptlib thuis horen, maar wel gewoon handig zijn.
Daarnaast zouden hier gewoon tips gepost kunnen worden van dingen die vaak mis gaan tijdens het scripten. Gewoon even een simpel voorbeeldje van wat ik bedoel:
-------------------
Bij een inlogcontrole wordt vaak de volgende SQL-code gebruikt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = MD5('".mysql_real_escape_string($_POST['password'])."')";
?>
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = MD5('".mysql_real_escape_string($_POST['password'])."')";
?>
In eerste instantie lijkt hier niets mis mee, maar veel mensen weten niet dat op deze manier het wachtwoord keurig netjes onbeschermd in de SQL-logs komt te staan.
Gebruik daarom liever:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = '".md5($_POST['password'])."'";
?>
$sql = "SELECT
id
FROM
users
WHERE
username = '".mysql_real_escape_string($_POST['username'])."'
AND password = '".md5($_POST['password'])."'";
?>
Op deze manier komt het md5() gehashte wachtwoord in de logs te staan en kan niemand het wachtwoord dus nog achterhalen.
------------------
Dit is toch iets waarmee mensen redelijk vaak de fout in gaan en er is geen echte plek om dit soort tips/snippets te posten.
Laat eens horen wat je van het idee vindt.
Groet
Newb
edit:
Thx SanThe
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Quote:
password = ..... $_POST['username']
=> password = ..... $_POST['password']
Inderdaad, in de scriptlib hoort niet alleen volledige scripts, maar ook kleine snippets.
iChris.nl schreef op 21.07.2008 15:44:
Inderdaad, in de scriptlib hoort niet alleen volledige scripts, maar ook kleine snippets.
Heb je het topic en de reactie uberhaupt gelezen?
Quote:
Hierin kunnen dan kleine handige snippets in geplaatst worden die eigenijk niet in de huidige scriptlib thuis horen, maar wel gewoon handig zijn.
Quote:
Ik zat me te bedenken dat het misschien wel handig is om gewoon een forum-categorie of script-categorie "Tips" aan te maken. Hierin kunnen dan kleine handige snippets in geplaatst worden die eigenijk niet in de huidige scriptlib thuis horen, maar wel gewoon handig zijn.
Quote:
Inderdaad, in de scriptlib hoort niet alleen volledige scripts, maar ook kleine snippets.
Die staan er nu ook al in regelmatig om keihard te worden afgeschoten. Zoals jij het zegt moet het blijven zoals het is en dat is het punt van TS dat het nie zo is
Dan kan je gemakkelijk voor-ingevulde waarden in je formulier zetten, tenzij de gebruiker al iets gepost heeft:
Code (php)
1
2
3
2
3
<?php
echo '<input type="text" name="naam" value="' . htmlentities(ifset($_POST['naam'], 'je voornaam'), ENT_QUOTES) . '">';
?>
echo '<input type="text" name="naam" value="' . htmlentities(ifset($_POST['naam'], 'je voornaam'), ENT_QUOTES) . '">';
?>
Dankzij de reference (het &-tekentje voor $x) kan je niet-bestaande variabelen meegeven zonder dat PHP boos wordt. Nadeel is wel dat je alleen maar variabelen mee kan geven, en dit bijvoorbeeld niet zal werken:
edit: En omdat ik de bestanden toch toevallig open heb staan, deze 2 heb ik gisteren nog gemaakt. Bleken wel handig te zijn:
Code (php)
Hiermee kan je gemakkelijk een hele array testen tegen een bepaalde functie. Zodra een enkele waarde niet voldoet, stopt hij met testen en geeft hij 'false' terug. Voorbeeldje:
Code (php)
Het verbaasde me een beetje dat PHP niet standaard zo soort functie heeft.
En als laatste, een one-liner om je gegenereerde code een beetje netjes te houden:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
function str_indent($text, $depth = 1) {
return implode("\n", array_map(create_function('$s', 'return "' . str_repeat("\t", $depth) . '$s";'), explode("\n", $text)));
}
?>
function str_indent($text, $depth = 1) {
return implode("\n", array_map(create_function('$s', 'return "' . str_repeat("\t", $depth) . '$s";'), explode("\n", $text)));
}
?>
Je gooit er een lap tekst in, en er komt een lap tekst met $depth maal een tab teken op iedere regel uit.
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Sorry, je hebt gelijk Jacco, ik formuleerde het verkeerd; Ik bedoelde dat er een aparte categorie voor de snippets moet komen :)
function ifset($var = null)
{
return $var;
}
Te doen? in dat geval krijg je met een gevulde waarde de waarde terug en anders krijg je null terug. en nu kun je wel vaste waarden doen zoals ifset('a')
Maar dit topic was alleen om even het idee aan te dragen, niet om hier al allerlei scripts neer te gooien. Dat kan altijd nog als de meerderheid het géén goed idee vindt.
Jacco, dan zal je een Notice van PHP krijgen omdat je een variabele aanroept die niet bestaat.
Jelmer schreef op 21.07.2008 15:55:
Bedoel je niet:
function array_validate(array $input, $callback) {
Verder vind ik het ook wel een goed id, maar het moeten dan wel goede snippetes zijn dus niet iets van:
Om maar een veel te simpel en lomp voorbeeld te geven.
array_map" en heb ik het verandert. Ik heb de voorbeelden even verandert zodat de volgorde weer klopt ;)
Eerst wel, maar toen dacht ik, "laat ik dezelfde volgorde gebruiken als Heb een categorie 'snippets' aangemaakt. Als je nu scripts toevoegt kun je deze kiezen :). Goed idee, tnx!
Goed idee trouwens, is ook leuk om die kleine dingetjes, zoals van Jelmer, te ontdekken, dat met ifSet() vind ik wel leuk. Daar kun je nog eens in gaan bladeren als je niets te doen hebt, ontdek je toch nog leuke dingen.
Lol @ iCrhis.nl tekst-onder-naam-gedoe..
Het is iChris.nl voor jou Tommy! :) hehe
En dat was het moment waarop het niveau daalde \
Het zijn denk ik niet de 'normale' snippets, maar toch echt de wat beknoptere, kleine, nuttige en effeciënte (?) stukjes code die de programmeurs hier gebruiken om hun code te verbeteren, aan te vullen en hun programmeren te versnellen.
Nice snippets Jelmer! De MD5 is ook nieuws voor mij..