mi-schi.com

21. Juni 2008

Programm für Taschenrechner schreiben

Abgelegt unter: TI Taschenrechner — Tags:, , , — admin @ 20:41

Ich beschriebe im Folgenden kurz und kompakt, wie man ein Programm in der Sparche TI-Basic für Taschenrechner von Texas Instrument, wie den TI 89 Titanium oder TI Voyage 200, schreibt oder bearbeitet.

Alles mit dem Taschenrechner schreiben:
Man kann alle TI-Basic Programme Mobil, aber ohne Komfort, auf dem Taschenrechner programmieren.

Die Reihenfolge, um ein neues Programm auf dem Taschenrechner in TI-Basic zu schreiben:

  1. Applikation Programm Editor öffnen -> 3:New…
  2. Type: Program (kann alle Funktionen benutzen, Ausgabe im PrgmIO) oder Function (kann nur wenige Funktionen benutzen, Ausgabe direkt, also bei Aufruf im Home-Menü wird im Home-Menü ausgegeben)
  3. Folder: Ordner, indem das Programm gespeichert werden soll
  4. Variable: Name des Programmes, über diesen Namen wird es später z.B. im Home-Menü aufgerufen, Name darf maximal 8 Zeichen lang sein
  5. zwischen Prgm (Func) und EndPrgm (EndFunc) den eigenen Programmcode schreiben

Die Reihenfolge, um ein bereits bestehendes Programm in TI-Basic auf dem Taschenrechner zu bearbeiten:

  1. Programm ggf. aus dem Archiv holen (geht mit [2ND] + [VAR-LINK] -> Programm auswählen -> [F4] -> [F1] + [9])
  2. Applikation Programm Editor öffnen -> 2:Open…
  3. Programm, richtigen Type, Ordner, indem sich das Programm befindet und Programmnamen auswählen
  4. Code zwischen Prgm (Func) und EndPrgm (EndFunc) bearbeiten, es wird automatisch gespeichert

Mit wesentlich mehr Komfort und dazu schneller kann man auch TI-Basic Programme mit dem Computer schreiben oder bearbeiten. Dazu braucht man die englisch/französische Software TI-Edit, ein Verbindungskabel vom Taschenrechner zum Computer und die Software zum Übertragen von Daten zwischen Computer und Taschenrechner, TI-Connect.

Mit dem TI-DeviceExplorer kann man sich die Ordnerstruktur und die Dateien auf dem Taschenrechner anzeigen lassen. Das Übertragen funktioniert einfach per Drag and Drop. Die Programme in TI-Basic für die Taschenrechner von Texas Instrument kann man mit TI-Edit schreiben oder bearbeiten. Dieser Editor ist in Englisch und hat einen Syntaxhighliting. Zum Ausprobieren der Programme auf dem Computer empfehle ich den TI-Emulator.

Mit dem TI-Handbuch kann man TI-Basic lernen. Das Handbuch von Texas Instrument ist bei TI-Basic die einzige deutsche Anlaufstelle. Eine sehr kurze Anleitung gibt es aber auch bei Wikipedia.

15. Juni 2008

Template mit Passwort schützen

Abgelegt unter: Wordpress — Tags:, , , — admin @ 12:46

Ich war ja bei meiner Internetrecherche verwundert, warum sich noch niemand gefragt hat, wie man ein selbst erstelltes Wordpress Template mit einem Passwort schützen kann.

Templates in Wordpress sind was feines. Man hat einen eigenen PHP-Code und will den irgendwie auf seine Seite bekommen. Einfach ein Template erstellen:

1 <?php
2 /*
3 Template Name: hier-der-Template-Name
4 */
5 ?>
 

Dann speichern und in den verwendeten Theme-Ordner hochladen. Wenn man den Header, Footer, die Sidebar, sowie Kommentare auf der Templateseite mit anzeigen lassen will, kann man sich einfach mal den PHP-Code des Standardtemplates anschauen und ggf. kopieren. Unter Schreiben -> Seite -> Seiten-Template kann man dann sein eigenes Template auswählen und somit das eigene Script in das Wordpress-System eingliedern.

