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