PHP-Array mit allen Virtual Key Codes 0

Nach 20min nervigen tippen hab ich es dann mal hingekommen alle Virtual Key Codes in ein PHP-Array zu Tippen und weil ich weiß wie nervig derartige Arbeit ist stelle ich das Ergebnis hier mal jeden zur Verfügung.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
$vk_keys = array(
"0xC1" => "Abnt C1",
"0xC2" => "Abnt C2",
"0x6B" => "Numpad +",
"0xF6" => "Attn",
"0x08" => "Backspace",
"0x03" => "Break",
"0x0C" => "Clear",
"0xF7" => "Cr Sel",
"0x6E" => "Numpad .",
"0x6F" => "Numpad /",
"0xF9" => "Er Eof",
"0x1B" => "Esc",
"0x2B" => "Execute",
"0xF8" => "Ex Sel",
"0xE6" => "IcoClr",
"0xE3" => "IcoHlp",
"0x30" => "0",
"0x31" => "1",
"0x32" => "2",
"0x33" => "3",
"0x34" => "4",
"0x35" => "5",
"0x36" => "6",
"0x37" => "7",
"0x38" => "8",
"0x39" => "9",
"0x41" => "A",
"0x42" => "B",
"0x43" => "C",
"0x44" => "D",
"0x45" => "E",
"0x46" => "F",
"0x47" => "G",
"0x48" => "H",
"0x49" => "I",
"0x4A" => "J",
"0x4B" => "K",
"0x4C" => "L",
"0x4D" => "M",
"0x4E" => "N",
"0x4F" => "O",
"0x50" => "P",
"0x51" => "Q",
"0x52" => "R",
"0x53" => "S",
"0x54" => "T",
"0x55" => "U",
"0x56" => "V",
"0x57" => "W",
"0x58" => "X",
"0x59" => "Y",
"0x5A" => "Z",
"0x6A" => "Numpad *",
"0xFC" => "NoName",
"0x60" => "Numpad 0",
"0x61" => "Numpad 1",
"0x62" => "Numpad 2",
"0x63" => "Numpad 3",
"0x64" => "Numpad 4",
"0x65" => "Numpad 5",
"0x66" => "Numpad 6",
"0x67" => "Numpad 7",
"0x68" => "Numpad 8",
"0x69" => "Numpad 9",
"0xBA" => "OEM_1 ( : ; )",
"0xE2" => "OEM_102 (> <)",
"0xBF" => "OEM_2 (? /)",
"0xC0" => "OEM_3 (~ `)",
"0xDB" => "OEM_4 ({ [)",
"0xDC" => "OEM_5 (| \)",
"0xDD" => "OEM_6 (} ])",
"0xDE" => "OEM_7 (\" ')",
"0xDF" => "OEM_8 (§ !)",
"0xF0" => "Oem Attn",
"0xF3" => "Auto",
"0xE1" => "Ax",
"0xF5" => "Back Tab",
"0xFE" => "OemClr",
"0xBC" => "OEM_COMMA (< ,)",
"0xF2" => "Copy",
"0xEF" => "Cu Sel",
"0xF4" => "Enlw",
"0xF1" => "Finish",
"0x95" => "Loya",
"0x93" => "Mashu",
"0x96" => "Roya",
"0x94" => "Touroku",
"0xEA" => "Jump",
"0xBD" => "OEM_MINUS (_ -)",
"0xEB" => "OemPa1",
"0xEC" => "OemPa2",
"0xED" => "OemPa3",
"0xBE" => "OEM_PERIOD (> .)",
"0xBB" => "OEM_PLUS (+ =)",
"0xE9" => "Reset",
"0xEE" => "WsCtrl",
"0xFD" => "Pa1",
"0xE7" => "Packet",
"0xFA" => "Play",
"0xE5" => "Process",
"0x0D" => "Enter",
"0x29" => "Select",
"0x6C" => "Separator",
"0x20" => "Space",
"0x6D" => "Num -",
"0x09" => "Tab",
"0xFB" => "Zoom",
"0xFF" => "no VK mapping",
"0x1E" => "Accept",
"0x5D" => "Context Menu",
"0xA6" => "Browser Back",
"0xAB" => "Browser Favorites",
"0xA7" => "Browser Forward",
"0xAC" => "Browser Home",
"0xA8" => "Browser Refresh",
"0xAA" => "Browser Search",
"0xA9" => "Browser Stop",
"0x14" => "Caps Lock",
"0x1C" => "Convert",
"0x2E" => "Delete",
"0x28" => "Arrow Down",
"0x23" => "End",
"0x70" => "F1",
"0x79" => "F10",
"0x7A" => "F11",
"0x7B" => "F12",
"0x7C" => "F13",
"0x7D" => "F14",
"0x7E" => "F15",
"0x7F" => "F16",
"0x80" => "F17",
"0x81" => "F18",
"0x82" => "F19",
"0x71" => "F2",
"0x83" => "F20",
"0x84" => "F21",
"0x85" => "F22",
"0x86" => "F23",
"0x87" => "F24",
"0x72" => "F3",
"0x73" => "F4",
"0x74" => "F5",
"0x75" => "F6",
"0x76" => "F7",
"0x77" => "F8",
"0x78" => "F9",
"0x18" => "Final",
"0x2F" => "Help",
"0x24" => "Home",
"0xE4" => "Ico00 *",
"0x2D" => "Insert",
"0x17" => "Junja",
"0x15" => "Kana",
"0x19" => "Kanji",
"0xB6" => "App1",
"0xB7" => "App2",
"0xB4" => "Mail",
"0xB5" => "Media",
"0x01" => "Left Button **",
"0xA2" => "Left Ctrl",
"0x25" => "Arrow Left",
"0xA4" => "Left Alt",
"0xA0" => "Left Shift",
"0x5B" => "Left Win",
"0x04" => "Middle Button **",
"0xB0" => "Next Track",
"0xB3" => "Play / Pause",
"0xB1" => "Previous Track",
"0xB2" => "Stop",
"0x1F" => "Mode Change",
"0x22" => "Page Down",
"0x1D" => "Non Convert",
"0x90" => "Num Lock",
"0x92" => "Jisho",
"0x13" => "Pause",
"0x2A" => "Print",
"0x21" => "Page Up",
"0x02" => "Right Button **",
"0xA3" => "Right Ctrl",
"0x27" => "Arrow Right",
"0xA5" => "Right Alt",
"0xA1" => "Right Shift",
"0x5C" => "Right Win",
"0x91" => "Scrol Lock",
"0x5F" => "Sleep",
"0x2C" => "Print Screen",
"0x26" => "Arrow Up",
"0xAE" => "Volume Down",
"0xAD" => "Volume Mute",
"0xAF" => "Volume Up",
"0x05" => "X Button 1 **"
);

