[WordPress] FTP Daten für automatische Updates festlesen

Da wir heute gerade schon mal beim Thema waren. Hier gleich noch ein Beitrag zu den automatischen Updates. Normalerweise fragt WordPress immer nach den FTP Daten um die Updates zu installieren. Man kann diese jedoch auch in der wp-config.php selbst (und fest) vorgeben. Dann müssen sie einerseits nicht mehr ständig eingegeben werden und es verringert auch das Sicherheitsrisiko (sagen jedenfalls die Experten :-) ).

Also wp-config.php öffnen und irgendwo – am besten nach den SQL Daten – die folgenden Parameter eintragen (und konfigurieren natürlich).

define('FTP_HOST', 'musterdomain.de');
define('FTP_USER', 'ftp_user');
define('FTP_PASS', 'ftp_paswort');

Die folgenden Zeilen müssen nicht angegeben werden. Wenn Du weißt was Du tust, dann kannst Du auch hier eigene Einstellungen vornehmen.

define('FTP_SSL', true); //SSL Verschlüsselter Upload
define('FTP_BASE', '...'); //Root Verzeichnis der Wordpress Installation
define('FTP_CONTENT_DIR', '...'); //wp-content Verzeichnis
define('FTP_PLUGIN_DIR', '...'); //wp-plugin Verzeichnis
define('FS_METHOD', 'direct'); //FTP Methode

[WordPress] Automatisches Update funktioniert nicht

Ich habe schon seid einer Weile ein Problem mit meinen automatischen Updates im WordPress. Er bricht das Update gleich mit der Fehlermeldung: “Das Verzeichnis “wp-content” konnte nicht gefunden werden.” ab.

Dazu muss ich sagen das ich auf einen Webspace umgezogen bin und nun alles irgendwie in einem Root Verzeichnis, in verschiedenen Unterverzeichnissen, liegt. Das ganze wird über einen FTP Zugang gemanaged.

Schnelle Abhilfe schafft man sich indem man WordPress einfach den richtigen Pfad vorgibt. Dann weiß WordPress wieder wohin mit den Daten und alles ist schick ;-)
Dazu einfach den folgenden Code in die wp-config.php einfügen, irgendwo.

putenv('TMPDIR=' . ini_get('upload_tmp_dir'));

Speichern, hochladen und alles sollte wieder laufen.

Das persönliche Valentinstags-Geschenk

Zum Valentinstag ein Präsent für den/die Liebste(n)

Das persönliche Valentinstags-Geschenk

Das persönliche Valentinstags-Geschenk

Bald ist wieder Valentinstag. Für alle Verliebten (heimlich oder wissentlich) ist das wieder ein besonderer Tag.

Es werden wieder Liebesbriefe geschrieben und kleine Präsente für den oder die Angebetete(n) gekauft. Und wahrscheinlich haben einige wieder das große Fragezeichen über dem Kopf… was soll ich nur Schenken?

Hier kann ich vielleicht helfen ;-) Wie wäre es mit schöner Unterwäsche zum Valentinstag. Oder einem Shirt oder Pullover etc.

Und das beste daran, auch noch mit einem individuellen Aufdruck. Zum Beispiel: “Inge, ich liebe Dich!” … ach Du hießt ja Franzi… :-) Nein, Scherz beiseite. :-) Den Namen sollte man schon richtig Schreiben. ;-) Oder ihr nehmt gleich ein Herz, a la “I (herz) Name”. Oder… oder oder. Es gibt Millionen Möglichkeiten was Du deiner/deinem Liebsten auf die Unterwäsche druckt.
Schaut es euch einfach mal an.

Und pünktlich zum Valentinstag – deswegen schreibe ich das ja auch gerade – gibt es natürlich auch wieder 2 Sonderaktionen im Shirt Shop. Eine Möglichkeit kannst Du dir aussuchen.

Entweder staubst Du einen kostenlosen Versand ab oder Du bekommst auf Unterwäsche 20% Rabatt. Die beiden Aktionen gelten nur vom 17.01.2011 bis 07.02.2011.
Für den kostenlosen Versand, ab einem Warenkorbwert von 30 Euro, gebe einfach bei der Bestellung den Code:  AMORVERSAND ein.
Für die 20% Rabatt auf die Unterwäsche gebe bei deiner Bestellung den Code:  AMORTEXTIL ein.
Das war es auch schon. So bekommst Du ein super individuelles und persönliches Valentinstags-Geschenk und sparst dabei auch noch ein paar Euro! Zum Shop geht es hier.

