Kategorien
PHP XT-Commerce

XTCommerce Sofortüberweisungs Modul leitet bei Abbruch auf Warenkorb weiter

Bei einem Abbruch findet ein Redirect auf den Warenkorb statt, weil die verkaufte Artikel Mange schon um 1 erniedrigt wurde und die Artikel nicht mehr kaufbar sind laut Datenbank.

Deswegen muss in der checkout_payment.php folgender Code eingefügt werden

if($_GET['payment_error'] == 'sofortueberweisung_direct')
{
/*    require (DIR_WS_CLASSES . 'payment.php');
    $payment_modules = new payment('sofortueberweisung_direct');
    if ($confirmation = $payment_modules->confirmation())
    {

    }*/

    require_once (DIR_WS_CLASSES.'order.php');
    require_once (DIR_FS_INC.'xtc_db_query.inc.php');
    require_once (DIR_FS_INC.'xtc_get_prid.inc.php');
    $order = new order();

    for ($i = 0, $n = sizeof($order->products); $i < $n; $i ++)
    {
         xtc_db_query("update ".TABLE_PRODUCTS." set products_quantity = products_quantity + 1 where products_id = '".xtc_get_prid($order->products[$i]['id'])."'");
    }
    unset($order);

}

oberhalb von

// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($_SESSION['cart']->count_contents() < 1)
    xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART));

 

Kategorien
CSS Web Frontend Webdeveloper Tools

Wieso sollte man kein inline CSS/JS verwenden

Es gilt als schlechter Stil inline CSS zu verwenden:

<span style="color: #666666; display: block; float:left; width: 250px;padding-bottom:5px;">

d.h. das CSS eines Elements direkt über das style Attribut zu aktivieren.

Dasselbe gilt auch für Inline Javascript:

<div></div>
<script type="text/javascript">
    alert("hallo");
</script>

Folgende Gründe gibt es dafür:

Kategorien
jQuery

jQuery animate ruckelt im Chrome

Folgender Code ruckelt im Chrome:

        $('#foo')
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

die Lösung war ziemlich einfach:

        $('#foo').css({WebkitTransform: 'translateX(0px)'})
            .animate({
            'marginLeft' : '100px'
        }, 900) ;

Bei Problemen: jQuery updaten auf die neueste Version (1.8.2.)

Kategorien
jQuery

Javascript Page Cookie setzen

Um mit Javascript einen Cookie zu setzen, der nur auf der aktuellen Seite gültig ist bspw. foo.de/mySite3.php muss man den passenden Pfad setzen, den man mit Javascript folgender maßen auslesen kann. Ich benutze zum Setzen von Cookies die Lib jQuery Cookies. Der Pfad muss im Format „/mySite3.php“ gesetzt werden, dazu wird der vordere Teil der URL bis nach der Domain abgeschnitten.

    function setCurrentPageCookie(expiresHours) {
        var domain = document.domain;
        var path = document.URL;
        console.log(domain);
        console.log(path);
        var relativePath = path.substring(path.indexOf(domain) + domain.length);
        console.log(relativePath);
        $.cookies.set('cookieName', '1', {
            path: relativePath,
            hoursToLive : expiresHours
        });
    }
Kategorien
PHP SEO

PHP Redirect Header funktioniert nicht

Um Seiten SEO-freundlich umzuleiten, kann man in PHP einen 301 Redirect machen_

header("Location: http://www. new-location.de/foo_new.php",true,301);
exit;

Ich hatte dabei das Problem, das keine Fehlermeldung „Header already sent“ ausgegeben wurde, um herauszufinden, warum der Befehl nicht funktioniert. Es ist nämlich so, dass der header() Befehl nur funktioniert, wenn noch keine Bildschirmausgabe stattgefunden hat. Das betrifft auch Leerzeichen, wie sie oft bei PHP-Dateien vorkommen am Anfang oder Ende des Quellcodes:

_<?php

oder

?>_

Um diesen Stellen zu finden sollte man vor dem Redirect folgenden Code einfügen, wenn man keine Fehlermeldung „header already sent in line“bekommt:

    if(headers_sent($file, $line)){
        echo "Headers already sent in $file on line $line";
    }

 

Kategorien
Diverses

Strassenkrieg in Russland Videos