PHP Script-System 1.0 1

Aufgrund von Langeweile habe ich in den letzten 45 Minuten an einem PHP-Script gearbeitet. Der Name ist: PHP Script-System. Was macht es? Es vereinfacht das erstellen von kleinen Scripts (z.B. zum Berechnen von physikalischen Werten etc.), indem es einem die Arbeit abnimmt, Formulare zu erstellen. So muss man sich nur noch um die Berechnungen kümmern und nicht mehr um das Formular, das auslesen der Formulareingaben, das wieder Ausgeben der Formulareingaben und um den HTML Code allgemein.

Das Script benutzt die Smarty Template Engine, so dass man das Design leicht anpassen kann. Standardmäßig ist nur ein schlichtes Schwarz auf weiß – Design vorhanden. Außerdem sind drei Beispielscripts vorhanden.

Zum herunterladen HIER klicken. Anleitung ist in der _read.txt zu finden.

Hier ein Beispielscript – example2.phpsys.php:

[sourcecode='php'] // Example 2. Calculate C = Q / U (Capacity = charge / voltage) (i dont know if charge is the right english word for "elektrische Ladung" xD
$script = new ScriptParser();
$script->init(‘POST’);
$script->setNote(‘You have to define 2 of the variables. The one you want to calculate has to be 0 or left out’);
$script->initVar(‘C’, ‘Capacity’, ”, ‘C/V or F’);
$script->initVar(‘Q’, ‘Charge’, 50, ‘C’);
$script->initVar(‘U’, ‘Voltage’, 25, ‘V’);

