php - 2006 április - 4 megfelelő bejegyzés

Mutass mindent

Jelöld be, hogy főbb mely kategóriákat akarod olvasni, vagy ha csak egyet: kattints a nevére.


mindet
jan
feb
már
ápr
máj
jún
júl
aug
sze
okt
nov
dec
2019
-
-
-
-
-
-
-
-
-
-
-
2018
-
-
-
-
-
-
-
-
-
-
-
2017
-
-
-
-
-
-
-
-
2016
-
-
-
-
-
-
-
-
-
-
-
2015
-
-
-
-
-
-
-
-
-
-
2014
-
-
-
-
-
-
-
-
2013
-
-
-
-
-
-
-
-
-
-
-
2012
-
-
-
-
-
-
-
-
-
-
2010
-
-
-
-
-
-
-
-
-
2009
-
-
-
-
-
-
-
-
-
-
-
2008
-
-
-
-
-
-
-
-
-
-
-
2006
-
-
-
-
-
-
-
-
2004
-
-
-
-
-
-
-
-
-
-
-
Haszprus

Überlogger

©   Haszprus   |   fejlesztés php

Na szóval itten gondolkodtam hogy miként lehetne backupolni a bejegyzéseket, de csak szépen finoman, abban bízva, hogy remélhetőleg sosem lesz a backupra szükség.

Először arra gondoltam, egy fájlba szépen kiírom a bejegyzések szöveg mezőjét beküldéskor, oszt jóvan.

Második nekifutásra azonban készítettem egy functiont ami xml-be kiírja a bejegyzéshez kapcsolódó összes adatot, de nemcsak itt használható, hanem bárhol, rekurzívan egy akár többszíntü arrayt kinyom egy gyönyörüen formázott plain text alapú xml fájlba.

/**
 * rekurzívan xml-be fejt egy akár többszíntü array-t
 */
function arrayToXML($array, $level = 0) {
   $return = "";
   $indent = "";
   for ($l = 0; $l < $level; $l++)
      $indent .= "\t";
   
   foreach ($array as $key => $val) {
      $return .= "\r\n";
      $return .= $indent;
      if (is_array($val))
         $val = arrayToXML($val, $level+1) . "\r\n" . $indent;
      $return .= "<$key>$val</$key>";
   }
   
   return $return;
}

Majd pedig egy elegáns húzással:

   $backupfile = new File(....);
   $content = arrayToXML($_POST, 1);
   $content = "\r\n<post>$content\r\n</post>";
   $backupfile->appendContent($content);

Az eredmény egy konkrét példája:

<post>
   <b_id>2439</b_id>
   <szoveg><p>Müködése a kommentben.</p></szoveg>
   <b_cim>Quoter function</b_cim>
   <submit>Ment publikusan</submit>
   <gall_categ>0</gall_categ>
   <gall_entry_title></gall_entry_title>
   <b_commentable>on</b_commentable>
   <categ>
      <1>on</1>
   </categ>
   <b_privszoveg></b_privszoveg>
</post>
Haszprus

Szép URL-ek - 3 - kompatibilitás

©   Haszprus   |   fejlesztés php

Nos, 404-es errordoc esetén az apache nem adja át az url-paramétereket a php scriptnek (azaz nem jön létre se a $_REQUEST, se a $_POST, se a $_GET tömb), ez értelemszerüen problémákat okoz a meglévő scriptekben.

A $_GET pótlása nem túl körülményes. (Illetve én a $_REQUEST-be írom, mert azt használom.)

$tmp_request_parameters = explode('&amp;', $URI);
foreach ($tmp_request_parameters as $trp) {
   $t = explode('=', $trp, 2);
   $_REQUEST[$t[0]] = $t[1];
}

A $_POST-ra egyelőre nincs ötletem.

Ami pedig még jó lenne, hogy pl. egy form az elküldendő adatait az url-hez szépen /.../ formában írogassa hozzá. Valszeg előbb-utóbb erre is sort kerítek, a megoldás gondolom valami script lesz, ami a form adataiból egy window.location változtatást visz véghez submit helyett.

Haszprus

Különösen spamelt bejegyzések

©   Haszprus   |   fejlesztés php

Jó, persze, a wiw meghívókérés az nem spam valójában, de ez most tökmindegy.

Tekintve, hogy a blogon pillanatnyilag összesen csak egy különösen spamelt bejegyzés van (mégpedig az iwiwről szóló), ezért nem építek semmi adatbázis-cuccot a dolog mögé, egyszerüen forráskódba belegányolom. Lehet hogy gány, de így gyors, így egyszerü, és tekintve hogy ez a lista évente bővül egy bejegyzéssel, ezért könnyen karbantartható is.

/* spamszavak száma: spamfactor */
$spamwords = array("http://", "great", [...]);
$spamfactor = 0;
foreach ($spamwords as $spamword)
   if (strpos($rq['szoveg'], $spamword) !== false)
      $spamfactor++;

/**
 * különösen spamelt bejegyzések esetén nagyobb a valószínűsége, 
 * hogy spammel van dolgunk... */
$spammed_posts = array(2226);

if ($spamfactor > 0 && in_array($rq['bejegyzes_id'], $spammed_posts))
   $spamfactor++;

Majd ha marha sok időm lesz, lehet, hogy átültetem db alapúra ezt a spam, meg badword, meg spammed_posts témát, de ugye akkor kell hozzájuk kezelőfelületet írni és az rögtön rengeteg vesződséggel jár, és a karbantartás sem egyszerübb végülis mint forráskódba néhanapján belehegeszteni egy-egy új szűrt szót vagy id-t.

Haszprus

PHP maxpont

©   Haszprus   |   bme php történelem

Na nyilván lehetett erre számítani, de azért említsük meg, hogy a php laborházim 14+45 = 59 pont lett, ez a maximum amit el lehet érni, és egyébként 32-től már amúgy is ötös (Igen, 32-től!) Mondjuk azt nem vágom, hogy hova tűnt a valid xhtml-ért, error_reporting e_all-ért és register_globals off-ért járó +4 (vagy +6?) pontom, valszeg a javító úgy volt vele hogy nincs rá nagy szükségem

Gratulálok. Talán a legprofibb megoldás, amit eddig láttam. Látszik, hogy volt már tapasztalatod a témában. [...]

Na jó, mit verjem magam, tényleg elég sokat foglalkozom a témával. Akik esetleg ezt szeretnék az orrom alá dörgölni egy hozzászólás formájában, hagyják ki, tisztában vagyok vele.

Meg kell mondjam, nagyon emberségesnek tartom az Adatb laborházik javítását, nem volt még olyan házi amihez ne gratulált volna a javító. Persze lehet hogy ez az ő egyéni érdeme. Mindenesetre respect & thx, jólesik.