Přesměrování z HTTP na HTTPS

Velice jednoduchý kód, který vložíte do souboru .htaccess:

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Toto zajistí, že pokud zadáme URL s http://, automaticky nás to přesměruje na verzi s https://. Dejte si pozor, abyste tak měli nastaveny i Vaše webové stránky, potažmo PHP skripty! Jinak by vznikla smyčka přesměrování – web by chtěl HTTP a .htaccess zase HTTPS (a Vy také).

Kód přesměrovává jak doménu, tak i obsah za lomítkem – pokud to nechcete, odstraňte {REQUEST_URI}.

[R=301] dává prohlížeči vědět, že se jedná o permanentní přesměrování. To znamená, že prohlížeč se již sám nebude snažit navštívit HTTP verzi, ale rovnou bude chodit na verzi s HTTPS.

Můžeme využít také obdobný zápis .htaccess. Toto použijte, pokud se Vám korektně nepřesměrovávají podstránky za lomítkem:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

Nechceme-li používat .htaccess, můžeme do hlavičky každého PHP souboru vložit následující:

<?php
if ($_SERVER['HTTP'] == "on") {
$url = "https://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
header("Location: $url");
exit;
}
?>

Vlastní stavy objednávek v Prestashopu

Jen ve zkratce po přihlášení do administrace Prestashopu:

Objednávky – Stavy objednávek – Přidat nový

Zde můžete přidat nový stav objednávky, přidělit mu barvu a také status – například vygenerovat PDF, považovat objednávku za doručenou, nebo zaslat zákazníkovi e-mail.

Jak zaslat e-mail?

Na FTP ve složce /mails/cs (podle jazyka, ve kterém e-shop používáte) vytvořte libovolný HTML a TXT soubor. Oba soubory se musí jmenovat stejně a lze je pojmenovat například podle jejich vlastnosti a obsahu (doruceni5dnu, zbozinedostupne), apod…

Budete mít tedy 2 soubory

  • doruceni5dnu.html
  • doruceni5dnu.txt

Šablonu souboru HTML si můžete zkopírovat z jakékoliv jiné šablony ve složce /mails/cs a upravit dle libosti. TXT verze souboru by měla obsahovat pouze plain text bez HTML a CSS.

Pokud máte v Prestě nastaveno odesílání mailů typem text/html, není nutno mít i ekvivalentní soubor TXT. Ale nic tím nezkazíte. 😉

Máme-li hotovo, stačí v rolovacím menu v administraci vybrat vhodnou mailovou HTML šablonu a máme hotovo.

Hromadné najít & nahradit v MySQL databázi

Pakliže migrujeme webové stránky spolu s databází, je nutné nahradit veškeré výskyty např. staré domény za tu novou.

Jelikož phpMyAdmin nepodporuje hromadné najít&nahradit (lze to udělat pouze v předem definovaných tabulkách a sloupcích), musíme si pomoci vlastním PHP skriptem, který vše obstará za nás:

<?php
// připojení k databází
$server= "server";
$jmeno = "jmeno";
$heslo = "heslo";
$databaze = "databaze";

mysql_connect($server, $jmeno, $heslo);

// jake stringy - retezce - chceme najit ($najit) a cim je nahradit ($nahradit)
$najit = "text-ktery-chceme-nahradit";
$nahradit = "text-kterym-chceme-nahrazovat";

