Archiv für die Kategorie ‘PHP’

ISO-8859 zu UTF8 – So einfach geht es ohne Hindernisse

Sonntag, 07. Februar 2016

Wer kennt es nicht. Überall ist UTF8 nun auf dem Vormarsch. Die Umstellung darauf ist jedoch meist mit komischen Ausgaben von Sonderzeichen und/oder Hieroglyphen begleitet.

Wenn ihr folgende Dinge beachtet, so wird man von diesen bösen Überraschungen verschont:

  1. In der .htaccess „AddDefaultCharset utf-8“ eingeben
  2. In php im Header „header(„Content-Type: text/html; charset=utf-8“);“ eingeben
  3. In php bei der Datenbankverbindung „mysql_query(„SET character_set_results = ‚utf8‘, character_set_client = ‚utf8‘, character_set_connection = ‚utf8‘, character_set_database = ‚utf8‘, character_set_server = ‚utf8′“, $DBVERBINDUNG);“ eingeben. Alternativ klappt es auch schon mit der einfacheren Variante „mysql_set_charset(‚utf8‘,$DBVERBINDUNG);
  4. Im HTML-Header „<meta http-equiv=“Content-Type“ content=“text/html; charset=utf-8″>“ eingeben
  5. Die Zeichensätze in der MySQL Datenbank, als auch alle Tabellen und Spalten auf „utf8_general_ci “ ändern.

Und schon sollte es ohne Anzeigenprobleme laufen.

Korrektes Einrichten und Pfad zum Passwortschutz mittels htaccess

Montag, 28. April 2014

Will man einen Ordner mittels .htaccess Datei schützen, so benötigt man initial den korrekten Pfad zur Datei. Dies Datei gehört direkt in den Ordner den man schützen will und muss den relativen Pfad angegeben haben! Das ist essentiell, da die Funktion sonst nicht gegeben ist.

Wenn man den Pfad nicht weiss, so kann man sich mit einem einfachen PHP-Skript helfen. Einfach eine leere Seite erstellen, folgenden Code eingeben und als test.php im selben Ordner wie die .htaccess Datei abspeichern:

<?php echo echo dirname(__FILE__).'/'; ?>

Diesen Pfad gibt man dann in der .htaccess ein.

WORDPRESS: Fehlermeldung bei Update oder Installation eines neuen Themes – Workaround / Bugfix

Sonntag, 02. Februar 2014

Seit geraumer Zeit gibt es häufig Probleme wenn man WordPress updaten will oder auch ein Theme installieren und/oder updaten möchte.

Man erhält dann folgende Fehlermeldung:

Download fehlgeschlagen. SSL: certificate subject name ‚*.wordpress.org‘ does not match target host name ‚wordpress.org‘

Dies kann man umgehen indem man in der Datei „/wp-includes/class-http.php“ „sslverify“ von „true“ auf „false“ setzt. Das ganze sieht dann so aus:

$defaults = array(
  'method' => 'GET',
  'timeout' => apply_filters( 'http_request_timeout', 5),
  'redirection' => apply_filters( 'http_request_redirection_count', 5),
  'httpversion' => apply_filters( 'http_request_version', '1.0'),
  'user-agent' => apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ),
  'reject_unsafe_urls' => apply_filters( 'http_request_reject_unsafe_urls', false ),
  'blocking' => true,
  'headers' => array(),
  'cookies' => array(),
  'body' => null,
  'compress' => false,
  'decompress' => true,
  'sslverify' => false,
  'sslcertificates' => ABSPATH . WPINC . '/certificates/ca-bundle.crt',
  'stream' => false,
  'filename' => null,
  'limit_response_size' => null,
);

MAC: Programmieren mit dem Apple Mac – korrekte Einstellung der Kodierung / Kollation

Mittwoch, 10. Oktober 2012

Wer mit dem Mac programmiert wird oft vor das Problem gestellt dass Umlaute usw. falsch ausgegeben werden. Wie codiere ich also Dateien richtig um sie korrekt auszugeben?

Beim Editor (Empfehlung: TextWrangler) sollte man die Einstellung „Western (ISO Latin 1)“ (WICHTIG: nicht zu verwechseln mit „Western Windows Latin 1“!!!) wählen. Für korrekte Zeilenumbrüche sollte „Unix (LF)“ ausgewählt werden.

In der Datenbank und generell am Server muss man die Kollation auf „utf8_general_ci“ stellen.

Mit diesen Einstellungen sollte alles einwandfrei funktionieren.

Xampp / Apache: Bestimmte Dateien aus dem Directory Listing ausblenden

Samstag, 03. März 2012

Wer einen Mac hat und Xampp mit der Direktive Options Indexes laufen hat wird sich ärgern dass ständig die .DS_Store Dateien in der Auflistung erscheinen. Hierzu gibt es eine einfach Abhilfe.
Einfach in der httpd.conf Datei folgendes unterhalb von Options Indexes einfügen:

IndexIgnore *.DS_Store

Und schon werden die lästigen .DS_Store Dateien nicht mehr angezeigt. Das funktioniert natürlich auch mit allen anderen Dateiarten (beispielsweise *.txt usw.).

