Jun
30
2008
0

ErrorHandle

Hi,

hier ein kleines Tool um Fehler in PHP abzufangen und zu handeln:

  1.  
  2. <?php
  3. require_once 'ErrorHandle.class.php';
  4. ini_set("error_display",0);
  5. set_error_handler(array("ErrorHandle", "add"));
  6. ?>
  7.  
  1.  
  2. <?php
  3. class ErrorHandle{
  4. private static $errors = array();
  5. public static $send = false;
  6.  
  7. public static $errortypes_to_ignore = array(E_STRICT);
  8.  
  9. public static function add($errno, $errmsg, $filename, $linenum){
  10. ErrorHandle::$errors[] = new ErrorHandle($errno, $errmsg, $filename, $linenum);
  11. }
  12.  
  13. public static function getAll(){
  14. return ErrorHandle::$errors;
  15. }
  16.  
  17. public static function toString(){
  18. $return = "";
  19. foreach(ErrorHandle::getAll() as $error){
  20. $msg = $error->__toString();
  21. if($msg != false){
  22. $return .= $msg . "\n\n";
  23. }
  24. }
  25. return $return;
  26. }
  27.  
  28. private $errno = "";
  29. private $errmsg = "";
  30. private $filename = "";
  31. private $linenum = "";
  32. private $trace = array();
  33.  
  34. public $errortypes = Array(
  35. E_ERROR => 'Error',
  36. E_WARNING => 'Warning',
  37. E_PARSE => 'Parsing Error',
  38. E_NOTICE => 'Notice',
  39. E_CORE_ERROR => 'Core Error',
  40. E_CORE_WARNING => 'Core Warning',
  41. E_COMPILE_ERROR => 'Compile Error',
  42. E_COMPILE_WARNING => 'Compile Warning',
  43. E_USER_ERROR => 'User Error',
  44. E_USER_WARNING => 'User Warning',
  45. E_USER_NOTICE => 'User Notice',
  46. E_STRICT => 'Runtime Notice'//,
  47. //E_RECOVERABLE_ERRROR=> 'Catchable Fatal Error'
  48. );
  49.  
  50. public function __construct($errno, $errmsg, $filename, $linenum){
  51. $this->errno = $errno;
  52. $this->errmsg = $errmsg;
  53. $this->filename = $filename;
  54. $this->linenum = $linenum;
  55. $this->trace = debug_backtrace();
  56. }
  57.  
  58. public function __destruct(){
  59. if(ErrorHandle::$send == true) return false;
  60. ErrorHandle::$send = true;
  61.  
  62. echo ErrorHandle::toString();
  63. }
  64.  
  65.  
  66. public function __toString(){
  67. if( in_array($this->errno, ErrorHandle::$errortypes_to_ignore) ) return false;
  68.  
  69. print_r($this->trace);
  70. $trace_ret = ob_get_contents();
  71.  
  72.  
  73. return "Errortype:\t" . $this->errortypes[$this->errno] . "\n" .
  74. "Filename:\t" . $this->filename . "\n" .
  75. "Linenumber\t" . $this->linenum . "\n" .
  76. "Errormsg\t" . $this->errmsg . "\n" .
  77. "\nTrace: \n" . $trace_ret;
  78. }
  79. }
  80. ?>
  81.  

Kleiner Tipp: Leichte Erweiterung und Einbettung in HTML möglich :)

Written by in: Allgemein |
Jun
25
2008
0

Simple Apache Frameforward

Hier ein kleiner und simpler Frameforwarder von Pat und mir:

Apache Config:

  1.  
  2. <VirtualHost *>
  3. ServerName blog.alexander-kaletsch.de
  4. DocumentRoot /yourpath/forwarder
  5.  
  6. ErrorLog /yourpath2/forwarder.error.log
  7.  
  8. LogLevel warn
  9.  
  10. CustomLog /yourpath3/forwarder.log combined
  11. ServerSignature On
  12. </VirtualHost>
  13.  

Weitere Subdomains können dann einfach über ServerAlias hinzugefügt werden.

Die index.php die sich im Forwarder Verzeichnis befinden muss:

  1.  
  2. <?php
  3. ini_set("error_display",0);
  4.  
  5. $mapper = array("blog.alexander-kaletsch.de" => "http://www.patworx.de/blog");
  6.  
  7. $host = $_SERVER['HTTP_HOST'];
  8. $url = $mapper[$host];
  9.  
  10. ?>
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <title><?=$host?></title>
  16. <style type="text/css">
  17. <!--
  18. HTML, BODY, FRAMESET, FRAME, NOFRAMES{
  19. height: 100%;
  20. width: 100%
  21. }
  22. -->
  23. </style>
  24. </head>
  25. <frameset>
  26. <frame frameborder="0" name="main" title="<?=$host?>" noresize="noresize" src="<?=$url?>"/>
  27. <noframes>
  28. <body>
  29. <p><a href="<?=$url?>">Klicken Sie hier, da Ihr Browser keine Frames unterstu&uuml;zt</a></p>
  30. </body>
  31. </noframes>
  32. </frameset>
  33. </html>
  34.  
Written by in: Allgemein,PHP,Snippets | Schlagwörter: ,
Jun
25
2008
1

iCal