//samotne nahrazeni stringu - retezcu
$loop = mysql_query("
 SELECT
 concat('UPDATE ',table_schema,'.',table_name, ' SET ',column_name, '=replace(',column_name,', ''{$najit}'', ''{$nahradit}'');') AS s
 FROM
 information_schema.columns
 WHERE
 table_schema = '{$databaze}'")
or die ('Nelze nahradit vyskyty: ' . mysql_error());

while ($query = mysql_fetch_assoc($loop))
{
 mysql_query($query['s']);
}
?>

Ve výše uvedeném skriptu stačí pouze doplnit přihlašovací údaje k databázi ($server, $jmeno, $heslo, $databaze) a změnit odpovídající stringy (řetězce), které chcete napříč celou databází změnit.

Doplňte tedy aktuální řetězec ($najit), který chcete najít a nahradit ho novým řetězcem ($nahradit).

Nakonec skript spusťte. Jen si dejte pozor, zda Vám stačí na Vašem hostingu/serveru dostatečný max_execution_time. Například  Databáze o velikosti 20MB se zpracovávala na poměrně výkonném serveru kolem 5 vteřin.

Nastavení MOODLE, aby fungoval na nové doméně

V rootu webu otevřete soubor config.php a vyhledejte v něm proněnnou $CFG->wwwroot. U té následně změňte URL domény ze staré na novou

$CFG->wwwroot   = 'http://staradomena.cz'; 

$CFG->wwwroot   = 'http://novadomena.cz';

Dále je třeba ještě nahradit veškeré výskyty staré domény v databázi za nové.

Změna domény v databázi WordPressu při přesunu webu

V případě, kdy chceme přesunout web běžící na WordPressu, musíme zajistit dvě věci

  • překopírovat soubory z FTP
  • překopírovat databázi

Následně teprve můžeme měnit URL adresu domény v databázi. Pokud máte prefix tabulek wp_, spusťte v phpMyAdmin následující příkaz:

UPDATE wp_options SET option_value = replace(option_value, 'http://www.staradomena.cz', 'http://www.novadomena.cz') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://www.staradomena.cz','http://www.novadomena.cz');

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.staradomena.cz', 'http://www.novadomena.cz');

UPDATE wp_postmeta SET meta_value = replace(meta_value,'http://www.staradomena.cz','http://www.novadomena.cz');

Tento příkaz nahradí veškeré výskyty staré domény http://staradomena.cz v databázi za novou doménu http://novadomena.cz.

Pakliže ani toto nempomůže a WordPress Vás bude například při pokusu o přihlášení stále redirectovat na starou doménu, vložte do konfiguračního souboru wp-config.php, jenž je umístěn v rootu webu následující řádky

define('WP_HOME','http://www.novadomena.cz');
define('WP_SITEURL','http://www.novadomena.cz');

Další podmínkou pro správný přenos webu je vypnuté cachování.

Nastavení Google Analytics elektronický obchod s Prestashop 1.6

Dnes si ukážeme, jak nastavit elektronický obchod ve službě Google Analytics s e-shopem běžícím na Prestashopu 1.6. (platí i pro 1.5. a novější). Návod bude podrobně komentován s větším počtem screenshotů pro názornou ukázku.

google-analytics-name2-1920

Instalace modulů Google Analytics + Google Analytics API

Nejdříve je potřeba do Prestashopu nainstalovat modul Google Analytics pro vložení měřícího kódu do Presty. Tento krok můžete přeskočit v případě, že již Google Analytics na svém webu využíváte k měření návštěvnosti (ve zdrojovém kódu máte měřící kód Analytics). Upozorňuji, že pro korektní funkčnosti musíte mít na stránce měřící kód Analytics buďto díky modulu Google Analytics, nebo ručně vložený.

Druhý modul k instalaci bude Google Analytics API. Tenhle modul nám bude sloužit k propojení Analytics elektronického obchod, Prestashopu a samotného předávání informací o provedených objednávkách (cena, marže, dopravci…). Upozorňuji, že pro korektní funkčnosti musíte mít na stránce měřící kód Analytics buďto díky modulu Google Analytics, nebo ručně vložený.

1-moduly-instalace

Moduly nainstalujte v administraci Prestashopu pod záložkou v menu Moduly a Služby. Není třeba stahovat .zip balíčky z internetu. Stačí využít vyhledávání slovního spojení google analytics v levém panelu pod nadpisem Seznam modulů a nad kategoriemi modulů. Nainstalujte oba dva moduly – Google Analytics i Google Analytics API.

 

Propojení Google Analytics trackovacího kódu s Prestou

Nyní je třeba v Google Analytics založit nový web a nechat si pro něj vygenerovat trackovací kód. Budeme předpokládat, že toto již máte, neboť je to již nad rámec tohoto článku (návod možná někdy příště).

V seznamu webů si v Analytics na adrese https://www.google.com/analytics/ vyberte Vámi požadovaný web, v horním menu klepněte na záložku Administrátor a v prostředním sloupčeku pod služba vyberte první odkaz Nastavení služby.

2-analytics-admin

Zde uvidíte Vaše ID. To si zkopírujte a vložte do Prestashopu, kde kliknete u modulu Google Analytics na Konfigurace.

3-analytics-id-mereni

A v Prestě vložíte do pole Google Analytics Tracking ID + zaškrtnete Aktivováno. Uložíte.

4-moduly-vlozeni-trackingid

 

Vytvoření API pro Analytics v Google APIs Manager

Teď budeme potřebovat zajistit komunikaci při přenosu dat mezi Prestashopem a Google Analytics. Přihlásíme se proto do Google APIs Manageru na adrese https://console.developers.google.com/.

V levém sloupci vyberete knihovnu Library a pod záložkou Google APIs vyhledáme položku Analytics API.

5-google-apis-analytics-api

Vidíme hlášku A project is needed to enable API. V překladu Projekt je požadován pro povolení API. Ve stejném řádku, jako je tato hláška tedy vytvoříme projekt klepnutím na modré tlačítko Create Project. (Pokud bude třeba, klepneme na vyskočeném okně znovu na Create Project.)

Následně zvolíme jméno našeho projektu a odklikneme podmínky užití (+ volitelné info o updatech na mail).

7-create-project-jmeno-potvrzeni

Potvrdíme Create. Teď chvilku potrvá, než se vše vytvoří. Ale jen chvilku. Následně Povolíme naše API kliknutím na Enable.

6-google-apis-enable-api

 

Vytvoření údajů pro komunikaci (= credentials)

Vyskočila na nás další hláška To use this API, you may need credentials. Click „Create credentials“ to get started, že je třeba vytvořit údaje pro komunikaci (tzv. credentials). Na to ale klikat nebudeme. My klikneme v levém sloupci na Credentials a následně na horní záložku OAuth consent screen.

8-create-credentials

Zvolíme zde Product name shown to users, tedy název naší služby/webu/shopu (pochopitelně). A to je vše, nic dalšího není třeba vyplňovat (volitelně na Vašem úsudku). Uložíme kliknutím na modré Save.

Až nyní vytvoříme Credentials. Vyskočí na nás proto hláška a my klikneme na Create Credentials.

9-create-basic-credentials

Nyní zvolíme OAuth client ID.

10-type-of-credentials

Jako typ Client Id zvolíme Web applicationDále vyplníme jméno, např. tam klidně nechte Web client 1 (je to jedno). Vyplnit další údaje bude složitější. Pokračujte ve čtení od obrázkem.

11-client-id-type

Jako autorizované URL uveďte následující – stačí jen změnit domena.cz za tu Vaši. A případně přidat/odebrat HTTP/HTTPS protokol či www subdoménu. Pro ukázku vložte do polí (obě 2 hodnoty Vám):

  • Authorized Javascript origins
    • http://www.domena.cz
    • https://www.domena.cz
  • Authorized Redirect URIs
    • http://www.domena.cz/modules/gapi/oauth2callback.php
    • https://www.domena.cz/modules/gapi/oauth2callback.php

Vygenerují se Vám údaje, které si bezpečně uložte! Jedná se o client IDclient secret.

13-secret-info

 

Vložení Client ID, Client Secret a Profile do Prestashopu

Tyto údaje si zkopírujte a vložte do Prestashopu do konfigurace modulu Google Analytics API do kolonek Client ID a Client Secret.

14-vlozeni-secret-do-modulu

Zbývá zde ještě kolonka Profile. Její obsah zjistíte tak, že se přihlásíte do Google Analytics a z URL si zkopírujete řetězec číslic předcházející písmenem p. Jedná se přesněji o ty číslice červeně podtržené na následujícím obrázku.

15-profile-cislo-z-url

 

 

A uložíme klikem na Save and Authenticate.

 

Spárování Analytics a Prestashop

Po uložení Vás to přesměruje na servery Googlu. Zde bude možná třeba vybrat účet, pomocí kterého jste zaregistrováni v Analytics a tvořili jste API. Následně budete požádání o souhlas s povolením oprávnění.

16-autentifikace-google-app

Toto je nutné povolit pro spárování Vašeho Prestashopu s Analytics. Pokud se vše povedlo, hodí Vás to zpět do Presty na modul s hláškou Google API Authorization granted a informací o včerejších návštěvách Vašeho webu (e-shopu).

17-uspesna-autentifikace-redirect-do-presty

Tím je vše hotovo a objednávky se Vám budou automaticky synchronizovat do Google Analytics do sekce Konverze. Tu naleznete v podrobnostech Vašeho webu a v levém panelu dole kliknete na Konverze (s ikonkou vlajky) a Elektronický obchod.

Tak a nyní jste už opravdu dočetli celý tento návod až do konce. Gratuluji Vám! Pokud Vám návod pomohl, budu velmi rád za sdílení, nebo komentář. Pokud něco nefunguje, přidejte komentář, nebo se mi ozvěte na e-mail info@tomasjares.com.

Jak zabít a ukončit SYSTEM proces ve Windows

Ahoj,

v dnešním článku si ukážeme jednoduchý prográmek, který Vám umožní zabít – killnout jakýkoliv proces, ke kterému nemáte oprávnění a hlásí vám Access denied – přístup odepřen.

Poslouží nám k tomu jednoduchá aplikace, kterou si můžete pod jménem Process Hacker zdarma stáhnout.

process-hacker

Vyhledání procesu, který brání uložení/smazání souboru

Zabití procesu/jeho změna

process-hacker3

 

A umí i další funkce

process-hacker4

 

Dnešní článek je poměrně strohý, ale nemám k němu co více psát. Jeho funkčnost a ovládání je velice jednoduché. 🙂

 

PHP přesměrování + zaslání POST dat v $_POST

Někdy potřebujeme uživatele přesměrovat na nějakou stránku, ale z určitých důvodů nechceme data mezi skriptem a cílovou stránkou s jinou stránku přenášet v URL pomocí $_GET. Prostě potřebujeme tato data skrýt tak, aby v URL vůbec nebyla.

Je to jednoduché. 🙂 Sice u toho nepoužijeme pouze PHP, ale postup bude následující:

  1. Údaje máme v PHP v proměnné
  2. V PHP vygenerujeme PHP formulář s inputy, kde budou údaje vložené přes proměnné jako jejich value
  3. Takto vyplněnou stránku pošleme uživateli a ten ji dostane vyplněnou
  4. Součástí stránky bude JS, který automaticky tento formulář odešle na jinou URL
  5. Samozřejmě bude součástí odesílaných dat i value ve formuláři
  6. A jelikož jsme zvolili u form method=“post“, nic se v URL neobjeví
<form action='skript.php' method='post' name='formular'>
<?php
foreach ($_POST as $a => $b) {
echo "<input type='hidden' name=".$a." value=".$b).">";
}
?>
</form>
<script type="text/javascript">
    document.formular.submit();
