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:
<?php
$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:
<?php
$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.
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.
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
Kleintje die vooral handig kan zijn bij formpjes:
<?php
function ifset(&$x, $y = null) {
return isset($x) ? $x : $y;
}
?>
Dan kan je gemakkelijk voor-ingevulde waarden in je formulier zetten, tenzij de gebruiker al iets gepost heeft:
<?php
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:
<?php
echo ifset('a', 'b'); // levert error op
?>
edit: En omdat ik de bestanden toch toevallig open heb staan, deze 2 heb ik gisteren nog gemaakt. Bleken wel handig te zijn:
<?php
function array_validate($callback, array $input) {
foreach($input as $value) {
if(!call_user_func($callback, $value)) return false;
}
return true;
}
?>
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:
<?php
$nummers = array(1, 2, 3, 4, 5);
var_dump(array_validate('is_int', $nummers)); // geeft true
$meer_nummers = array(1, "2", 3.1);
var_dump(array_validate('is_int', $meer_nummers)); // geeft false
?>
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:
<?php
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.
Jelmer kan aan mij liggen maar kun je jou probleem niet oplossen door gewoon
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.