If you are using the popular extension “tt_news”, you probably want the news title as page title on the single view of the news entries. Especially for SEO and sharing (Facebook, Twitter,…) it is very useful to have this information in the TITLE – tag of the page.
Continue reading
Tag Archives: php
Cropping of images in typo3 with typoscript
This posting is based on version 4.3.3 of typo3.
It is often necessary to display thumbnails with fixed width and height values for each image (e.g. some image gallery…), which is a challenge if you have images of different formats (4:3, 16:9,…).
Typo3 offers the “cropping” function, which means the original image is scaled to a given width and height – to preserve the proportions of the image, it automatically resizes the images to match the given values.
Continue reading
Installing Zend Debugger on linux (ubuntu server)
The documentation of Aptana 2.0 is poor at the moment, i did not find any docs on the new PDT PHP extension. Maybe someone has the same troubles getting php debugging to work – here is how i got it finally running:
Continue reading
Typo3 (4.2.8), utf-8 encoding and caching
Recently, a weird problem occured in my current typo3 – project. The caching was configured properly (out of the box configuration) and all caching tables were written as they should – but with a very confusing behaviour: the whole page was generated completely new by typo3 on each page request, which caused high server load. The error was not caused by an overriden no_cache-value or one of the other usual suspects (USER_INT, config – directives). After spending days trying to find a fix for the problem, i finally found a solution:
typo3 – enable admin panel in preview mode for non-admin users / groups
Typo3 offers a nice feature to edit content elements of a page directly in the preview mode – but this functionality is only available for admins per default. In my projects, it’s important for all users to have this feature. As so many tasks in typo3, it is not very obvious how to enable it – so here is a (very short) tutorial, how it works to add it for backend-groups.
Zend MVC Framework – forms with dojo / dijit decorators tutorial
I started developing my first application with the Zend Framework using the MVC approach – following the tutorial (http://framework.zend.com/docs/quickstart) is a good entry point, but as soon as you need some “advanced” features, it gets a little tricky.
In my application i will use the integrated Dojo-library, which offers powerful form elements and ajax features – but the integration of Dojo into my applicaion took me a lot of research in the docs – so here is my way to get it work (based on ZF 1.8.1):
PHP Prevent E-mail Form Spamming
Spammers are trying to abuse your contact form for sending spam mails with e-mail injection? Check out the code to secure your e-mail form.
The Problem – E-mail injection:
Spammers try to “inject” in your form fields some extra – header information via bots to use your webserver as spam server. One solution is to scan the submitted values of your form fields for malicious content before sending the e-mail.
// formcheck, filters out spamming attempts $errormsg = ''; $emailstr = ''; $emailstr .= $formfield1; $emailstr .= $formfield1; $emailstr .= $formfield3; if ( stristr($emailstr, 'content-type:' ) || stristr($emailstr, 'multipart/mixed' ) || stristr($emailstr, 'boundary="' ) || stristr($emailstr, 'cc:' ) || stristr($emailstr, 'multi-part message in mime format' ) || stristr($emailstr, 'to:' ) || eregi( "(%[a-f0-9])", $emailstr) || stristr($emailstr, '0x' )) // the last two are in case of hex or non-standard chars { $errormsg .= " Ups - bad boy "; } if (strlen($errormsg > 1)) { ... do not send ... } else { ... your normal e-mail handling ...}
Linked dynamic Select-Boxes with PHP & JavaScript
Script reads the values from 2 linked database tables and generates 2 select boxes – the first holds the categories and if one category is checked, the second box displays the depending values without reloading the site. You can now access the values of the select boxes via form operations.
Notice:
I used ADODB for the database queries – more information.
<?php /* ######################################################## 28.09.2004, by Elmar Putz http://www.elp.co.at ADODB - source http://adodb.sourceforge.net Connecting de Database with ADODB $db = ADONewConnection($databasetype); $db->debug = false; $db->PConnect($server, $user, $password, $database); ########################################################## */ /* DB-Tables ------------------------ prod_typ_1 ------------------------ id    int(11) typ_titel_de  varchar(50) typ_titel_en  varchar(50) ------------------------ prod_typ_2 ------------------------ id    int(11) titel_de  varchar(50) titel_en  varchar(50) typ_1_id int(11) // verknüpfung zu prod_typ_1.id */ // Data query $sql1 = "SELECT prod_typ_1.id, prod_typ_1.typ_titel_de, prod_typ_2.id, prod_typ_2.titel_de FROM prod_typ_1 INNER JOIN prod_typ_2 ON prod_typ_1.id = prod_typ_2.typ_1_id order by prod_typ_1.id, prod_typ_2.titel_de"; $rsX = $db->execute($sql1); // type listbox... echo "<SELECT NAME=\"typ1\" SIZE=\"1\" ONCHANGE=\"manuselected(this); document.form1.typ2.style.visibility = 'visible';\" class=\"formular\">"; // write the entry code for the javascript... echo "<option value=\"\">Typzuordung ändern</option>"; $sJavaScript = "function manuselected(elem) { for (var i = document.form1.typ2.options.length; i >= 0; i--) { document.form1.typ2.options[i] = null;"; // loop through the recordset... while (!$rsX->EOF) { If ($sLasttype <> $rsX->fields[1]) { // if so, add an entry to the first listbox $sLasttype = $rsX->fields[1]; echo "<OPTION VALUE=" . $rsX->fields[0] . ">" . $sLasttype ."</OPTION>"; // and add a new section to the javascript... $sJavaScript = $sJavaScript . "} if (elem.options[elem.selectedIndex].value==".$rsX->fields[0].") {"; } // and add a new model line to the javascript... $sJavaScript = $sJavaScript . "document.form1.typ2.options[document.form1.typ2.options.length] = new Option('".$rsX->fields[3]. "','" . $rsX->fields[2] ."');\n"; $rsX->MoveNext(); } // finish the Typ 1 listbox... echo "</SELECT>   "; // create the Typ 2 listbox... echo "<SELECT NAME=\"typ2\" SIZE=\"1\" class=\"formular\" style=\"visibility: hidden;\"> <OPTION>Keine Auswahl</OPTION> </SELECT>"; // put the last line on the javascript... // and write it out... $sJavaScript = $sJavaScript . "}\n }\n" ; echo "<SCRIPT LANGUAGE=\"JavaScript\">\n"; echo $sJavaScript ."\n</SCRIPT>"; ?>