if($script->vars['C'] && $script->vars['Q'] && $script->vars['U'])
$script->addOutput(‘You have to define exactly 2 variables, not more, not less.’);
else
{
if(!$script->vars['C'])
{
if(!$script->vars['Q'] || !$script->vars['U'])
$script->addOutput(‘You have to define exactly 2 variables, not more, not less.’);
else
{
$script->addOutput(‘Capacity – C = ‘. $script->vars['Q']/$script->vars['U'] .’ Farad’);
$script->addNLandOutput(‘ [ C=Q/U ] ‘);
}
}

if(!$script->vars['Q'])
{
if(!$script->vars['C'] || !$script->vars['U'])
$script->addOutput(‘You have to define exactly 2 variables, not more, not less.’);
else
{
$script->addOutput(‘Charge Q = ‘. $script->vars['C']*$script->vars['U'] .’ Q’);
$script->addNLandOutput(‘ [ Q=C*U ] ‘);
}
}
if(!$script->vars['U'])
{
if(!$script->vars['C'] || !$script->vars['Q'])
$script->addOutput(‘You have to define exactly 2 variables, not more, not less.’);
else
{
$script->addOutput(‘Charge U = ‘. $script->vars['Q']/$script->vars['C'] .’ V’);
$script->addNLandOutput(‘ [ U=Q/C ] ‘);
}
}
}

$script->Run();
?>[/sourcecode]

wbb2 externer Login 0

Vor kurzen war ich mit dem Problem konfrontiert einen Externen Login für das wbb2 zu bauen ,also eine Loginbox auf der Hauptseite.Man sollte nach dem Login natürlich nicht im Forum landen sonder wieder auf der Seite auf der man sich ursprünglich eingeloggt hatte. Diese Tatsache machte meinen ersten Lösungsansatz, einfach die entsprechenden POST-Daten dann die login.php des Forums zu senden, hinfällig. Also sah ich mir mit Tampa Data die gesendeten Cookies an. Und siehe da drei Cookies wbb2_userid,wbb2_userpassword,wbb2_lastvist. Also hier die erste Funktion zu Login.

