.htaccess – detect mobile devices and redirect to the propper page

in file .htaccess add next code to detect mobile device and redirect to the proper location:


RewriteEngine on

RewriteCond %{HTTP_USER_AGENT} “(Android|iPod|iPhone|iPad)” [NC,OR]

RewriteCond %{HTTP_USER_AGENT} “sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera” [NC,OR]
RewriteCond %{HTTP_USER_AGENT} “mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox”[NC,OR]
RewriteCond %{HTTP_USER_AGENT} “blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-“[NC,OR]
RewriteCond %{HTTP_USER_AGENT} “portalmmm|blazer|avantgo|danger|palm|series60|palmsource|pocketpc”[NC,OR]
RewriteCond %{HTTP_USER_AGENT} “smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|android”[NC]

RewriteRule .* http://www.google.com?q=%{HTTP_USER_AGENT} [L]

Pearl Crescent Page Saver – capture images of web pages

Screenshot of an Entire Page

Captured Using Page SaverPearl Crescent Page Saver is an extension for Mozilla Firefox that lets you capture images of web pages, including Flash content.

These images can be saved in PNG or JPEG format. Using Page Saver, you can capture an entire page or just the visible portion. You can control the image capture process via a wide variety of settings, including the image file name and scale (e.g., save at 50% of original size).

Source: here

HTML Regex Data Extractor 0.6

HTML Regex Data Extractor

This extension is useful for those who want to test the regular expression on the live HTML content.
They can also use their custom content.

Usage :
– Press Alt-R to test with your custom content
– Press Ctrl-U or right-click and choose “View Page Source” to test with HTML source of current page
– When you are viewing the source code, to show/hide the Regular Expression Bar, on Toolbar, choose View -> RegexHTML

Source : here

Multiple Upload – a jQuery plugin that makes working with SWFUpload

How does it work?

Rather than creating a SWFUpload instance and assigning handlers directly, it associates the SWFUpload instance with an element in the DOM, and all events handlers are bound to that DOM element.

Live Examples

Here are some live examples you can pull apart. Although the UI is not pretty, it demonstrates how you listen to events, and from there you can create whatever UI you want.

Download source here

CSS Round Corners – No images, No javascript

The line-layering technique uses no images and no javascript, only display: block bold tags layered on top of each other. We simply create lines with decreasing side margins, stick them on top of each other and we have a well-emulated round corner.

