Archiv für die Kategorie ‘Programmierung’
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> |
<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.
Abgelegt in HTML, Javascript, PHP, Programmierung | Keine Kommentare »
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)); |
$sprache = 'deutsch';
echo constant('DIV_STRING_'.strtoupper($sprache));
Abgelegt in PHP, Programmierung | Keine Kommentare »
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 |
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
Tags:einfügen, include, mit, PHP, speichern, variable
Abgelegt in PHP, Programmierung | Keine Kommentare »
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); |
$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); |
$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. ;)
Tags:bb, bbcode, code, ersetzen, funktion, PHP, preg_replace, preg_replace_callback, string, str_replace
Abgelegt in PHP, Programmierung | Keine Kommentare »
Donnerstag, 26. März 2009
Häufig möchte man einen oder mehrere zufällige Datensätze aus einer mySQL Datenbank auslesen. Man könnte nun alle Datensätze auslesen und diese dann mit PHP randomisieren und limitieren, dies wäre jedoch performancetechnischer Wahnsinn.
Eine Einfache Lösung ist, dass man bereits alles in der mySQL Abfrage erledigt:
$x = 3;
$sql = "SELECT spalte1,
spalte2,
spalte3
FROM tabelle
ORDER BY RAND()
LIMIT ".$x;
$query = mysql_query($sql); |
$x = 3;
$sql = "SELECT spalte1,
spalte2,
spalte3
FROM tabelle
ORDER BY RAND()
LIMIT ".$x;
$query = mysql_query($sql);
Durch „ORDER BY RAND()“ werden zufällige Datensätze aus der mySQL Datenbank ausgelesen. LIMIT $x bestimmt wieviele solcher Datensätze ausgegeben werden.
In unserem Falle werden nun 3 zufällige Datensätze aus der mySQL Datenbank ausgegeben.
Abgelegt in mySQL, PHP, Programmierung | 1 Kommentar »
Montag, 23. März 2009
Diese Überschrift klingt ja furchtbar kompliziert und auch irgendwie sinnlos. Sehr praktisch ist dies jedoch, wenn man zum Beispiel
- Zeilen abwechselnd farblich hervorheben möchte
- Eine beliebige Anzahl an Tabellenspalten pro Zeile ausgeben möchte
Beispiel 1: Zeilen farblich hervorheben:
$str = '<table cellpadding="0" cellspacing="0" border="0">';
for($i=1; $i<=10; $i++) {
$class = $i%2 == 0 ? 'gerade' : 'ungerade';
$str.= ' <tr class="'.$class.'">';
$str.= ' <td>Zeile '.$i.' - '.$class.'</td>';
$str.= ' </tr>';
}
$str.= '</table>';
echo $str; |
$str = '<table cellpadding="0" cellspacing="0" border="0">';
for($i=1; $i<=10; $i++) {
$class = $i%2 == 0 ? 'gerade' : 'ungerade';
$str.= ' <tr class="'.$class.'">';
$str.= ' <td>Zeile '.$i.' - '.$class.'</td>';
$str.= ' </tr>';
}
$str.= '</table>';
echo $str;
Wenn Ihr nun im css-Stylesheet für gerade und ungerade eine unterschiedliche Hintergrundfarbe oder ähnliches habt, so wird diese auch unterschiedlich angezeigt.
Ein Beispiel: Die Artikelauflistung auf Gamespot.at
Beispiel 2: Eine beliebige Anzahl an Spalten pro Zeile ausgeben:
$rowBreak = 3; // Wir möchten nach 3 Spalten eine neue Zeile beginnen
$str = '<table cellpadding="0" cellspacing="0" border="1">';
$str.= ' <tr>';
for($i=1; $i<=20; $i++) { // wir geben 20 x-beliebige Datensätze aus
$str.= ' <td>Spalte '.$i.'</td>';
if($i%$rowBreak == 0) { // nach $rowBreak Spalten eine neue Zeile beginnen
$str.= ' </tr>
<tr>';
}
}
$str.= '</table>';
echo $str; |
$rowBreak = 3; // Wir möchten nach 3 Spalten eine neue Zeile beginnen
$str = '<table cellpadding="0" cellspacing="0" border="1">';
$str.= ' <tr>';
for($i=1; $i<=20; $i++) { // wir geben 20 x-beliebige Datensätze aus
$str.= ' <td>Spalte '.$i.'</td>';
if($i%$rowBreak == 0) { // nach $rowBreak Spalten eine neue Zeile beginnen
$str.= ' </tr>
<tr>';
}
}
$str.= '</table>';
echo $str;
Tags:automatisch, farben, hervorheben, markieren, modulo, modulus, operator, PHP, spalte, tabelle, umbruch, unterschiedlich, zeile
Abgelegt in PHP, Programmierung | Keine Kommentare »
Montag, 23. März 2009
Eine weitere einfache und ideale Methode seine Emailadressen gegen Bots zu schützen ist diese einfach in ein Bild zu verwandeln:
$text = "PromaDesign.com";
$pic=ImageCreate(130,30); // breite, höhe
$col1=ImageColorAllocate($pic,0,0,0);
$col2=ImageColorAllocate($pic,255,255,255);
ImageFilledRectangle($pic, 0, 0, 500, 30, $col2);
ImageString($pic, 3, 5, 8, $text, $col1);
Header("Expires: Mon, 23 Jul 2009 05:00:00 GMT");
Header("Content-type: image/jpeg");
ImageJPEG($pic);
ImageDestroy($pic); |
$text = "PromaDesign.com";
$pic=ImageCreate(130,30); // breite, höhe
$col1=ImageColorAllocate($pic,0,0,0);
$col2=ImageColorAllocate($pic,255,255,255);
ImageFilledRectangle($pic, 0, 0, 500, 30, $col2);
ImageString($pic, 3, 5, 8, $text, $col1);
Header("Expires: Mon, 23 Jul 2009 05:00:00 GMT");
Header("Content-type: image/jpeg");
ImageJPEG($pic);
ImageDestroy($pic);
Tags:adresse, auslesen, bot, email, PHP, schutz, schützen, spam, webseite
Abgelegt in PHP, Programmierung | Keine Kommentare »
Montag, 23. März 2009
Dieses Script codiert die Emailadressen im Quellcode, so dass sie von Bots nicht ausgelesen werden können. Wir bieten HIER auch eine JavaScript Variante diesbezüglich an.
function noSpam($mail) {
$str = '';
$arr = explode("\r\n",chunk_split($mail,1),strlen($mail));
for($i=0;$i<count($arr);$i++) {
$str.= '&#'.ord($arr[$i]).';';
}
return '<a href="mailto:'.$str.'">'.$str.'</a>';
}
echo noSpam('info@promadesign.com'); |
function noSpam($mail) {
$str = '';
$arr = explode("\r\n",chunk_split($mail,1),strlen($mail));
for($i=0;$i<count($arr);$i++) {
$str.= '&#'.ord($arr[$i]).';';
}
return '<a href="mailto:'.$str.'">'.$str.'</a>';
}
echo noSpam('info@promadesign.com');
Tags:adresse, bot, email, Javascript, schutz, schützen, spam, webseite
Abgelegt in PHP, Programmierung | Keine Kommentare »
Montag, 23. März 2009
Jeder weiss wie lästig es ist, wenn man jeden Tag mehrere Spam Emails erhält. Leider ist das immer häufiger der Fall, da Bots, das sind eigens programmierte Skripte, Emailadressen aus dem Quellcode von Webseiten auslesen. Das ist recht einfach indem man mit einer RegEx nach einem bestimmten Muster im Text sucht, welches zb. ein @ enthält. Wir werden nun die Links zu Emailadressen so darstellen, dass dem Bot eine falsche Emailadresse vorgegaukelt wird. In den bereich der seite binden wir unser JavaScript ein, welches später die Emailadresse korrekt ausgibt:
<script language="JavaScript1.2">
function mailsend(mail,p1,p2,p3) {
var ca;
ca = "mailto:" + p2 + "\@" + p3 + "." + p1;
mail.href = ca;
return (1);
}
</script> |
<script language="JavaScript1.2">
function mailsend(mail,p1,p2,p3) {
var ca;
ca = "mailto:" + p2 + "\@" + p3 + "." + p1;
mail.href = ca;
return (1);
}
</script>
Nun müssen wir nur noch die links im wie folgt formatieren:
<a href="mailto:no.bot.can@get.us" onClick="mailsend(this,'tld','name','domain');">Email</a> |
<a href="mailto:no.bot.can@get.us" onClick="mailsend(this,'tld','name','domain');">Email</a>
Es müssen nur die Platzhalter tld (Top Level Domain wie .com, .at, …), name und domain ersetzt werden. Ein Beispiel:
<a href="mailto:no.bot.can@get.us" onClick="mailsend(this,'com','info','promadesign');">Email</a> |
<a href="mailto:no.bot.can@get.us" onClick="mailsend(this,'com','info','promadesign');">Email</a>
Der Bot welcher den Quellcode ausliest liest die Emailadresse „no.bot.can@get.us“ aus. Der User welcher aber auf den Link „Email“ klickt bekommt die korrekte Emailadresse zu sehen.
Tags:adresse, bot, email, Javascript, schutz, schützen, spam, webseite
Abgelegt in HTML, Javascript, Programmierung | Keine Kommentare »
Montag, 23. März 2009
Wir werden nun eine Funktion erstellen, welche uns einen beliebigen Ordner rekursiv ausliest. Das heisst dass die Ordnerstruktur und die Tochterstrukturen ausgelesen und dargestellt werden. wir wollen mit dem aufbau der funktion beginnen:
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
echo $file.'<br>';
}
closedir($dh);
} |
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
echo $file.'<br>';
}
closedir($dh);
}
function getDir($dir) sollte klar sein. Die Funktion getDir wird erstellt und die Variable $dir wird übergeben. $dh = opendir($dir) öffnet den Ordner $dir und speichert die Information im Directory Handle $dh. while($file = readdir($dh)) ist eine Schleife welche das Directory Handle durchwandert und bei jedem Eintrag die Variable $file füllt. Mit echo $file geben wir diesen Wert von $file zurück. Ganz wichtig ist es dass der Ordner wieder geschlossen wird: closedir($dh); Nun werden aber auch . und .. ausgegeben. Das können wir verhindern indem wir eine IF-ELSE Kondition einbinden:
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
echo "$file (file)<br>";
}
}
closedir($dh);
} |
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
echo "$file (file)<br>";
}
}
closedir($dh);
}
Nun erhalten wir schon eine ganze „Wurst“ an Namen, aber wir möchten gern wissen ob es sich bei dem jeweiligen Eintrag um einen Ordner oder eine Datei handelt. Das können wir mit einer weiteren IF-ELSE Kondition erreichen:
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$file [DIR]<br>";
} else {
echo "$file (file)<br>";
}
}
}
closedir($dh);
} |
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$file [DIR]<br>";
} else {
echo "$file (file)<br>";
}
}
}
closedir($dh);
}
Mit if(is_dir()) prüfen wir ob es sich bei dem Eintrag um einen Ordner handelt. Wenn ja, wird der Eintrag mit einem [DIR] dahinter ausgegeben. Wenn nicht, handelt es sich um eine Datei und der Eintrag wird mit einem (file) ausgegeben. Bisher haben wir aber nur den Ordner ausgelesen welchen wir bestimmt hatten. Uns interessieren aber auch noch die Unterordner und dessen Inhalte. Jetzt sind wir bei der Rekursivität angelangt. Wir werden, sofern es sich bei einem Eintrag um einen Ordner handelt unsere Funktion getDir() veranlassen sich selbst aufzurufen:
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$file [DIR]<br>";
getDir("$dir/$file");
} else {
echo "$file (file)<br>";
}
}
}
closedir($dh);
} |
function getDir($dir) {
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$file [DIR]<br>";
getDir("$dir/$file");
} else {
echo "$file (file)<br>";
}
}
}
closedir($dh);
}
Nun ist das Ganze schon recht informativ, sieht aber sehr unübersichtlich aus. Eine lange Auflistung ohne Struktur. Wir werden nun die Ausgabe so formatieren dass jeder Unterordner und dessen „Inhalt“ eingerückt und mit einem – gekennzeichnet wird. Wir übergeben zu diesem Zweck eine Variable $pre mit dem gewünschten Startwert. mit $pre.= „-“ wird dieser Startwert bei jedem erneuten Aufruf der Funktion um den angegebenen Wert erweitert, was dazu führt dass jeder Unterordner mit seinem Inhalt eingerückt und markiert ist.
function getDir($dir,$pre) {
$pre.= "-";
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$pre $file [DIR]<br>";
getDir("$dir/$file",$pre);
} else {
echo "$pre $file (file)<br>";
}
}
}
closedir($dh);
} |
function getDir($dir,$pre) {
$pre.= "-";
$dh = opendir($dir);
while($file = readdir($dh)) {
if($file != "." && $file != "..") {
if(is_dir("$dir/$file")) {
echo "$pre $file [DIR]<br>";
getDir("$dir/$file",$pre);
} else {
echo "$pre $file (file)<br>";
}
}
}
closedir($dh);
}
Tags:auslesen, ordner, PHP, rekursiv, tutorial
Abgelegt in PHP, Programmierung | 6 Kommentare »