Ich wünsche euch einen super guten Valentinstag. Wie meiner ausfällt… ich warte es einfach mal ab… ob ich evtl. auch einen Liebensbrief bekomme :-)

[Magento] Pflichtfelder bei der Registrierung ändern

Da sind wir mal wieder beim Magento-Shopsystem. Ich kann nicht sagen das ich von dem System sehr begeistert bin. Um da durchzusteigen muss man Magento studiert haben. Aber egal.

Das Problem heute: Wie ändere ich Pflichtfelder bei der Registrierung.

Aktueller Fall ist das nur der Vorname, Nachname, E-Mail und Passwort.

Magento Version: 1.4.1.1

Als erstes nehmen wir uns die Registrierungsform vor. Die ist unter “/app/design/frontend/base/default/template/checkout/onepage/billing.phtml“.
Hier suchen wir alle Felder die wir nicht als Pflichtfelder haben wollen und entfernen in der entsprechenden Zeile erst einmal die “<em>*</em>“. Dann noch im Formularfeld selbst den CSS-Code in ändern.
Wenn man Pflichtfelder hinzufügen möchte, dann natürlich andersrum.
Das war es in der Datei auch schon.
Bei der Postleitzahl ist noch eine änderung ganz unten vorzunehmen. Aus der Zeile:

var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, ''billing: postcode');

machen wir

var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', countryRegions, undefined, '');

Das gleiche muss auch in der Datei “/app/design/frontend/base/default/template/checkout/onepage/shipping.phtml” gemacht werden.

Jetzt müssen wir die Prüfung durch PHP deaktivieren, für die Nicht-Pflichtfelder. Das passiert in der “/app/code/core/Mage/Customer/Model/Address/Abstract.php”. Ganz unten die Prüfungen auskommentieren die nicht erfolgen sollen.

Das sollte es gewesen sein. Bei mir funktioniert es :-)

jetztsparen.net und contenthandel.de wird versteigert

Hallo,

ich versteigere gerade die Domains www.jetztsparen.net und www.contenthandel.de.

Die Domain “www.jetztsparen.net” besteht aus der Top Keyword Kombination: “Jetzt Sparen” (Ohne Nummern oder Sonderzeichen, etc.)!

Die Domain ist 5 Jahre alt (lt. Netcraft) und wurde von mir nie Projektiert. Auch bei Archive ist nichts zu finden. Also Jungfräulich!

Dem Ideenreichtum bei dieser Domain sind keine Grenzen gesetzt. Hier kann alles mit gemacht werden was mit sparen zu tun hat. Vergleichsrechner, Bonusprogramme, Online-Shop, etc. etc.

www.contenthandel.de besteht auch aus einer guten Keywordkombination: “content” und “handel”. Also super für Contenthändler geeignet. Online seid 2009 und wurde von mir mit einem kleinen Online Shop betrieben. Versteigert wird nur die Domain.

Zur Auktion geht es hier: www.jetztsparen.net und www.contenthandel.de

[PHP] Dateiupload und Dateidownload

Jeder macht das eine und einige machen auch das andere. Die Rede ist vom Hoch- und Runterladen von Dateien im Internet. Jeder kann etwas herunter laden. Ob die Bedienungsanleitung, im PDF-Format, für den Fernseher oder ein schickes Bildchen als Bildschirmhintergrund oder oder oder… die Möglichkeiten sind schier unbegrenzt. Auf der anderen Seite gibt es natürlich auch I-Net Nutzer die auch Dinge hochladen.

Hier möchte ich kurz erklären wie man es als PHP Programmierer lösen kann. Viele Wege führen bekanntlich nach Rom. Hier mein Weg.
Als erstes der Upload. Hier brauchen wir natürlich überhaupt erst einmal eine HTML-Form mit einem Dateifeld. In seiner einfachsten Form würde das so aussehen:

<form enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input name="Submit" type="submit" value="Senden" />
</form>

Hier kann der User dann seine Datei auswählen und die Form abschicken. Damit wird, in diesem Fall, die Datei erneut aufgerufen und die Formulardaten mit übergeben. Sprich die Dateidaten. Diese können nun mit PHP erfasst und ausgewertet werden.