.b1f, .b2f, .b3f, .b4f{font-size:1px; overflow:hidden; display:block;}
.b1f {height:1px; background:#ddd; margin:0 5px;}
.b2f {height:1px; background:#ddd; margin:0 3px;}
.b3f {height:1px; background:#ddd; margin:0 2px;}
.b4f {height:2px; background:#ddd; margin:0 1px;}
.contentf {background: #ddd;}
.contentf div {margin-left: 5px;}


<b class="b1f"></b><b class="b2f"></b><b class="b3f"></b><b class="b4f"></b>
    <div class="contentf">

        <div>Round FILL!!</div>
    </div>
<b class="b4f"></b><b class="b3f"></b><b class="b2f"></b><b class="b1f"></b>

Din cauza framework-ului wordpress se injecteaza tag-urile HTML in editor, de acea nu pot sa afisez corect exemple, le puteti vedea [ aici ]

Round Border!!

cURL , PHP si SSL

La un moment dat am avut nevoie de a accesa un serviciu ssl din php folosind cURL. NU intentionam sa folosesc cURL, dar asta folosea PEAR : SOAP. Dupa mai mutle incercari, gaseam eroarea de ssl, de certificat invalid.

Rezolvarea e una simpla : Dezactivam din cURL verificarea PEER (CURLOPT_SSL_VERIFYPEER), insa nu e elegant.
Metoda eleganta presupune insa, salvarea certificatului si trimiterea lui in requestul cURL.

Trimiterea se face astfel :

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, 'fisierul in care se tine certificatul salvat in format PEM');

Fisierul trebuie sa fie salvat in format X.509 Certificate (PEM). Asta se paote face din browser, la view certificate/export.

Ce facem insa cand aplicatia ruleaza si se depaseste expire date ?
Folosind functiile php stream, putem accesa certificatul. Cu ajutorul extensiei openssl il putem salva.


$url = 'url'; //url-ul care necesita certificatul ,fara protocol.
$context = stream_context_create();
$res = stream_context_set_option($context, 'ssl', 'capture_peer_cert', true);
$res = stream_context_set_option($context, 'ssl', 'verify_host', true);
if ($socket = stream_socket_client("tls://$url:443/", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context))
{
    if ($options = stream_context_get_options($context))
    {
      if ( isset ($options['ssl']) && isset ($options['ssl']['peer_certificate']))
      {
        $keyinfo = openssl_x509_export_to_file($options['ssl']['peer_certificate'], 'file to save to');
      }
    }
}

Data de expirare a certificatului curent se poate lua astfel :

$keyinfo = openssl_x509_parse(file_get_contents($filename));
var_dump($keyinfo['validTo']);

Data este in format YYMMDDHHMMSS.

Spor la conectare SSL.

Watermark pe imagini in php

Va propun o metoda de a pune un watermark pe o imagine in PHP. In principiu functia primeste ca parametrii imaginea sursa (locatie), locatia destinatie, watermarkul (locatie imagine), si calitatea jpeg.

Va returna Boolean, iar in cazul TRUE va salva un jpeg cu watermark din imaginea initiala. Functia se foloseste de libraria GD inclusa in php si accepta orice fel de tip de imagine pe care o poate recunoaste aceasta.

Watermarkul este pus in coltul din dreapta jos, dar asta se paote modifica dupa bunul plac.

function set_watermark($source, $dest, $watermark, $quality = 80)
{
  if (func_num_args() < 3)
  {
    $set_watermark_error = "Insufficient parameters supplied!";
  }
  else
  {
    if (file_exists($source))
    {
      if ($src = imagecreatefromstring(file_get_contents($source)))
      {
        $info = getimagesize($source);
        imageantialias($src, true);
        if ($wm = imagecreatefromstring(file_get_contents($watermark)))
        {
          $wm_info = getimagesize($watermark);
          imagealphablending($src, true);
          imagecopy($src, $wm, $info[0]-$wm_info[0]-5, $info[1]-$wm_info[1]-5, 0, 0, $wm_info[0], $wm_info[1]);
          if (imagejpeg($src, $dest, $quality))
          {
            if (file_exists($dest))
            {
              chmod($dest, 0777);
              return true;
            }
            else
            {
              $set_watermark_error = 'Unable tosaveimage! ';
            }
          }
          else
          {
            $set_watermark_error = 'Unable tosaveimage! ';
          }
        }
      }
      else
      {
        $set_watermark_error = 'Unrecognized imageformat! ';
      }
    }
    else
    {
      $set_watermark_error = 'Source filedoesnotexist! ';
    }
  }
  return false;
}

Functia mai poate fi customizata pentru a intoarce si alte tipuri de imagine, dar lasam asta la alegerea fiecaruia.

Marii publisheri online isi vor masura oficial traficul exclusiv prin SATI

Ringier Romania sustine initiativa, urmand sa ia o decizie privind implementarea efectiva a acesteia in perioada urmatoare, se arata in comunicatul publisherilor.

Astfel, SATI va fi folosit ca etalon oficial de masurare a performantelor de trafic ale tuturor site-urilor editate de participantii la aceasta decizie comuna, semnatarii renuntand treptat, incepand de azi, la utilizarea altor sisteme de masurare a traficului online.

Ca urmare a deciziei luate de comun acord, codurile tuturor celorlalte sisteme de masurare a traficului pe Internet folosite pana in prezent vor fi eliminate treptat din paginile tuturor produselor web ale companiilor si grupurilor media semnatare, acestea urmand sa implementeze si faca publice numai rezultatele furnizate si auditate de sistemul SATI.

Potrivit semnatarilor, decizia nu tine de suspiciuni legate de masuratorile efectuate cu ajutorul altor sisteme, masuratori care au fost foarte utile pentru stadiul in care s-a aflat piata de online pana la lansarea SATI, ci reprezinta “o chestiune chestiune principiala si de logica de business: traficul siteurilor din Romania nu poate fi masurat oficial decat de un sistem administrat, auditat si controlat strict de o organizatie independent”, se mai precizeaza in comunicatul publisherilor.

“Este o decizie fireasca a unei piete ajunse la maturitate. Industria de publicitate nu poate utiliza pentru masurarea performantelor sale decat un sistem independent, o sursa unica si acceptata de inteaga industrie. La fel ca si in alte tari cu un mediu online dezvoltat, si in Romania, pentru tranzactionarea spatiului publicitar va fi utizat un etalon de masura furnizat de o sursa independenta, care furnizeaza date corecte, credibile, comparabile pentru toti membrii sai”, declara Arina Ureche, director general BRAT.

Totodata, rezultatele de trafic furnizate de SATI urmeaza sa fie publicate in ritm zilnic si saptamanal, nu doar lunar, in urma deciziei luate, pe 4 noiembrie, de Departamentul Internet al BRAT, care a analizat si aprobat in unanimitate, propunerea depusa de Realitatea-Catavencu, Ringier, MediaPro si Gazeta Online.

Sursa: http://www.wall-street.ro/