[sourcecode lang="php"]
function LoginUser($username, $password)
{
global $db;
//db ist ein mysqli-Objekt siehe hierfür http://de3.php.net/manual/de/book.mysqli.php
$sql = “SELECT userid FROM bb1_users WHERE username = ‘”.mysql_escape_string($username).”‘ AND password = ‘” . md5($password) . “‘”;
if ($result=$db->query($sql))
{
$row = $result->fetch_assoc();
//gibt es das Feld userid im Array sind die Login-Daten gültig
if($row['userid'])
{
setcookie(“wbb2_userid”, $row['userid'], time()+3600*24*356, “/”, “.example.com”);
setcookie(“wbb2_userpassword”, md5($password), time()+3600*24*356, “/”, “.example.com”);
setcookie(“wbb2_lastvist”, //name des Cookies
time(), // Wert in diesen fall der aktuelle Timestamp
time()+3600*24*356, //Ablaufdatum des Cookies
“/”, // mit / wird der Cookies für alle Unterverzeichnise der Domain verfügbar gemacht
“.example.com” // .domain.tld machen wir den Cookies für alle Subdomains verfügbar für den fall dass das Forum sich auf einer Subdomain befindet.);
//true zurückgeben
return true;
}
}
//Im falle eines Datenbankfehlers oder üngültigen Login-Daten wird false zurückgegeben
return false;
}
[/sourcecode]

Jetzt wollen wir aber auch wissen ob der User eingeloggt ist. Dafür reicht es aber leider nich einfach zu prüfen ob der Cookie gesetzt ist oder nicht, da bei einer Anmeldung im Forum nur eine Session gesetzt wird. Hier wieder meine Funktion

[sourcecode lang="php"]
function IsUserLoggedIn($get_data=false)
{
global $db;
//wenn ein Cookie gesetzt ist
if(isset($_COOKIE['wbb2_userid']))
{
//und der Cookie wbb2_userid eine Zahl ist
if (is_numeric($_COOKIE['wbb2_userid']))
{
$sql = “SELECT userid, username FROM bb1_users WHERE userid = ‘”.mysql_escape_string($_COOKIE['wbb2_userid']).”‘ AND password = ‘”.mysql_escape_string($_COOKIE['wbb2_userpassword']).”‘;”;
$result = $db->query($sql);
$row = $result->fetch_assoc();
//Dann Checken wir wieder obs den User gibt und ob seine Passwort stimmt
if($row['userid'])
{
//wenn der Parameter $get_data gesetzt ist geben wir den namen un die id in einen array zurück
if($get_data)
return array(“userid” => $row['userid'], “username” => $row['username']);
//ansonsten nur true
else
return true;
}
//false zurückgeben wenns den user nich gibt
else
{
return false;
}
}
}
//Wenn jetzt also kein Cookie gesetzt ist checken wir die Session
else
{
//hier fragen wir einfach ab ob für den Aktuellen besucher (ip) eine Session existiert
$sql=”SELECT userid FROM bb1_sessions WHERE ipaddress = ‘”.$_SERVER['REMOTE_ADDR'].”‘ ORDER BY userid DESC”;
if($result=$db->query($sql))
{
$row = $result->fetch_assoc();
//Da nicht eingeloggte user die userid 0 bekommen muss die id größer 0 sein
if($row['userid'] > 0)
{
$sql = “SELECT userid, username FROM bb1_users WHERE userid = ‘”.mysql_escape_string($row['userid']).”‘;”;
$result = $db->query($sql);
$row = $result->fetch_assoc();
//siehe oben
if($row['userid'])
{
if($get_data)
return array(“userid” => $row['userid'], “username” => $row['username']);
else
return true;
}
}
}
}
//für alle anderen fälle wird false zurückgegeben
return false;
}
[/sourcecode]

Zum Schluss noch der Logout, wie oben reicht es nicht einfach nur die Cookies zu löschen auch die Session muss weg.

[sourcecode lang="php"]
function LogoutUser()
{
global $db;
$user=IsUserLoggedIn(true);
//unsere funktion von oben
if(is_array($user))
{
//die wbb2 Session-Daten des eingeloggen User löschen
$db->query(“DELETE FROM bb1_sessions WHERE userid = ‘”.mysql_escape_string($user['userid']).”‘”);
//und die PHP session löschen
session_destroy();
}
//dann noch die Cookies löschen
setcookie(“wbb2_userid”, -1, time()-3600, “/”, “.example.com”);
setcookie(“wbb2_userpassword”, -1, time()-3600, “/”, “.example.com”);
setcookie(“wbb2_lastvist”, -1, time()-3600, “/”, “.example.com”);
}
[/sourcecode]

So ich hoffe mal dass das Ganze einigermaßen verständlich war und ich jemanden damit Helfen konnte ;-) . Fragen, Anregungen und Kritik sind erwünscht.

C++: Vista / Windows 7 Aero Glass in WinAPI-Fenster 0