</script>

Pokud si skript rozpitváme, tak část s form action všichni chápeme. Poté zobrazíme inputy tolikrát, kolikrát máme proměnnou $jmeno (snad mě chápete). No a potom v JavaScriptu automaticky formulář odešleme.

Více k dohledání na http://stackoverflow.com/questions/5576619/php-redirect-with-post-data

Odstranění .php, .html, .htm přípon souborů pomocí .htaccess

Dnes si ukážeme návod na to, jak pomocí souboru .htaccess skrýt přípony souborů. Je to jednoduché, do souboru .htaccess přidejte následující řádky a vždy jen změňte to, jakou příponu chcete skrýt. Ukážu pár příkladů…

Skrytí přípony .php

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

 

Skrytí přípony .html

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

 

Skrytí přípony .htm

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.htm [NC,L]

 

Výše uvedené příklady vždy virtuálně odstraní přípony souborů. To znamená, že pokud budeme mít soubor kontakt.php  na doméně example.com, tak pro něj budou stále existovat dvě adresy

  • example.com/kontakt.php
  • example.com/kontakt

Obě dvě URL zobrazí ten samý obsah souboru kontakt.php uloženém na FTP.

Pořadí inputů při přeskakování TABem pomocí tabindex

Pokud v přeskakování mezi jednotlivými inputy/selecty/checkboxy používáte především tabulátor, někdy Vás překvapí, když automaticky vybrané další pole je jiné, než to, jaké následuje v kódu.

