Archiv štítku: php

Přesměrování skriptů bez přípony na skutečné soubory s PHP příponou

Kdysi se používala i taková pochybná záležitost, kdy bylo možné přistupovat na PHP skript bez udání přípony. Tedy například http://web.cz/skript ve skutečnosti spustilo soubor skript.php. Není to moc bezpečná a smyslupná věc, proto je běžně zakázáná.

Narazil jsem na weby, kde to takto bylo naprogramováno, ale na jiné konfiguraci serveru byly skripty nefunkční. Pro vyřešení je možné přidat do htaccessu následující pravidla. Nejsem si jistý, zda jsou úplně správně, ale zdá se, že fungují.

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^admin/([a-zA-Z0-9_-]+)$ admin/$1.php [L,QSA]

Výběr místa pomocí Google Maps

Pomocí následujícího kódu lze umístit do formuláře Google mapu na které je možné vybírat konkrétní místo na mapě kliknutím. Souřadnice se pak ukládají do skrytých inputů a jsou dále zpracovány formulářem.

 

<script src="if_gmap.js"></script>
 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
 <script>
 $(document).ready(function() {
 def_longval = 14.458008;
 def_latval = 50.065367;
 $('#longval').val(def_longval);
 $('#latval').val(def_latval);
 if_gmap_init();
 });
 </script>
<input name="gps_longitude" type=hidden id="longval">
 <input name="gps_latitude" type=hidden id="latval">
 <div id="maparea" style="background:#ffffff">
 <div id="mapitems" style="width: 360px; height: 540px;background:#ffffff;"></div>
 </div>

Skript lze stáhnout zde: http://www.tytai.com/gmap/

Na stejné adrese jsou i další způsoby použití.

 

ImageMagick – převod RGB na CMYK

Následujícím příkazem lze spolehlivě převést CMYK obrázek na RGB barevnost. Zatím jsem nenarazil na žádný, který by se převedl špatně.

convert -colorspace -CMYK FILEIN - profile "d:\imagemagick\icc\RGB\AdobeRGB1998.icc" -colorspace RGB FILEOUT

Před samotným převodem je vhodné otestovat, zda je obrázek opravdu ve CMYKu.

$imageInfo = getimagesize($file);
if ($imageInfo['channels'] == 4) { //prevod CMYK na RGB }

 

 

 

 

 

 

 

 

 

 

 

 

Příprava HTML pro newsletter

Pokud potřebujete zkombinovat HTML + CSS soubor pro použití v newsletteru, pomůže knihovna Emogrifier. Možná existuje i jiná knihovna, ale tato vypadá, že funguje snad 100% dobře.

Této třídě se předá HTML + CSS kód a výsledkem bude HTML kód, který bude mít CSS styly vložené jako inline styly k jednotlivým elementům. Docela šikovné a může se to hodit.

Jen jsem narazil na problém, že pokud je u některého HTML elementu dvakrát atribut style (ano, hloupý překlep 🙂 ), tak převod zhavaruje.

Nette a ukládání průhledných PNG obrázků

Standardní distribuce PNG mi špatně ukládá průhledné PNG (místo průhledné barvy je černá). Na různých serverech to možná funguje jinak. Osvědčila se mi následující úprava. Ve funkci fromFile třídy Image je ve switchi třeba nahradit větev patřící k typu PNG za tento kód:

if (@imagecreatefrompng($file)==false) return false;
$image = imagecreatefrompng($file);
imageantialias($image,true);
imagealphablending($image, false);
imagesavealpha($image,true);
$transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparent);
return new self($image);

Nette autorizace bez Nette aplikace

Před jakýkoli výstup se musí dát například $user->isLoggedIn();, aby nenastala chyba „Cannot send session cache limiter – headers already sent“. Zatím nevím o jiném způsobu, jak tomuto zabránit. Jinak se totiž ve funkci getNamespace zahajuje session, které výstupem už je nastartované (nebo jinou funkcí). Toto mi nepřijde jako úplně správné řešení, ale funguje to. 🙂