grep -d -n "test" *.php something done!"; } } ?> // dito in Link change parent //inline javascript // durch link ".$datensatz[$i]." // einen link self.location.href='./action_reise.php'; // im gleichen Fenster window.location.href = "datei2.htm"; (window.location. bietet neben .href noch viele andere optionen wie z.B. .port, .protocol, .reload() etc.) // funktionsaufruf: // html Formatierung auflösen
0 = neue Datei, 1 = anhängen) in 0_log.txt log_hd($var, $string = '', $filename = 'hd'); // schreibt Hinweis + far in angegebene Datei mit $string als info $var darf auch Array sein !!! Ausgabe nur bei Devel-Recht print_set($data_res, $col_num, $device, $info); // druckt Datensat 1) device = 'hd' -> auf Festpaltte 0_log.txt 2) else -> Bildschirm // im JS für kontroll-logliste: add_msg(comment, msg); // folgende Melungen werden nach refrer formatiert in der Meldungssequenz ausgegeben e($string, $var) // error ausgabe für alle User ie($string, $var, $fieldname); // Eingabefehler ea($string, $var); // error ausgabe für alle User erzeugt im action.php -> ausgabe index.php iea($string, $var, $fieldname); // Eingabefehler ermittelt im action.php -> ausgabe im index.php //---------------- STRINGS strlen((int)'12.33333'); // convert ti int -> sobald etwas anderes als eine Zahl kommt wird abgeschnitten str_replace('#', '.', 'a.b#c.'); // ersetzt # durch . // javascript: new_str = old_str.replace(/./g,'#'); // ersetzt alle . duch # // geht auch: s_text = s_text.replace(/ /g,'#'); // hier alle " " durch # preg_replace("/[^0-9a-zA-Z]/","",$string); // ersetzt alles außer preg_replace("/[^0-9a-zA-Z]/","",$string); // ersetzt alles außer preg_replace('/[^0-9A-Za-z .,;:+~$§%°()äüöÄÜÖ=,?!\-\´\'\/]/', '', $string); // ersetzt alles außer (extrem) preg_replace('/[^0-9A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\xFF]/', '', $string); // preg_replace in catal0g TAB Beispiel &RE=/[^0-9A-Za-z.:%=?..2F..26]/ // wobei später .. zu \x wird &RE=/[^0-9A-Za-zÄÜÖäüö.,:+~$§%(°)=?!\´..2F..2D..3B..26]/ // 0xcodes: / = 2F - = 2D ; = 3B & = 26 [ = 5B ] = 5D "" = 22 ´ = \´ (gibt es keinen asc-code) // folgende werden zwar ausgegeben bringen aber JS durcheinander // \ = 5C // wird von show_pos() nicht in -Feld übernommen // " = 22 // bringt das gesamte JS durcheinander // ' = 27 // vermutl dito . 2E // wirklich nötig ? ^ 5E // nicht getestet // um einzelne auszuschließen einfach ohne ^: // Beispiel &RE=/[~$§(°)=]/ $text = 'WHERE PC.Neu_von = 3 AND MAIN_DB.id = PC.Id_item AND PC.Status & 136 AND PC.Status & 6 AND PC.Status & 1'; echo str_replace ( ' PC.',' PCx.',$text ); > // WHERE PCx.Neu_von = 3 AND MAIN_DB.id = PCx.Id_item AND PCx.Status & 136 AND PCx.Status & 6 AND PCx.Status & 1 $rest = substr("abcdef", -1); // gibt "f" zurück $rest = substr("abcdef", -2); // gibt "ef" zurück $rest = substr("abcdef", -3, 1); // gibt "d" zurück $rest = substr("abcdef", 2); // gibt "cdef" zurück (zeichen löschen) $rest = substr("abcdef", 0, -3); // gibt "abc" zurück (zeichen löschen) (minus der letzten 3) $rest = substr("abcdef", 0, 3); // gibt auch "abc" zurück (zeichen löschen) (ertsten 3 chars) // stringlänge int strlen ( string $string ); echo "
anz unterschiedlicher Zeichen: ", levenshtein("Lena", "Lenchen"); // ausg. 4 echo "
anz unterschiedlicher Zeichen: ", levenshtein("Emil", "limE"); // ausg. 4 (alle) $anz_gleich_char = similar_text($str1, $str2, $prozent_gleich); // sonst siehe noch "soundex()" -> check Klangähnlichkeit // Tokenizieren: $string = "Dies ist\tein Beispiel-\nString"; /* Sowohl das Tabulator- als auch das Newline-Zeichen werden zusätzlich zum Leerzeichen als Token zum Zerlegen verwendet */ $tok = strtok($string, " \n\t"); while ($tok !== false) { echo "Wort=$tok
"; $tok = strtok(" \n\t"); } //---------------- ARRAYS count($arr); // Anz Array-Elemente // javascript: str.length $fragments = explode("#", $test_str); // trennt string bei # in einzelne array elemente // javascript: s. split echo "
fragmente ", count($fragments); // 1..n $fragments[0..n-1] $c = count($fragments = explode ( "-" , $string )); //Hinweise BSP $c = count( $frag = explode("-", "-Text")); echo "
c $c frag ",print_r($frag , true); // Ausgabe $c -> 2, $frag[0] -> '', $frag[1] -> 'Text' $arr['nase'] = 1; $arr['hase'] = 2; foreach ($arr as $key => $value) echo "$key $value"; // -> ausgabe: nase 1 hase 2 echo "\n"; // Array in Array ...so nicht $test['a'] = 20; $test['a']['b'] = 10; echo "
test arr a ",$test['a']," ab ",$test['a']['b']; -> test arr a 20 ab // so klappts $test[0] = 5; $test[1] = 6; $mask[0][0] = 1; $mask[0][1] = $test; //$maskk = 0; echo "
1 ",$mask[0][0]; // = 1 echo "
2 ",$mask[0][1][0]; // = 5 //---------------- TYPEN (int)123.4 -> 123 (int)'1s3.4' -> 1 // aufpassen! str to int ist okay // püfen: is_int(1123) // analog dazu gibt es auch: is_bool(); is_float(); is_numeric(); // prüft, ob gültige Zahl (auch float, exp, hex etc.) ctype_digit($string); // prüft NUR String, ob aus zahlen besteht //workarount für string und int: function check_numeric($var) { return isset($var) ? $var + 0 : 0; } echo $deineVariable; is_array(); is_null(); is_string(); is_object(); // Lösung alle nicht-int aussvließen (muß mit is_int(int)... alle Strings mit negativen Vorzeichen in int verwandeln, da sonst -n als string gewertet wird) if (is_int((int)$_GET['do'])) echo "
do ", (int)$_GET['do']; // Überraschend geprüfte if-Bedingungen if ('Hallo' > -1) JA! if ('Hallo' > 0) NEIN! unset($test); if ($test == 0) JA if ($test == false) JA if ($test == '') JA $test['a']['b'] = 10; if ($test['a']) JA $test['a'] = 20; echo $test['a'],$test['a']['b']; // = 20 -> [][] wird verworfen // ------------ Zeit Datum time date $year = date("Y"); $datum = date("Y-m-d"); $uhrzeit = date("H:i:s"); echo "
timestamp $datum $uhrzeit"; // oder gleich echo date("Y-m-d H:i:s"); $timestamp = $datum." ".$uhrzeit; $sek_seit_1970 = time(); // dito mit JS javascript //z.B. alert(new Date().getTime()); alert(new Date("1970-01-02").getTime()); // liefert Timestamp zum angegebenen Datum, funktioniert leider NICHT mit DE-Format z.B. 01.02.1988 // zurückrechnen print date("m/d/y G.i:s
", '5555555'); // -> 03/06/70 8.12:35 // bsp timestam to eu format dd.mm.yyyy hh:mm:ss print date("d.m.Y H:i:s", '777777'); // bsp timestam to uni format yyyy-mm-dd hh:mm:ss print date("Y-m-d H:i:s", '777777'); // (vergl. http://www.tutorialspoint.com/php/php_date_and_time.htm) //zurückrechnen $timestamp = strtotime('22-09-2008'); // oder mit deutschem format echo "
time: ".strtotime("20.1.1970"); // mit Uhrzeit geht's natürlich auch echo "
time bereuchnet 1: ".strtotime("20.1.1970 0:0:0"); // beliebiges Text-Format $a = strptime('22-09-2008', '%d-%m-%Y'); $timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900); // zeit innerhalb von scripoten messen $start = microtime(true); $end = microtime(true) - $start; // --------------- Zufallszahlen erzeugen $ms_a = explode(" ", microtime()); srand ($ms_a[0]); $rnd = rand(1, getrandmax()); echo "
rand $rnd by ms $ms_a[0]"; //------------- SQL-PHP // Beispiel Schleife für Tabellenüberarbeitung $source = free_query("SELECT Dateiname, id FROM `usr_web42_11`.`BILDER_SRC` WHERE id > 0"); while ($fnames = mysql_fetch_row($source)) { $id = explode ("_", $fnames[0]); echo "
",$id[0]," ",$fnames[1]; update_value('`usr_web42_11`.`BILDER_SRC`', 'ciid', 'id', $fnames[1], $id[0]); } //---------------------------------------------------------- // yahoo finance API, Kurse abfragen BSP Wechselkurs Devisen define ("QUOTES_URL", "http://finance.yahoo.com/d/quotes.csv?"); oder ? $URL = "http://de.finance.yahoo.com/d?s=$symbol_fond&f='l1'"; $URL = QUOTES_URL."s=EURUSD=X&f='l1'"; $fp = fopen($URL,'r'); mysql_data_seek($ag_list, 0); $kurs = htmlentities(fgets($fp, 200)); // für ganze Website macht man's so // $kurs = htmlentities($t); // -> wird index an ID gebunden //-------------------------------- ?> alle user alle"; else if($_POST['radio_trade'][0] == 2) echo "
User"; ?>
-> immer
-> kein
wenn trotzdem
gewuenscht ->
$_SESSION['message'] .= "
Gelöscht: //------------------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------------------ SQL einfacher LEFT JOIN mit Namensaufloesung: SELECT main.id, src.Vorname, main.titel FROM anzeigen AS main LEFT JOIN User AS src ON src.id = main.uid Beispiele zu bei mir funktionierenden JOINS "SELECT * from $tab_comp ORDER BY Stele "; // ORDER BY -> wobei 1..n "SELECT st.id, st.Stele, st.SIM, si.pin, si.puk, st.aktiv, st.Monitor, st.PC, st.Router FROM Stele_tmp AS st LEFT JOIN SIM AS si WHERE st.SIM = si.KartenNr ORDER BY $colum_names[$spalten_nr] "; "SELECT st.id, st.Stele, st.SIM, si.pin, si.puk, st.aktiv, st.Monitor, st.PC, st.Router FROM Stele_tmp AS st LEFT JOIN SIM AS si ON st.SIM = si.KartenNr ORDER BY $colum_names[$spalten_nr] "; "SELECT * from $tab_comp ORDER BY TeileNr "; // einfache Abfrage "SELECT * FROM $tab_comp ORDER BY $colum_names[$spalten_nr]"; // einfache Abfrage TIMESTAMP vs. DATETIME: Timestamp nur von 1970 - 2037 Sammeluptate (werden alle 0 in 5 verwandelt): UPDATE `usr_web42_xx`.`PL8_DB` SET `Funktion` = '5' WHERE `Funktion` =0; Sammelupdate Stringedit (hängt allen Strings in Spalte ein x an, abc -> abcx) UPDATE tabelle SET spaltenname=CONCAT(spaltenname, 'x') WHERE 1 UPDATE User SET Email=CONCAT(Email, 'x') WHERE 1 Sammel-kopie Spalte Text_1 nach spalte Text_2 UPDATE tabelle SET Text_1 = Text_2 Sammel-kopie Spalte Text_1 Tabelle_1 nach spalte Text_2 Tabelle_2 UPDATE `usr_web42_yy`.`PL8_DB` SET `usr_web42_xx`.`PL8_DB`.Text_1 = `usr_web42_yy`.`PL8_DB`.Text_2 WHERE `usr_web42_yy`.`PL8_DB`.id = `usr_web42_xx`.`PL8_DB`.id // funzt nicht SELECT SpalteQuelle INTO TabelleNeu FROM TabelleQuelle; // alternativvorschlag (ungetestet) Sammeluptate (werden alle id in feld kopiert): UPDATE `usr_web42_xx`.`PL8_DB` SET `Feld` = `id`; // alle 11.Bits auf 0 setzen UPDATE `usr_web42_12`.`Z_TEST` SET `IntFeld` = `IntFeld` & ~1024 // alle 11.Bits auf 1 setzen UPDATE `usr_web42_12`.`Z_TEST` SET `IntFeld` = `IntFeld` | 1024 // Einzele Bits setzten: (bsp bit 0) UPDATE `tablename` SET `fieldname`= (1 | `fieldname`) WHERE id = 5 loeschen UPDATE `tablename` SET `fieldname`= (~1 & `fieldname`) WHERE id = 5 Hinweis: Klammern in obigen Beispiel nicht notwendig Hnweis: || bzw. OR, && AND, ! NOT und XOR sind logische verknüpfung der gesamten variabele und liefert immer nur 1, 0 oder NULL s. http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html Lösung?: WHERE Wert & Maske = (int) Maske z.B.: WHERE Wert & 11 = 11 ...müsste eigentlich alle Werte deren letzten Bits 1x11 // Einzele Bits abfragen: (bsp bit 0) ... WHERE fieldname & 7 // wuerde, wenn eines der ersten drei Bits bei "fieldname gesetzt" -> true zurückgeben // Kopiert 1.Bit in 11.Bit (wenn 1.Bit gesetzt) UPDATE `usr_web42_xx`.`TAB_NAME` SET `IntFeld` = `IntFeld` | 1024 WHERE `IntFeld` & 1 // Kopiert 1.Bit in 11.Bit (wohl nur in zwei Schritten) UPDATE `usr_web42_xx`.`TAB_NAME` SET `IntFeld` = `IntFeld` | 1024 WHERE `IntFeld` & 1 UPDATE `usr_web42_xx`.`TAB_NAME` SET `IntFeld` = `IntFeld` & ~1024 WHERE `IntFeld` & 1 = 0 Leerzeichen (in Feldern) bei der Textsuche ignorieren: SELECT * FROM `TAB_NAME` WHERE REPLACE( Spaltenname, ' ', '' ) LIKE REPLACE( '%VIAV%', ' ', '' ) -> Findet strings wie AviAver kopiert die ersten 10 quellen von tab1 spalte quelle_x nach tab2 spalte ziel INSERT INTO `usr_web42_xx`.`TAB_1` (Ziel_a, Ziel_b) SELECT Quelle_a, Quelle_b FROM `usr_web42_yy`.`PL8_DB_BAK_2` WEHRE id < 10 (mehr Tabelleninteraktionen unter:http://www.cix-blog.de/thm/MySQL-Daten-von-Tabelle-zu-Tabelle-kopieren) (gespeichert in bibliothek MySQL - Daten von Tabelle zu Tabelle kopieren.htm) Anzahl der Datensaetze: $tab_status = free_query("SHOW TABLE STATUS FROM ".DBNAME." LIKE '".$_SESSION['catal0g']."_DB'"); $ds = mysql_fetch_row($tab_status); q ('anzahl der Datensätze', $ds[4]); Anzahl der Datensaetze 2: get_set($count_tab, 'COUNT(*)', 'id', '', $id, '') Prüfen ob Datensatz mit bestimmter id vorhanden: if (get_set($count_tab, 'COUNT(*)', 'id', '', $id, '') == 0) -> Fehermeldung // UNIQUE aufheben ALTER TABLE table_name DROP INDEX key_name; !!!key_name unbedingt erfragen: SHOW INDEX FROM table_name; (kann vom Spaltennamen abweichen) Zwei Tabellen zusammenfassen select Text from FARBE union select Text from KONTINENT ORDER BY Text Nächste ID holen if ($id == 0) { // wenn es für einen neuen Datensat ist -> nächste ID holen $res = free_query("SHOW TABLE STATUS FROM ".DBNAME." LIKE '".$_SESSION['catal0g']."_DB'"); $ds = mysql_fetch_row($res); } else $ds[10] = $id; // nicht gerade elegant auch ds[10] dafür zu verwendenden, vielleicht sollte man doch eine eigene Var dazu einführen Diverse standartisierte SQL Kommandos für den catal0g: --------------> Um eine MASTER_MASK erweitern ALTER TABLE `PC_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_MAIN_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_GRAFIK_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_CTRL_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_NIC_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_OTHER_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_RAM_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1`; ALTER TABLE `PC_SOUND_TAB` ADD `MASTER_MASK_2` BIGINT UNSIGNED NOT NULL DEFAULT '0' AFTER `MASTER_MASK_1` DB Erweitern: INSERT INTO `usr_web42_12`.`FORMFAKTOR` (`id`, `Text`, `info`, `Pos_in_bitmask`, `Mask_col`, `Rank_pc_main`, `v_out`, `Seite`, `Rank_char_col`, `Rank_aux_col`, `Rank_test_col`) VALUES (NULL, 'Nano-ITX', '120 × 120', '24', NULL, '', '0', '0', NULL, NULL, '0'), (NULL, 'NLX', '203-229 × 254…345', '25', NULL, '', '0', '0', NULL, NULL, '0'), ...... (NULL, 'XT', '216 × 279', '36', NULL, '', '0', '0', NULL, NULL, '0'); Attribute erweitern ..kann vermutlich bald verworfen werden ALTER TABLE `PC_TAB` ADD `ATTR_POS` BIGINT UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `PC_RAM_DB` ADD `Attribute` BIGINT UNSIGNED NOT NULL DEFAULT '0'; ALTER TABLE `PC_RAM_DB_HIST` ADD `Attribute` BIGINT UNSIGNED NOT NULL DEFAULT '0' //tested url-text // DB INSERT INTO `usr_web42_12`.`PC_OTHER_TRADE_TAB` ( `ID` , `TITEL` , `TITEL_en` , `TYP` , `POS_IN_FORM` , `NAME_IN_FORM` , `STYLE` , `PARAMETER` , `PARAMETER_en` , `FUNCTION` , `TAB_NAME` ,`MASK_COL_NAME` , `IS_MASTER` , `MY_MASTERS_ID` ,`MASTER_MASK` ) VALUES ( NULL , 'gefrüft mit', 'tested with', '1', '116', 'tested', 'width:100px', 'max_len=128&RE=/[^0-9A-Za-z.:%=?\\-\\/\\x3B]/', 'max_len=128&RE=/[^0-9A-Za-z.:%=?\\-\\/\\x3B]/', NULL , NULL , NULL , NULL , NULL , '0' ); // besset ??? NULL , 'gefrüft mit', 'tested with', '1', '116', 'tested', 'width:100px', 'max_len=128&RE=/[^0-9A-Za-z.:%°=?_..2F..2D..5B..5D..26]/', 'max_len=128&RE=/[^0-9A-Za-z.:%°=?_..2F..2D..5B..5D..26]/', NULL , NULL , NULL , NULL , NULL , '0' // check RE=/[^0-9A-Za-z.:_°%=?..26..2F..5B..5D]/ / = 2F - = 2D ; = 3B & = 26 [ = 5B ] = 5D ´ = \´ (gibt es keinen asc-code) // DB_HIST ALTER TABLE `PC_OTHER_TRADE_DB` ADD `tested` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL AFTER `zustand` //------------------------------------------------------------------------------------------------ Browsereinstellungen damit window.opener.focus() funktioniert: ff: Extras -> Einstellungen -> Inhalt -> Javascript:erweitert -> Fenster vor oder hinter andere setzten ie: Extras -> Internetoptionen -> Sicherheit -> Intern(etzone) -> Stufe anpassen -> Popupblocker verwenden ftp commands: quote PASV -> enter passive mode Creative (r34t1v3 1807ead1af200fd4a4da0b5e3ce7a07a //-------------------------------------------------------------------------------------- Linux commandos // Alle Mails löschen mail -N d * chronjob verwalten crontab -e // VS-Hosteurope plesk * cronjobs als normaler User einrichten Websites & Domails -> erweiterte Einstellungen einblenden -> powerpanel -> anmeldung mit root * alle Dateien bis zu Wurzelverzeichnis zu bearbeiten z.B. bin /etc/mailnamen den localhos.localdomain ändern