Chování se prohlížeč od prohlížeče různí, proto neexistuje jednoduché vysvětlení, jak jdou za sebou inputy…

Máte-li ale zájem o vytvoření předem nadefinovaného pořadí inputů, je to zcela jednoduché. Navíc to bude fungovat všude, protože není potřeba nic jiného, než jen klasické HTML, dokonce i bez JavaScriptu si dnes vystačíme.

Pořadí inputů při přeskakování určuje vlastnost tabindexDo kódu ji zanesete stejně jednoduše jako třeba value, nebo length.

<input type="text" name="jmeno" tabindex="1"><br>

Důležitá je zde zvýrazněná hodnota tabindex=“?“. Čísla uvádějte vždy v posloupnosti a vždy ve vzestupném pořadí, jak chcete mezi poli/inputy přeskakovat. Například zde

<form>
  Jméno (první vybrané pole):
  <input type="text" name="jmeno" tabindex="1"><br>
  Telefon (třetí vybrané pole):
  <input type="text" name="telefon" tabindex="3"><br> 
  E-mail (druhé vybrané pole):
  <input type="text" name="email" tabindex="2"><br>
</form>

Jsou inputy uvedeny v HTML v pořadí

  1. Jméno
  2. Telefon
  3. E-mail

Ale jelikož je u každého inputu uveden také tabindex, tak pořadí v HTML nemá žádný vliv. Podle tabindexu bude tedy přeskakování mezi inputy pomocí tabu následovné

  1. Jméno (tabindex=“1″, ačkoliv pořadí v HTML je 1.)
  2. E-mail (tabindex=“2″, ačkoliv pořadí v HTML je 3.)
  3. Telefon (tabindex=“3″, ačkoliv pořadí v HTML je 2.)

Jednoduché, že? 🙂