In diesem Thema landen alle Scripte oder Programme welche nützlich sein können aber nicht den Wert eines Tutorials haben. Diskussionen zu den Scripten sind hier nicht gewünscht, Anregungen sollten an den Ersteller per PN gesendet werden. Sofern ein Code einen groben Fehler enthält könnt ihr euch auch in die Bereichsmoderation wenden, damit dieser entfernt wird.
Codeschnipsel
Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!
Zu der Infoseite von „Die Mo-Mo-Manie“-
-
Das Salted Hashing stellt eine effektive Methode dar um Rainbow-Tables unwirksam zu machen. Anstatt den Hash eines Passworts direkt in der Datenbank zu speichern wird dieser vorher mit einer zufälligen Zeichenkette versalzen, das sorgt dafür, dass der Hash einzigartiger wird. Der Aufwand für den Angreifer steigt dabei enorm.
Der Salt sollte pro Datensatz unterschiedlich sein und muss jeweils mitgespeichert werden. Beim Prüfen des Passworts wird jetzt einfach der Hash aus der Datenbank genommen und mit der gleichen Methode verarbeitet. -
PHP
<?php$zahl = 3 #Die anzahl der Bilder hier angeben for($count = 1; $count <= $zahl; $count++) { $bildernamen = array("bild1.png", "bild2.gif", "http://SERVER.tld/bild3.jpg", "bild4.png"); #weitere bilder mit , "name" anhängen$zufall = array_rand($bildernamen); #array_rand() wählt ein zufälliges Element aus einem Array aus.echo '<img src="'.$bildernamen[$zufall].'">'; #Ausgabe des Bildes } ?>
Bei dem Obigen Script können sich Bilder doppeln, dies kann man mit dem Script unterhalb verhindenPHP
Alles anzeigen<?php $zahl = 3 #Die anzahl der Bilder hier angeben for($count = 1; $count <= $zahl; $count++) { $bildernamen = array("bild1.png", "bild2.gif", "http://SERVER.tld/bild3.jpg", "bild4.png"); #weitere bilder mit , "name" anhängen $zufall = array_rand($bildernamen); #array_rand() wählt ein zufälliges Element aus einem Array aus. while(!in_array($zufall, $ban)) { $zufall = array_rand($bildernamen); } echo '<img src="'.$bildernamen[$zufall].'">'; #Ausgabe des Bildes $ban[] = $zufall; } ?>
-
Naja,
Mit Diesem Script wird die Jahreszeit angezeigt:PHP
Alles anzeigen<?php $monat=date("n"); switch($monat) { case 12: case 1: case 2: echo "Winter.<br><br>"; break; case 3: case 4: case 5: echo "Frühling.<br><br>"; break; case 6: case 7: case 8: echo "Sommer.<br><br>"; break; case 9: case 10: case 11: echo "Herbst.<br><br>"; break; } ?>
Ausgabe: Herbst. -
Bei diesem Skript bekommt man Datum, Zeit vom Aufschlagen der Seite und eine passende Begrüßung xD
PHP
Alles anzeigen<html> <head> <title>1. Versuch</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <p> <?php echo "Es ist der " . date("j.n") . " im Jahr " . date("Y") . ".<br />"; echo "Du hast um Punkt " . date("H:i") . " Uhr und " . date("s") . " Sekunden diese Seite besucht.<br />"; ?> </p> <p> Hier steht immer die passende Begrüßung für deine aktuelle Uhrzeit: <?php if (date("H") < 11) { echo "<b>Guten Morgen</b>"; } elseif (date("H") < 14) { echo "<b>Mahlzeit!</b>"; } elseif (date("H") < 17) { echo "<b>Guten Tag</b>"; } else { echo "<b>Guten Abend!</b>"; } ?> </p> </body> </html>
Müsste funktionieren :D
-
Der % Operator arbeitet mit zwei Zahlen, a%b, und gibt den Rest von a/b zurück (modulo), z.B. 2%4 = 2, 4%4 = 0 und 5%4 = 1. Diese Operation verwendet Division, deshalb ist sie relativ langsam. Wenn möglich sollte man versuchen Multiplikationen zu verwenden, da dese imer schneller sind.
In bestimmten Situationen kann man Binär-Operationen (welche schneller sind) nutzen, die einzige Bedingung ist, das b (von a%b) zur Basis 2 dargestellt werden kann, also z.B. x%2 (2^1 = 2), x%4 (2² = 4), x%8 (2³ = 8), usw... Das einzige was man anpassen muss, wenn man & verwendet, ist dass man anstatt ‘b’, ‘b-1’ setzt.Zum Beispiel:
Der &-Operator vergleicht beide Zahlen bitweise, und zwar so: ist der bit in der ersten Zahl 1 und der entsprechende Bit in der zweiten Zahl auch, so wird der resultierende Bit auch 1. In jedem anderen Fall wird er 0.
Ich hoffe, das war lehrich genug für heute.
Chris -
-
Ich habe hier einen kleinen, einfachen C++ Skript :)
C
Alles anzeigen#include <iostream> #include <string> using namespace std; int main() { string ant1, ant2, ant3; cout << "Was ist deine Lieblingszahl? "; cin >> ant1; cout << "Was ist deine Lieblingsfarbe? "; cin >> ant2; cout << "Was ist dein Lieblingstier? "; cin >> ant3; cout << endl; cout << endl; cout << "Du warst also in deinem vorigem Leben ein/e " << ant2 << " " << ant3 << " mit " << ant1 << " Beinen :)" << endl; cin.get(); cin.get(); return 0; }
Wer einen Compiler hat, wird auch wissen was er mit dem Code und dem Compiler anstellen sollte damit er/sie das Programm benutzen kann xD
-
So wolte noch mal nen Schnipsle hier lassen. Diesmal getestet und er funkt.
rechner.phpPHP
Alles anzeigen<h2> Einnahme - Ausnahmen - Rechnung</h2> <form action="rechner.php" method="post"> Rechne dein Taschen Geld aus wie viel bleibt noch übrig?<br> <font size="6"><b> Wichtig:</b><br></font> Wen ihr den bedrak 34,78 schreiben wolt müst ihr als Komma einen punkt machen. <p>Einnahmen: <input type="text" name="a"> <br> Ausgaben: <input type="text" name="b"> </p> <input type="submit" value="Berechnen"> <?php $c =$_POST['a'] - $_POST['b']; echo "Das Ergebnis lautet: $c</p>"; ?>
wichtig ihr müsst es als php Datai abspeicher und ihn rechner.php nennen. Sons müstet ihr im der 2 zeile anstadt rechner.php schreiben wie ihr ihn gennant habt also so: name.php. Hoffe es gefäld euch. mit dem Code kann man z.B ausrechen wie viel taschen Geld mann noch hat wen man das ausgibt. naja brobiert es einfach mal aus. -
Und auch das gibt es bereits besser ausgearbeitet und ohne Rechtschreibfehler: http://www.bisaboard.de/index.…ge=Thread&threadID=101599
Warum musst du hier zu jedem Kapitel ein unnützes Schnipsel posten?e.: und das mit dem Komma stimmt auch nicht, das funktioinert mit nem Komma auch
-
Ich hab mal einen Taschenrechner mit c++ gemacht. Er kann ohne grafische Oberfläche Adiition, Subtraktio, Multiplikation und Divivsion. Mit mehreren Nachkommastellen!
C
Alles anzeigen#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #include <iostream> using namespace std; void start() { printf("Willkommen im Taschenrechner 1.0!"); printf("\tBy Niklas B.\n\n"); printf("Was fuer eine Rechnung wollen sie ausfuehren?\n\n\n"); printf("Druecken sie\n"); printf("\t1 fuer eine Addition,\n\t2 fuer eine Subtraktion,\n\t3 fuer eine Multiplikation,\n\t4 fuer eine Division\n\n\n"); } int main() { start(); double n; double x; double y; again: do{ printf("Bitte geben sie eine Zahl zwischen 1 und 4 ein...\n"); cin >> n; }while( (n < 1) || (n > 4) ); if( n == 1 ) { printf("Geben sie die 1. Zahl ein\n"); cin >> x; printf("Geben sie die 2. Zahl ein\n"); cin >> y; n = x + y; printf("Ergebnis = %f", n); } else if( n == 2 ) { printf("Geben sie die 1. Zahl ein\n"); cin >> x; printf("Geben sie die 2. Zahl ein\n"); cin >> y; n = x - y; printf("Ergebnis = %f", n); } else if( n == 3 ) { printf("Geben sie die 1. Zahl ein\n"); cin >> x; printf("Geben sie die 2. Zahl ein\n"); cin >> y; n = x * y; printf("Ergebnis = %f", n); } else if( n == 4 ) { printf("Geben sie die 1. Zahl ein\n"); cin >> x; printf("Geben sie die 2. Zahl ein\n"); cin >> y; n = x / y; printf("Ergebnis = %f", n); } while( !_kbhit() ) {}; printf("\n \n"); printf("Druecken sie 1 um noch eine rechnung durchzufuehren,\neine andere um den Taschenrechner zu beenden\n"); cin >> n; if( n == 1 ){ goto again; } else {}; return 0; }
-
Ich weiß, dass es auch anders geht, doch ich habs einfach mal so gemacht ^^
PHP
Alles anzeigen<?php srand(microtime()*1000000); // Startet Zufall *erinnert sich an LOGO ;D* $zufall = rand(1,3); // Erzeuge Zufallszahl // Bereich: 1-3 if ($zufall==1) { echo '<img src="BILD4.png" />'; // Definiere Fall 1 } elseif ($zufall==2) { echo '<img src="BILD2.png" />'; // Definiere Fall 2 } elseif ($zufall==3) { echo '<img src="BILD3.png" />'; // Definiere Fall 3 } ?>
GrußMeta
-
Hab mal wieder was neues, recht interessantes. Habs letzte Nacht eigentlich für jemand in der WCom geschrieben, aber ich will 's euch nicht vorenthalten ^^
Hier erstmal der Code:JavaScript
Alles anzeigen/** * Sampling without replacement * * @param integer start * @param integer end * @param integer count * * @return array */ function getRandomNumbers(start, end, count) { var numbers = new Array(); var isElement = function(array, value) { for (var a = 0; a <= array.length; a++) { if (array[a] == value) { return true; break; } } return false; } var rand = function(first, last) { return parseInt(Math.round(first + Math.random() * (last - first))); } while (count > 0) { var randNum = rand(start, end); if (!isElement(numbers, randNum)) { numbers[numbers.length] = randNum; count--; } } return numbers; }
Gehen wir es Schritt für Schritt durch:
Zuerst einmal kommen die Komentare. Dort ist für eine schnelle Übersicht notiert, was die Funktion macht, welchen Parameter-Typ sie erwartet und welchen Variablen-Typ der return-Wert hat.
Erstmal was die Function eigentlich macht: Das ist ein Zufallsgenerator, der einem ein Array mit Zufallszahlen zurückliefert. Dieses Array enthält so viele Zahlen wie var count. Dabei wird darauf geachtet, dass eine Zahl nicht mehrmals vorkommen darf. Kurz gesagt also: Ziehen ohne Zurücklegen. Es muss auch noch ein Zahlen-Bereich festgelegt werden, wobei var end natürlich größer als var start sein muss.
Dann werden die nötigen Arbeitsvariablen deklariert. Interessant wird es ab var isElement. Hier wird eine Function mit der Sichtbarkeit private erstellt. Private deshalb, weil sie von außen nicht aufrufbar sein soll, was sonst theoretisch möglich wäre.
isElement() prüft, ob der Wert von value einem der Werte im übergebenen Array entspricht. Falls ja, gibt die Function true zurück und die Schleife wird beendet. Falls value keinem der Array-Werte entspricht, wird false zurückgegeben.
Dann zur eigentlichen Zufallsfunktion. Diese nimmt den Start und Endwert entgegen. Dann wird ein entsprechender Zufallswert zurückgegeben. Wie der berechnet wird hat mehr mit Mathematik als mit JavaScript zu tun, deswegen spar ich mir das Erklären. Den Algorithmus musste ich btw selbst entwickeln, da es wirklich nirgends im Inet steht, wie man in JavaScript ne Zufallszahl zwischen zwei Zahlen berechnet.
So, in der nun folgenden Schleife wird zuerst eine Zufallszahl bestimmt, die dann dem Zahlen-Array numbers zugewiesen wird, falls diese nicht schon enthalten ist. Hier kommt also isElement() zum Einsatz. Als Index für das Array wird immer die aktuelle Länge genommen, da JavaScript Arrays, anders als PHP, nicht automatisch iterieren (hochzählen) kann. Dann wird noch der Schleifendurchlaufswert count runtergezählt.
Als letztes wird dann das Array mit den Zufallszahlen zurückgegeben.So, vielleicht braucht man das nicht soo häufig, aber es ist imo recht guter JavaScript-Code. Was man btw an meinem Script noch verbessern kann: Fehler abfangen. Etwa wenn der Startwert größer als der Endwert ist.
-
Soa, ich habe mal ein "kleines" Passwortscript geschrieben, welches beim aufrufen einer Seite ein zufälligen Hash mit zufälligem Wert erzeugt.
PHP
Alles anzeigen<!-- Hier der ganze HTML bereich --> <textarea cols="90" rows="1"> <?php $c=rand(1000000, 10000000); // Zufälligen Wert für $c generieren (dieser liegt zwischen 1000000 und 10000000) srand(microtime()*$c); // Zufälle zufälliger machen (lol) $e=($c-rand())*rand(1, 51); // $e wird auf eine zufällige Zahl gesetzt, von der eine zufällige zahl subtrahiert wird und dieser wert wird mit einem zufallswert zwischen 1 und 51 multipliziert $wert=rand(1, $e); // Der Wert, der verschlüsselt wird, wird zwischen 1 und $e plaziert $verschlüsselung=rand(1, 36); // Die verschlüsselungsart wird festegelegt switch ($verschlüsselung) { // und hier kommen die ganzen 36 fälle, die $verschlüsselung annehmen kann // Natürlich wird davon ausgegangen, dass diese alle funktionieren und auf dem Server vorhanden sind ^^ case 1: $hash=hash('md5', $wert); break; case 2: $hash=hash('sha1', $wert); break; case 3: $hash=hash('sha384', $wert); break; case 4: $hash=hash('sha512', $wert); break; case 5: $hash=hash('crc32', $wert); break; case 6: $hash=hash('crc32b', $wert); break; case 7: $hash=hash('whirlpool', $wert); break; case 8: $hash=hash('gost', $wert); break; case 9: $hash=hash('snefru', $wert); break; case 10: $hash=hash('md2', $wert); break; case 11: $hash=hash('sha256', $wert); break; case 12: $hash=hash('md4', $wert); break; case 13: $hash=hash('ripemd128', $wert); break; case 14: $hash=hash('ripemd160', $wert); break; case 15: $hash=hash('ripemd320', $wert); break; case 16: $hash=hash('ripemd256', $wert); break; case 17: $hash=hash('adler32', $wert); break; case 18: $hash=hash('tiger128,3', $wert); break; case 19: $hash=hash('haval192,3', $wert); break; case 20: $hash=hash('haval224,3', $wert); break; case 21: $hash=hash('haval160,3', $wert); break; case 22: $hash=hash('tiger192,3', $wert); break; case 23: $hash=hash('haval128,3', $wert); break; case 24: $hash=hash('tiger192,4', $wert); break; case 25: $hash=hash('tiger128,4', $wert); break; case 26: $hash=hash('tiger160,4', $wert); break; case 27: $hash=hash('haval160,4', $wert); break; case 28: $hash=hash('haval192,4', $wert); break; case 29: $hash=hash('haval256,4', $wert); break; case 30: $hash=hash('haval128,4', $wert); break; case 31: $hash=hash('haval224,4', $wert); break; case 32: $hash=hash('haval160,5', $wert); break; case 33: $hash=hash('haval128,5', $wert); break; case 34: $hash=hash('haval224,5', $wert); break; case 35: $hash=hash('haval192,5', $wert); break; case 36: $hash=hash('haval256,5', $wert); break; } echo $hash; ?> </textarea> <!-- ich habe das ganze in ein Textarea Tag gepackt, damit der Hash bei festen layouts nicht über den rand hinausgeht. -->
-
Man kann übrigens das kaufmännische Und (&) auch dafür einsetzen, um 2 Variablen miteinander zu verknüpfen.
Das erspart einem etwas Schreibarbeit:
Man muss nur $var1 erhöhen, um das gewünschte ErgebnisZitat
10
11
Zu erhalten.
Kann bei Formularen hin und wieder ganz sinnvoll werden.
Gruß
Meta -
Dieses Codeschnibsel schaut nach welche Versionnummer höher ist und gibt diese aus:
PHP<?phpfunction version($first, $second) {#wir nehmen an $first wäre 1.0.1 b1#wir nehmen an $second wäre 1.0.1$first = str_replace(' ', '', $first); # leerzeichen entfernen $first = 1.0.1b1$second = str_replace(' ', '', $second); # leerzeichen entfernen $second = 1.0.1$first = str_ireplace(array('a', 'b', 'rc', 'pl'), array('.1.','.2.','.3.','.5.'), $first); #codewörter durch zahlenwerte $first = 1.0.1.2.1$second = str_ireplace(array('a', 'b', 'rc', 'pl'), array('.1.','.2.','.3.','.5.'), $second); #codewörter durch zahlenwerte $second = 1.0.1$first = explode('.', $first); #array erstellen $first = array(1,0,1,2,1);$second = explode('.', $second);#array erstellen $second = array(1,0,1);if(!isset($first[3])) $first[3] = 4; #wenn kein codewort 4. stelle ergänzen $first = array(1,0,1,2,1);if(!isset($second[3])) $second[3] = 4; #wenn kein codewort 4. stelle ergänzen $second = array(1,0,1,4);print_r($first);print_r($second);if($first[0] < $second[0]) $return = $second; #vergleiche von links nach rechtselseif($first[0] > $second[0]) $return = $first;elseif($first[1] < $second[1]) $return = $second;elseif($first[1] > $second[1]) $return = $first;elseif($first[2] < $second[2]) $return = $second;elseif($first[2] > $second[2]) $return = $first;elseif($first[3] < $second[3]) $return = $second; #second hat die höhere zahl überprüfung wird beendetelseif($first[3] > $second[3]) $return = $first;elseif($first[4] < $second[4]) $return = $second;elseif($first[4] > $second[4]) $return = $first;else $return = $first;if($return[3] == 1) $return[3] = 'a';elseif($return[3] == 2) $return[3] = 'b';elseif($return[3] == 3) $return[3] = 'rc';elseif($return[3] == 4) $return[3] = '';elseif($return[3] == 5) $return[3] = 'pl'; #die zahlen wieder in einer string verwandeln$x = $return[0].'.'.$return[1].'.'.$return[2];if(!empty($return[3])) $x .= ' '.$return[3].$return[4];return $x; #rückgabe der höheren version}echo version($_GET['x'],$_GET['y']);?>
Die Versionsnummer müssen im Format:
sein
1.0.0
0.5.9 pl 8
8.9.45 a 3Die print_r() und das echo könnt ihr natürlich gerne rausnehmen ;-)
-
Symetrische Verschlüsselung mit PHP:
PHP
Alles anzeigen<?php /** * Encodes and Decodes strings * * @param string $key * @param mixed $value * @return mixed encoded / decoded text */ function chiffre($key, $value) { $x = $key; $key = md5($x); while(strlen($key) < strlen($value)) { $key .= md5($x); } $result = ''; for($i = 0; $i < strlen($value)+1; $i += $i+1) { $result .= substr($key, $i, $i+1) ^ substr($value, $i, $i+1); } return $result; } ?>
Der Output sollte nicht an den Brwoser geschickt sondern per Binärmodus in einer Textdatei oder in der Datenbank gespeichert werden. Der Browser verschluckt nämlich ganz gerne gewisse Zeichen.
DIESE VERSCHLÜSSELUNG IST NICHT DIE SICHERSTE, KEINE GEWÄHR!
-
Falls man seine Webseite mit lauter Ordnern und Unterordern mit (nur) je einer index.php darin aufgebaut hat, dann hat man hiermit die Möglichkeit auf eine "Sie sind hier"-Funktion:
PHP
Alles anzeigen<?php $uri = $_SERVER[SCRIPT_URI]; //also zB. "http://www.bisaboard.de/off_topic/board338-webdesign/index.php" $uri_array = explode("/", $uri); //zerlegen in (hier) sieben Teile echo "Sie sind hier: "; for ($i = 2; $i < count($uri_array)-1; $i++) //zur Geltung kommen also zB. die Werte: "www.bisafans.de", "bb", "off_topic" und "board338-webdesign" { $location = "http://www."; for ($o = 2; $o < $i+1; $o++) { $location .= $uri_array[$o] . "/"; } echo " <a href='$location'>>>$uri_array[$i]</a>"; } ?>
-
Langeweile :D
PHP
Alles anzeigenfunction prfChars($str) { if ( !is_string ( $str ) ) return false; // ASCII Werte der Sonderzeichen in einen Array schreiben. (Die nicht enthalten sein dürfen) $noChars = array (33,34,35,36,37,38,39,40,41,42,43,45,46,47,91,92,93,94,96,123,124,125,126); // Fragt mich nicht, wieso ich grade so eine methode wählen musste, ich find Zahlen besser als Buchstaben... for ( $i=0; $i<strlen($str); $i++) { $x=substr($str,$i,1); foreach ( $noChars as $char ) { if ( ord($x) == $char ) { return false; } } } return true; } // getestet in PHP 5.3.0, @/dev/null: ja ich weiß, dass das nich die beste methode ist :D
-
formatiert einen Timestamp im Format "dddd den dd. mmmm yyyy, hh:ss".
Wenn der timestamp dem heutigem Tag entspricht, wird "<strong>Heute</strong>, hh:ss" ausgegeben..$prefix kann zB "am " enthalten.. damit wird zB das ausgegeben:
gepostet am Donnerstag den 27. August 2009, 20:03 Uhr
gepostet Heute, 20:03 Uhr
(jeweils die Ausgaben der Funktion hervorgehoben)PHP
Alles anzeigenfunction formatDate ($time, $prefix = '') { if (date('m.d.Y', $time) == date('m.d.Y')) { $date = '<strong>Heute</strong>'; } else { $days = array('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag'); $day = $days[date('w', $time)]; $months = array('Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Obktober', 'November', 'Dezember'); $month = $months[date('n', $time)]; $date = $prefix.$day.' den '.date('j', $time).'. '.$month.' '.date('Y', $time); } return $date.', '.date('h:i', $time); }