if(!empty($_FILES["file"]["name"])) {
	$UploadFolder = "./uploads/";

	//Dateinamen auf ungueltige Zeichen pruefen
	$Dateiname = preg_replace('/[^a-z0-9.-_]/', '', strtolower($_FILES["file"]["name"]));

	//Existiert die Datei auch noch nicht
	if(!file_exists($UploadFolder.$Dateiname)) {
		//An die richtige Stelle kopieren
		move_uploaded_file($_FILES['file']['tmp_name'], $UploadFolder.$Dateiname);
		if(!file_exists($UploadFolder.$Dateiname)) {
			echo "Datei konnte nicht hochgeladen werden. Bitte wenden Sie sich an einen Administrator.";
		} else {
			//Datei ist hochgeladen
		}
	} else {
		echo "Es existiert bereits eine Datei mit diesem Dateinamen. Bitte bennenen Sie die Datei um.";
	}
}

So. Damit haben wir die Datei hochgeladen und in dem Ordner „Uploads“ abgelegt. Das ist natürlich nicht alles. Jeder muss hier seinen eigenen Weg gehen.
Der Dateiname muss z.B. irgendwo (Datenbank) gespeichert werden, damit sich das System später daran “erinnert”. Aber für den Upload selbst reicht das.

Kommen wir zum 2. Teil. Dem Download der Datei.

Ein User hat jetzt eine Bedienungsanleitung auf einer Webseite hochgeladen und für andere Benutzer zum Download zur Verfügung gestellt. Jetzt kommt ein anderer User und möchte die Datei downloaden.

Als Programmierer wäre es das einfachste einfach einen Link zu veröffentlichen der auf die Datei, im Dateisystem, zeigt. Das hätte aber den Nachteil das dieser Link kopiert werden könnte und jeder die Datei einfach herunterladen kann. Schlecht wenn das vielleicht eigentlich nur registrierte Mitglieder dürfen sollen.
Also muss eine andere Lösung her. Hier wieder mein Weg nach Rom ;-)

$UploadFolder = "./uploads/"; //Name des Ordners mit der Downloaddatei
$FileName = "musterdatei.pdf"; //Name der Downloaddatei

header("Content-Type: ".$mimeType);
header("Content-Length: ".filesize($UploadFolder.$FileName));
header("Content-Disposition: attachment; filename="".$FileName.""");
readfile($UploadFolder.$FileName);
exit;

Ja, das war es schon ;-) Aber es ist etwas komplizierter als es auf den ersten Blick scheint. Ich denke die ersten beiden Variablen sind klar. Der Content-Type beschreibt die Datei. Ob es ein Bild, PDF, Word-Dokument oder sonst was ist. Am besten ist hier diesen beim Upload gleich mit zu speichern. Denn das ist der einzige Zeitpunkt wo Du den Content Type “geliefert” bekommst. Sonst könnte man ihn noch über die Dateierweiterung rausbekommen.

Content-Length ist die Länge der Datei. Vorsicht, nicht wirklich die Größe. Da 1 Zeichen aber einem Byte entspricht – wie praktisch – können wir einfach die Dateigröße in Byte (!) angeben. ;-)

Bei Content-Disposition wird einfach gesagt Dateianhang und den Dateinamen. Hier muss nicht der Originale Dateiname angegeben werden, es könnte auch ein fiktiver angegeben werden.

Und zu guter letzt noch mit readfile die Datei einlesen und gleichzeitig ausgeben.

Ganz wichtig ist hier noch das vor diesem Code keine Ausgabe an den Browser gemacht werden darf. Am besten ist es für den Download eine eigene Datei zu erstellen und vor diesem Code nur das nötigste zu tun. Zum Beispiel checken ob der User, der den Download starten möchte, auch die Berechtigung hat oder die Variablen aus einer Datenbank auslesen. Aber keinerlei ausgaben an den Browser machen, sonst erscheinen ganz viele komische Zeichen im Browser ;-)

Frohes neues Jahr 2011 & meine Liste für 2011

Hallo liebe Lebenden,

ich wünsche euch allen ein frohes, gutes, gesundes, erfolgreiches und einfach super Jahr 2011!

Hello friends,

I wish you all a happy, good, healthy, successful and just a great year 2011!

Weiterlesen