Soweit so gut, ist ja alles sehr einfach. Aber nun wollte ich ein Template mit dem Wordpress-Passwortschutz (bei Seite -> “Diese Seite mit einem Passwort versehen”) schützen. Das geht aber nicht so einfach, da man im Template ja erstmal herausbekommen muss, ob es ein Passwortschutz gibt, ob schon ein Cookie erstellt wurde und was sonst angezeigt werden soll (Loginformular).

Kurzerhand mal in die Wordpress-Funktion the_content() geschaut, die das für alle anderen Inhaltsausgaben (Artikel/Seiten) entscheidet und den Code kopiert und etwas angepasst:

 1 <?php
 2 /*
 3 Template Name: hier-der-Template-Name
 4 */
 5 ?>
 6 
 7 <?php get_header(); ?>
 8 <div id="content">
 9 <h2><?php the_title(); ?></h2>
10 <?php
11 function template_funktion() {
12 // hier der Code; PHP/HTML
13 }
14 $output = '';
15 if ( !empty($post->post_password) ) { // if there's a password
16     if ( !isset($_COOKIE['wp-postpass_'.COOKIEHASH]) ||
            stripslashes($_COOKIE['wp-postpass_'.COOKIEHASH])
            != $post->post_password ) {    // and it doesn't match the cookie
17         echo get_the_password_form();
18     } else {
19         template_funktion();
20     }
21 } else {
22     template_funktion();
23 }
24 ?>
25 </div><!-- End Content -->
26 <?php get_sidebar(); ?>
27 <?php get_footer(); ?>
 

Ich habe das Template mit einer Extra-Funktion (template_funktion()) erstellt, damit ich nur einmal meinen Code habe und ggf. auch nur einmal ändern muss. Man kann aber auch bei template_funktion(); zweimal den eigenen Code einfügen.

Mein Wordpress-Theme wird bei dem Code oben durch <?php get_header(); ?>, <?php get_sidebar(); ?>, <?php get_footer(); ?> mit angezeigt.

22. März 2008

Kontaktformular mit benutzerfreundlichen Spamschutz und Spam-Sicherheit

Abgelegt unter: Webdesign — Tags:, , — admin @ 17:14

Da ich leider immer wieder unsichere, schlechte Vorlagen für Kontaktformulare im Internet finde, veröffentliche ich hier das Kontaktformular meines Content Management Systems.

Funktionsumfang

  1. Script ist mit der UTF-8 Kodierung kodiert
  2. Script funktioniert bei allen Server-Konfigurationen (magic_quotes_gpc)
  3. einfache Überprüfung der E-Mailadresse
  4. E-Mail Spamschleuder Schutz
  5. benutzerfreundlicher, barrierefreier Spamschutz
  6. verhindert doppeltes Abschicken der E-Mail hintereinander.
  7. Felder werden untersucht, ob Text eingetragen wurde
  8. Sicherung der eingegebenen Werte bei falscher Eingabe eines Feldes