Auf Spiegel TV bin ich auf die russische Fernsehserie „Strassenkrieg“ gestoßen, in der Autofahrer ihr Können in Sachen Vorfahrtsmissachtung und Straßenkampf unter Beweis stellen können, gefilmt von Amateur Kameras, die andere Fahrer mitlaufen lassen. Da ich über Google noch keine Ergebnisse finden konnte, hab ich mit ein bisschen Russisch die besten Videos zusammengestellt.

Kategorien
Diverses

IFA 2012 und Deutschpoeten Festival Impressionen

Am Samstag war ich auf der IFA (internationale Funkausstellung) in Berlin und hab ein paar Interessant Fotos mitgebracht. Insgesamt war die Messe nicht der Hit, weil größten Teils Fernseher und iPhone Schutzhüllen und Zubehör angeboten werden und nur wenige Stände da waren, wo man interagieren konnte und gut die Technik ausprobieren konnte.

Kategorien
PHP

pdflib Installation unter Windows Xampp

Bei einer Fehlermeldung wie:

Fatal Error: Call to undefined function pdf_new();

fehlt die die pdf-lib Erweiterung für PHP.

Die Installation ist denkbar einfach:

  1. Download von pdflib8.0 für PHP (erste Zeile in der Mitte)
  2. öffnen der .zip und kopieren der passenden libpdf_php.dll, je nach PHP Version aus dem Verzeichnis /pdflib/bind/php/php-530-v8 in das Verzeichnis php/ext
  3. Eintrag in der php.ini: extension=libpdf_php.dll; hinzufügen an der extension Stelle
Kategorien
Amazon AWS Server Administration

Analyse: Amazon EC2 als günstige Root Server Alternative zur Entwicklung

Auf der Suche nach einem günstigem Root-Server zum Entwickeln und betreiben von meinen Webseiten bin ich über Amazon EC2 gestolpert und will im folgenden berechnen, ob sich der Betrieb finanziell lohnt im Vergleich zu einem normalen Root Server.

Die Amazon EC2 Preistabelle findet man hier.

Update:

Noch billiger sind die Reserved Instances, bei denen man für einen bestimmten Zeitraum (1 oder 3 Jahre) eine Instanz zu einem festen Preis mietet.

So bezhalt man z.B. für eine Linux Nano Instanz mit Sitz in Frankfurt jährlich nur 40$ oder für 3 Jahr 79$. Unschlagbar billig.

Das klingt erstmal günstig, aber richtig teuer wird Amazon, wenn es um große Systeme mit viel Traffic geht, da ist es günstiger selber ein Datacenter zu betreiben.

Achtung: EC2 Micro Instance ist ein Jahr kostenlos für Neukunden.

Amazon rechnet im Gegensatz zum normalen Root Server Anbietern in Stunden ab, da es sich um einen elastischen Cloud Service handelt. Es sollte bei der Rechnung immer im Hinterkopf gehalten werden, dass EC2 den Riesenvorteil einfach zu skalieren, indem man neue Instanzen dazuschaltet bei Bedarf.

Ein Rechenbeispiel für einen EC2 Entwicklungserver mit Standort Europa (Irland):

Preisvarianten für eine Micro Instance, die besonders günstig, aber nicht besonders leistungsfähig sind mit 613 MB RAM, aber vollkommen ausreichend für den Betrieb kleinerer Webseiten und als Entwicklungserver:

1. On-Demand Instances: 0,020$ pro Stunde

2. Reserved Instances mit geringer Auslastung: 0,015$ pro Stunde + $23*

3. Reserved Instances mit mittlerer Auslastung: 0,01$ pro Stunde + $54*

4. Reserved Instances mit hoher Auslastung: 0,008$ pro Stunde + $62*

Kategorien
CSS JavaScript Web Frontend Webdeveloper Tools

Debugging Tools für Firefox, IE, Chrome, Safari, Opera

Zum Debuggen von Webseiten braucht man immer spezielle Entwickler Tools für jeden einzelnen Browser, weil sich die Darstellung in jedem Browser ändert oder Javascript Fehler nur in bestimmten Browsern auftreten. Bevor man an die Arbeit geht sollte man unbedingt checken, ab das der Browser Cache deaktiviert ist in dem jeweiligen Browser, sonst erhält man eine nicht aktuelle Version der Webseite.

Debugging Tools beim Firefox 15

Geht über das bekannte und beste Plugin: Firebug

Ich verwende zusätzlich die Plugins: Web Developer und Colorzilla. Durch die sehr guten Plugins ist der Firefox mein Entwicklungsbrowser der Wahl.