Xampp / Apache: Directory Listing zulassen

Samstag, 03. März 2012

Um bei Xampp oder Apache Servern auch die Dateien anzuzeigen wenn KEINE index.html oder index.php Datei vorhanden ist, so muss man in der httpd.conf Datei einfach Options -Indexes wiefolgt ändern:

Options Indexes FollowSymLinks ExecCGI Includes

2 Formulare zugleich abschicken

Donnerstag, 30. Juli 2009
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function submit_all()
{
  t=document.createElement('div');
  t.style.display='none';
  for(i=0;i<document.forms.length;++i)
    {
 
      if(document.forms[i]!=document.getElementById('send'))
        {
          t.appendChild(document.forms[i].getElementsByTagName('div')[0].cloneNode(true));
        }
      else
        {
          t=document.forms[i].appendChild(t.cloneNode(true))
        }
    }
  document.getElementById('send').submit();
  return false;
}
//-->
</script>
</head>
<body>
 
<?php
//Kontrolle der gesendeten Daten 
print_r($_FILES);
print_r($_POST);
?>
 
<form id="send" enctype="multipart/form-data" method="post" onsubmit="return submit_all()"><input type="hidden" name="phpMyAdmin" value="omnWr6jrnJ0Xkj5GYNg3tUj%2C1mf" />
  <div>
    <input name="foobar" type="file">
  </div>
  <input type="submit">
</form>
<form  method="post" onsubmit="return submit_all()"><input type="hidden" name="phpMyAdmin" value="omnWr6jrnJ0Xkj5GYNg3tUj%2C1mf" />
  <div>
    <input name="foo">
  </div>
  <input type="submit">
</form>
<form method="post" onsubmit="return submit_all()"><input type="hidden" name="phpMyAdmin" value="omnWr6jrnJ0Xkj5GYNg3tUj%2C1mf" />
  <div>
    <input name="bar">
  </div>
  <input type="submit">
</form>
 
 
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1691844-1";
urchinTracker();
</script>
</body>
</html>

Wichtig ist dabei:
1. jedes Formular enthält als 1. Kindelement ein < div>….in dieses müssen alle Formularelemente hinein, die immer gesendet werden sollen
2. das Formular, welches das File-Upload-Feld enthält, muss die ID „send“ haben(je nach Browser werden beim clonen nicht die Eingaben in File-Upload-Feldern mitgeclont, deswegen muss immer das Formular mit dem Upload-Feld gesendet werden….bedeutet auch gleichzeitig, dass es nur 1 Formular mit Upload-Feldern geben kann)
3. bei der Benennung der Formularfelder musst du berücksichtigen, dass es nicht gleichnamige Felder geben darf, sonst gehen Daten verloren, da nur das jeweils letzte übermittelt wird.

Konstante mittels String aufrufen

Samstag, 04. Juli 2009

Manchmal hat man das Problem dass eine definierte Konstante aufgerufen werden soll, jedoch aus einer dynamischen Abfrage. Beispielsweise hat man einen String für ein DIV („DIV_STRING“) in mehreren Sprachen definiert und möchte dies nun dynamisch, je nach gerade aktiver Sprache abfragen (beispielsweise DIV_STRING_DEUTSCH).
Das ist so ganz einfach zu lösen:

$sprache = 'deutsch';
echo constant('DIV_STRING_'.strtoupper($sprache));

PHP Datei mittels include() in eine Variable einlesen

Freitag, 03. Juli 2009

Oft ist es so, dass man eine Datei inkludieren möchte, diese jedoch in einer Variable zwischengespeichert werden soll. Mit fread() würde das ganz einfach klappen. Es könnte aber sein dass die zu inkludierende Datei beispielsweise PHP-Code enthält und somit vorher ausgeführt werden muss.

Das funktioniert dann auf folgende Weise:

ob_start();  // Buffer start
include('file.php');  // file.php ist nun im Buffer gespeichert
$var = ob_get_contents();  // Der Buffer wird in die Variable $var übertragen
ob_end_clean();  // Buffer löschen
echo $var;  //$var kann nun weiter verwendet werden

BB-Code auf eigener Webseite mittels Callback Funktion

Freitag, 27. März 2009

Um einen BB-Code auf der eigenen Webseite einzubinden kann man ganz einfach vorgehen, nämlich mit preg_replace():

$text = $preg_replace('/\[b\](.*?)\[\/b\]/is', '<b>//1</b>', $text);

Wenn man nun jedoch Funktionen im Ersatz aufrufen möchte, wie zum Beispiel wenn man PHP-Code highlighten will, so muss man auf eine andere Funktion zurückgreifen: preg_replace_callback(). Um sich hier eine externe Funktion zu ersparen kann man wiederum die Funktion create_function() verwenden:

$text = preg_replace_callback("/\[php\](.*?)\[\/php\]/is", create_function('$hits', 'return highlight_string(preg_replace(\'/\[php\](.*?)\[\/php\]/is\', \'\\1\', $hits[0]), 1);'), $text);

Schaut kompliziert aus… isses aber nicht. ;)