Die Klasse habe ich zwar schon vor einigen Monaten geschrieben, aber Dorian (http://www.proksch-it.de/) hat mich dazu bewogen, sie doch noch zu veröffentlichen, da er sie nun selbst verwendet.

Eine minimalistische Klasse für die Generierung von iCal Files.

Ziel ist: Wenig Features und wenig Probleme :)

  1.  
  2. class iCal{
  3. private $valid_elems = array("author", "start", "end", "topic", "msg", "location");
  4. private $min_elems = array("author", "start", "end", "topic", "msg");
  5.  
  6. public function __construct($values = array()){
  7. foreach($values as $key => $value){
  8. $this->set($key, $value);
  9. }
  10. }
  11.  
  12. public function __set($key, $value){
  13. if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht zugelassen");
  14.  
  15. $this->$key = $value;
  16. }
  17.  
  18. public function __get($key){
  19. if(!in_array($key, $this->valid_elems)) throw new Exception("Element nicht vorhanden");
  20. return isset($this->$key) ? $this->$key : null;
  21. }
  22.  
  23. public function __toString(){
  24. foreach($this->min_elems as $value){
  25. if($this->$value === null) throw new Exception("Nicht alle Pflichtelemente angegeben");
  26. }
  27.  
  28. if(headers_sent()) throw new Exception("Header wurden bereits gesendet!");
  29.  
  30. header('Content-Type: text/Calendar; charset=UTF-8');
  31. header('Content-Disposition: attachment; filename=iCal_' . date('Y-m-d_H-m-s') . '.ics');
  32.  
  33.  
  34. $output = "";
  35. $output = (string) "BEGIN:VCALENDAR\r\n";
  36. $output .= 'PRODID:' . '#//PHP/AKCD//DE' . "\r\n";
  37. $output .= "VERSION:2.0\r\n";
  38. $output .= "METHOD:PUBLISH\r\n";
  39. $output .= "BEGIN:VEVENT\r\n";
  40. $output .= "DTSTART:". gmdate('Ymd\THi00\Z', $this->start) ."\r\n";
  41. $output .= "DTEND:". gmdate('Ymd\THi00\Z', $this->end) ."\r\n";
  42. if($this->location !== null) $output .= "LOCATION" . $this->quotedPrintableEncode($this->location) ."\r\n";
  43. $output .= "TRANSP:OPAQUE\r\n";
  44. $output .= "SEQUENCE:0\r\n";
  45. $output .= "UID:". md5("ICAL".$this->start.rand(1,5000).$this->end)."\r\n";
  46. $output .= "DTSTAMP:".gmdate('Ymd\THi00\Z',time())."\r\n";
  47. $output .= "CATEGORIES".$this->quotedPrintableEncode($this->author)."\r\n";
  48. $output .= "DESCRIPTION".$this->quotedPrintableEncode($this->msg)."\r\n";
  49. $output .= "SUMMARY".$this->quotedPrintableEncode($this->topic)."\r\n";
  50. $output .= "PRIORITY:5\r\n";
  51. $output .= "CLASS:PUBLIC\r\n";
  52. $output .= "STATUS:CONFIRMED\r\n";
  53. $output .= "END:VEVENT\r\n";
  54. $output .= "END:VCALENDAR\r\n";
  55.  
  56. return $output;
  57. }
  58.  
  59.  
  60.  
  61.  
  62. private function quotedPrintableEncode($msg, $lang = "de"){
  63. $msg = preg_replace('/<a href="(.*)">.*<\/a>/i', "$1", $msg);
  64. $msg = str_replace("€", "Euro", $msg);
  65. $msg = ereg_replace("(\r\n|\n|\r)", "=0D=0A", $msg);
  66. return ";LANGUAGE=de;ENCODING=QUOTED-PRINTABLE:" . $msg;
  67. }
  68. }
  69.  

Sample:

  1.  
  2. $iCal = new iCal();
  3.  
  4. $iCal->start = time() + (24 * 60 * 60);
  5. $iCal->end = time() + (24 * 60 * 60 * 3);
  6. $iCal->author = "Alexander-Kaletsch.de";
  7. $iCal->msg = utf8_encode('Hallo <img src='https://www.patworx.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ');
  8. $iCal->location = utf8_encode('http://www.alexander-kaletsch.de');
  9. $iCal->topic = utf8_encode('Visit Alexander-Kaletsch.de');
  10.  
  11. echo $iCal;
  12.  

Wer unbedingt mehr Features benötigt sollte sich die iCal Klassen von Michael Wimmer (http://www.flamino.com) anschauen.

Written by in: PHP,Snippets | Schlagwörter:
Jun
24
2008
0

Projekt www.descargasimaginarium.es fertig gestellt!

Imaginarium

Unter der URL www.descargasimaginarium.es wurde das spanische Download-Portal der Spielwarenfirma Imaginarium gestartet.

Written by in: Projekte |
Jun
22
2008
0

Essknete-Laden.de released

Essknete-Laden.de

Unser neuestes Projekt:

Essknete-Laden.de wurde für die FamilyNet GmbH released.

Written by in: Projekte |
Jun
05
2008
0

merciless-records.de launched

Die seit Anfang der Neunziger bestehende Heavy Metal Schmiede Merciless Records hat einen neuen Webauftritt bekommen: www.merciless-records.de

Written by in: Projekte |

Powered by WordPress | Theme: Aeros 2.0 by TheBuckmaker.com