Auch wenn ich denke, dass es momentan keinen unserer Blog-Lesern interessiert, schreibe ich euch mal kurz, wie man mit C++ in einem WinAPI-Fenster den Aero-Glass Effekt nutzen kann, um, wie in diesem Beispiel, das ganze Fenster glasig machen zu können. Das Microsoft Windows Platform SDK wird benötigt.

Ich werd allerdings nichts genauer erläutern, da alles selbstverständlich ist und nur ne Schnellanleitung sein soll. Wollt ihr mehr über Glass in C++ wissen, lest folgende Artikel (Englisch):
Vista Goodies in C++: Using Glass in Your UI
Adding or Retrofitting Aero Glass into Legacy Windows Applications

Als erstes müsst ihr “dwmapi.h” einbinden. Am besten in der stdafx.h, wenn ihr ein VC++ Projekt habt.

[sourcecode language='cpp']#include [/sourcecode]

Danach kommt folgender Code irgendwo unter die CreateWindow Funktion (bei mir ist das ganze in der Funktion “InitInstance”).

[sourcecode language='cpp']MARGINS margin = {-1};
DwmExtendFrameIntoClientArea(hWnd, &margin);[/sourcecode]

Zuletzt muss dieser Code bei dem Zeichnungscode eingefügt werden. (Bei einem Standart-Projekt von Visual C++ steht da: “// TODO: Hier den Zeichnungscode hinzufügen.”)

[sourcecode language='cpp']RECT crect; HBRUSH hbr;
GetClientRect(hWnd,&crect);
hbr = CreateSolidBrush(RGB(0, 0, 0));
FillRect(hdc, &crect, hbr);[/sourcecode]
So siehts aus:

Glass

Glass

Das wars, schon habt ihr ein komplett glasiges Fenster. Was ihr damit macht ist euch überlassen. Ich habe damit zum Beispiel ein Programm gemacht, welches den ganzen Bildschirm bedeckt und einem nach dem Passwort fragt, damit man wieder den PC benutzen kann. Perfekt zum Schutz vor kleinen neugierigen Geschwistern.

P.S: Ich hasse es so zu schreiben xD

________________________________
________________________________
btw:  http://www.youtube.com/watch?v=-bs2BrvK4lM
Ab 01:05 singt B-Tight da:
Das ist Sex Design – Das ist Vresh Design
Das ist – alles – nur nicht das Letzte sein

:D

YouTube stellt Unterstützung für Internet Explorer 6 ein 2

Die Videoplattform YouTube will als eine der ersten großen Internetplattformen in der nächsten Zeit die Unterstützung für Microsofts Internet Explorer 6 einstellen, um die, durch den vom Browser verursachten zusätzlichen Aufwand, Kosten bei der Weiterentwicklung der Webseite zu senken. Besucht man die Seite dann mit dem IE6, werden einem Downloadlinks zu neueren Browsern gezeigt. Da YouTube Google gehört, ist zu vermuten, dass dabei Google Chrome hervorgehoben wird.

Dass ich das sehr gut finde versteht sich denke ich mal von selbst.

(Quelle: heise online)

Was hat Microsoft beim IE 6 eigentlich falsch gemacht? 4

Mein aktuelles Projekt ist der Relaunch eines großen Online-Portals. Dabei liegt das Hauptaugenmerk auf der Neugestaltung des Designs. Als ich dann das angelieferte Design vollständig umgesetzt hatte hab ich mich natürlich sofort ans Testen mit verschiedenen Browsern gemacht. Und siehe da FF2 & 3,  IE 7,  Safari, Opera und Chrome alles Super. Dann IE6.  Schock! Und die Frage wie MS das eigentlich geschafft hat das der IE6 alles so anders darstellt.

c.a. 700 Zeilen extra Stylsheet für den IE6 später sah es dann gleich aus. Aber die feine Art is das ja wirklich nicht. Bleibt nur zu hoffen das der IE6 bald “ausgerottet” wird…

Update:

So hier mal ein paar Möglichkeiten die IE6 auszuschließen bzw. den User Darauf hinzuweißen einen anderen Browser zu nutzen.

JS mit Jquery :
[sourcecode language='js']

[/sourcecode]

HTML mit Conditional Comments:

[sourcecode language='xhtml']

[/sourcecode]

und zu guter letzt mit PHP :

[sourcecode language='php']
$browser = get_browser(null, true);
if($browser['majorver'] <= 6 AND $browser['browser'] == 'IE')
die('Don\'t use IE....');
?>
[/sourcecode]

K.I.Z – Sexismus gegen Rechts 0

Seit dem 10.07.2009 ist es raus – das neue K.I.Z Album mit dem Namen Sexismus gegen Rechts. Bin natürlich direkt zum Media Markt und habs mir gekauft, da ich bisjetzt alle K.I.Z Alben habe. Und es ist wiedermal ein geniales Album geworden. Lieder wie immer provokant und lustig.

Hier mal die Trackliste:

  1. Rohmilchkäse
  2. Lass die Sau raus
  3. Halbstark
  4. Rauher Wind
  5. Einritt
  6. Ohrfeige
  7. Straight outta Kärnten
  8. Selbstjustiz
  9. Scheiterhaufen
  10. Hurensohn Episode 1
  11. Preisschild
  12. Auch Nutten wollen Pendlerpauschale
  13. Ringelpiez mit Anscheißen
  14. Das System
  15. Klopapier
  16. So Alt
  17. Töten
  18. Halbstark (Tai Jason Remix)

Am Besten gefällt mir das Lied “Hurensohn Episode 1″, der 3. Teil der “Hurensohn-Reihe” :D
Besonders geil ist die Stelle im Lied:

Deine Freunde legen Geld zusammen um dich zu verarschen
sie strippt für euch – an deinem Junggesellenabend
und du krigst einen Steifen – Man, das ist super peinlich!
du fragst sie ‘wer ist mein Vater’ sie sagt: ‘Berufsgeheimnis’

Naja, überzeugt euch selbst und kauft euch das Album. Könnt ja mal vorher bei Amazon reinhören:
http://www.amazon.de/Sexismus-Gegen-Rechts-K-I-Z/dp/B002BZQHO0/ref=sr_1_2?ie=UTF8&s=music&qid=1247426308&sr=8-2

Schlechte Musik und warum Havana Club so gefährlich ist 1

So nun meld ich mich auch mal zu wort. Also als erstes möchte ich mal feststellen das es natürlich objektiv gesehen keine schlechte Musik gibt. Aber rein subjektiv gesehn höre ich nunmal Elektro/Minimal/House/Trance usw. und finde es absolut unerträglich, nein!, Scheiße wenn ich in einen Club gehe und mir dann “Time of my Life” oder diesen absolut ausgelutschten Fluch der Karibik Remix anhörn muss. Da drängt sich mir doch die Frage auf wie viel man trinken (oder sich einwerfen) muss um dazu dann auch noch tanzen zu können. Zusammengefasst einfach nur Traurig.

So kommen wir zum Havana Club. Eigentlich geht’s weniger um Havana Club, Rum oder Alkohol sondern darum das man nicht angetrunken  mit Glasflaschen in Plastiktüten fahrradfahren sollte. Diese Erfahrung machte ich heute Morgen…

Ergebnis:  3 Gebrochene Speichen und ein geprellter Ellenbogen sowie ne Beule am Kopf.

soviel dazu…

Blog online – mit tollem Design von Frido / nkcmedia.net 0

Willkommen im Blog von Frido und Marco. Hier schreiben wir ab und zu über irgendwas was uns einfällt. Über Webdesign, Musik oder irgendeine sinnlose Scheisse. Viel Spass beim Lesen.

Achja, das Design stammt von nkcmedia.net, also Frido. Ist ihm gut gelungen.