Umsetzung im Script

  1. Da mein komplettes Content Management System in UTF-8 Kodiert ist, habe ich natürlich auch das Kontakt-Script in UTF-8 kodiert. Da die meisten E-Mailaccounts UTF-8 aber noch nicht richtig unterstützen, musste ich mit utf8_decode() die Eingaben in ISO-8859-1 dekodieren und so abschicken.
  2. Manche Server sind so eingestellt, dass sie automatisch bei Anführungszeichen und Backslashs ein Backslash davor schreiben. Diese Server-Einstellung wird mit der Funktion quotes() untersucht und ggf. die überflüssigen Backslashs wieder entfernt.
  3. Die angegebene E-Mailadresse wird auf das Vorhandensein des @-Zeichens und des Punktes (.) untersucht. Es gibt noch weitaus intensivere Untersuchungen bei der E-Mailadresse. Diese verwende ich allerdings nicht, weil meistens ganze E-Mailblöcke (z.B. bestimmte Endung) nicht zugelassen werden. strstr($_POST['email'], “@”) && strstr($_POST['email'], “.”)
  4. Dieser Schutz wird fast immer vergessen, ist aber extrem wichtig. Denn wenn dieser Schutz nicht vorhanden ist, kann das Formular als Spamschleuder (Massen-E-Mails) genutzt werden und der Verantwortliche ist der Script-Benutzer, also der Webmaster des Accounts! Der Code für den Spamschleuder-Schutz: $emailsicherheit = preg_split("/[\s,]/”, quotes($_POST['email']));. Wie man die E-Mailadresse manipulieren kann erkläre ich nicht, aus Rücksicht auf Webmaster, die diesen Schutz nicht haben.
  5. Bei dem Kontaktformular gibt es kein nerviges Captcha-Bild. Es wird die Zeitspanne zwischen dem Aufrufen der Seite und dem Abschicken untersucht. Das reicht schon aus, um die meisten Spambots fern zu halten.
  6. Über die Methode die Zeit zu messen wird auch das versehentliche doppelte Abschicken des Formulars verhindert. Weiterhin werden die Eingabefelder nach dem Verschicken der E-Mail gelöscht.
  7. Standard bei fast allen Kontaktformularen ist die Überprüfung, ob überhaupt Text in den Eingabefeldern steht.
  8. Wenn man etwas vergessen hat einzugeben und abschickt, sind bei schlecht geschriebenen Kontaktformularen die Eingaben weg. Bei diesem Kontaktformular nicht: <?php if (isset($_POST['name']) && empty($gesendet)) { echo quotes(htmlentities($_POST['name'], ENT_QUOTES, “UTF-8″)); } ?>
Das Script anschauen: sicheres Kontaktformular

9. März 2008

MySQL suchen und ersetzen

Abgelegt unter: Webdesign — Tags:, — admin @ 17:40

Man möchte in einer Datenbanktabelle (zum Beispiel nach einem Domainumzug) allgemein in einer Datenbanktabelle immer einen Ausdruck (hier eigener Domainname) mit einem anderen ersetzen? Das geht ganz einfach mit MySQL und man muss sich nicht mal ein PHP-Script basteln:

1 UPDATE datenbanktabellenname SET datenbanktabellenspalte
  = replace(datenbanktabellenspalte, 'suchstring', 'ersatzstring')

Anwendungsbeispiel:

1 UPDATE seiten SET text = replace(text, 'www.mi-schi.net', 'www.mi-schi.com')
  WHERE seite = 'Startseite'

12. Februar 2008

Bild in Tabelle, Pixel für Pixel ausgeben, Kopierschutz

Abgelegt unter: Webdesign — Tags:, , — admin @ 17:56

Einen wirklich sicheren Kopier-Schutz für Bilder gibt es im Internet nicht. Ich veröffentliche hier aber mal einen PHP-Code, mit dem man ein Bild einlesen und in einer Tabelle Pixel für Pixel wieder ausgeben kann. Dadurch können mögliche Raub-Kopierer das Bild nicht einfach mit der linken Maustaste auf ihrem Computer speichern. Es gibt aber noch weitere Methoden, die ich hier nicht beschreibe, mit denen man trotzdem Bilder auf dem eigenen Computer speichern kann.

<?php
$bild
= imagecreatefromjpeg(“../back/images/logo.jpg”);
$bildbreite = imagesx($bild);
$bildhoehe = imagesy($bild);
echo
‘<table border=”0″ cellpadding=”0″ cellspacing=”0″ summary=”Bildlogo”>’ . “n”;
for(
$i = 0; $i < $bildhoehe; $i++) {
echo
‘<tr>’;
for (
$o = 0; $o < $bildbreite; $o++) {
$rgb = imagecolorat($bild, $o, $i);
$rgbwert = imagecolorsforindex($bild, $rgb);
echo
‘ <td style=”background-color:rgb(’;
echo
$rgbwert['red'] . ‘,’ . $rgbwert['green'] . ‘,’ . $rgbwert['blue'] . ‘);’;
echo
‘ height:1px; width:1px;”>’;
echo
‘</td>’;
}
echo
“</tr>n”;
}
echo
‘</table>’;
?>

Das Beispielbild, oder besser gesagt die Tabelle lädt im Gegensatz zum Bild viel länger. Ältere Computer könnten sogar durch die hohe CPU-Belastung abstürzten. Die PHP-Datei mit der Tabelle ist mehr als 1,5 MB groß, das Bild selber unter 7 KB! Dadurch warten Modem-Benutzer ewig.

Ältere Artikel »

Powered by WordPress ( WordPress Deutschland )