eval kannte ich noch garnicht.
ich glaub das muss ich mal ausprobieren =)
Beiträge von cottton
-
-
Kleiner Fehler eingeschlichen - Spielernamen können keine " und ' beinhalten.
Also bei allen Ausgaben oder beim Speichern in der db wird alles gefiltert. Da hab ich schon aufgepasst.
Hab auch vieles selbst getestet, was passiert, wenn man versucht code einzuschleusen (mit tools oder manuell)Bei den key werd ich ja jetzt doch die IDs nutzen. War ja bissl verpeilt und hab ganz "vergessen", dass die ja gespeichert werden, wenn player existiert.
Zum thema ob was passieren kann hab ich jetz mal alles getestet, was mir so auf die schnelle eingefallen ist.
Ergebnis: INERHALB von PHP kann wohl nix passierenPHP
Alles anzeigenecho '<h4>print_r($a)</h4><br />'; $p1 = '< >!^´\\|/§$%&()=?_:;,.-#+äÄ\'*\')'; $p2 = ']die;'; $p3 = '];echo $p1;'; $p4 = '];exit;'; $a[$p1] = 'content1'; $a[$p2] = 'content2'; $a[$p3] = 'content3'; $a[$p4] = 'content4'; echo "<pre>";print_r($a);echo"</pre>"; echo '<hr>'; echo '<h4>foreach($a as $key => $val){</h4><br />'; foreach($a as $key => $val){ echo 'key: '.htmlspecialchars($key); echo 'val: '.htmlspecialchars($val); echo '<br />'; } echo '<hr>'; echo '<h4>if($px == $p1){</h4><br />'; $px = $p1; if($px == $p1){ echo 'yes'; }else{ echo 'no' ; } echo '<hr>'; echo '<h4>if(trim($px) == trim($p1)){</h4><br />'; if(trim($px) == trim($p1)){ echo 'yes'; }else{ echo 'no' ; } echo '<hr>'; echo '<h4>define(\'TEST1\',$a[$p1]);</h4><br />'; define('TEST1',$a[$p1]); define('TEST2',$a[$p2]); define('TEST3',$a[$p3]); define('TEST4',$a[$p4]); echo 'TEST1: '.TEST1;echo '<br />'; echo 'TEST2: '.TEST2;echo '<br />'; echo 'TEST3: '.TEST3;echo '<br />'; echo 'TEST4: '.TEST4;echo '<br />'; echo '<hr>'; echo '<h4>define($x,$key);</h4><br />'; $c = 5; foreach($a as $key => $val){ $x = 'TEST'.$c; define($x,$key); $c++; } echo 'TEST5: '.TEST5;echo '<br />'; echo 'TEST6: '.TEST6;echo '<br />'; echo 'TEST7: '.TEST7;echo '<br />'; echo 'TEST8: '.TEST8;echo '<br />'; die; -
Aber was?
Ich geb die daten ja zB nicht ungefiltert aus.
Da aber in Spielernamen alles drin stecken kann (<>|& ect ect ) kann ich da nicht gross Filtern.
Geplant war den Namen nur als Key zu verwenden.
Heisst ja, dass ein Name wie <&&'66"%&/> "nur" im PHP script Verwendung findet.$_SESSION['stalk']['<&&'66"%&/>'] - kann doch nix passieren, oder?
-
ich bekomm ... moment, ich hab ja doch ne id.
Wenn der Spieler existiert speichern wir den ja ;D
Oh man ...
;D
danke =) -
Speichern wollt ich den Player nich extra.
Der Name wird nur vom User gebraucht.
Der will den sozusagen "stalken". Wenn browser zu, dann nix - den Namen braucht dann keiner mehr.Mir fällt gerade ein - ich könnte ja den Namen md5 "codieren", also den hash nutzen.
Beim Vergleich, ob key == key ist logischerweise beide codieren.
Aber dann hab ich da ne 64 Zzeichen Kette in der SESSION ;D
wie sieht das denn aus ;DGits was "kürzeres"?
btw - ich lösche andauernd meine Worte hier im Forum weil ich die "" Funktion von scriptly gewohnt bin lol ;D (STRG+CTRL+Pfeil links =)
-
Kann mir hier was passieren?
Ich bekomme über $_GET['stalk'] einen Player Name der erstmal ge-trim()-t wird.
Also: http://.......&stalk=cottton&ect....Den Player Name wollte ich dann als Key für ein SESSION Array nutzen, um den später von anderen unterscheiden zu können.
Die Spieler Namen können alles Mögliche enthalten. ZB auch < > | & ect ectSollte ich noch nach irgentwas filtern oder evtl den Namen umformatieren? (wenn ja - in was?)
Thanks! -
+"px"
NA KLAR! ;D
Danke! funktioniert! =)Ich hatte auch erst gedacht - span "inhalt" und daneben span "button".
Funtoiniert auch ohne dem TS3 inhalt.
Aus irgenteinem grund macht sich das window MIT inhalt einfach mal breit und knallt mir den button unten dran.
Daher dachte ich dann an position:absolute und breite auslesen lassen.Danke nochmal! =)
-
So, noch ein problem.
css und html mögen mich einfach nicht ...Der Plan:
ein Fenter am linken Rand auf click anzeigen lassen.Also - button am linken Rand. Wenn button "onclick" dann öffnet sich das Fenster(div) und der button soll am rechten Rand des Fensters sein.
Der code:
HTML
Alles anzeigen<!-- TS3 --> <div id="TS3_button" style="position:fixed;left:0px;top:250px;opacity:0.5;cursor:pointer;" onmouseover="style.opacity='1'" onmouseout="style.opacity='0.5'" onclick="toggle_id_display('TS3_button');toggle_id_display('TS3_window');get_TS3_window_width();"> <?echo TS3_BUTTON;?> </div> <span id="TS3_window" style="position:fixed;left:0px;top:250px;display:none;border: solid 1px #9E9E9F;background:#3F4043;vertical-align: top;"> <span id="ts3viewer_999761"> <script type="text/javascript" src="http://static.tsviewer.com/short_expire/js/ts3viewer_loader.js"></script> <script type="text/javascript"> <!-- var ts3v_url_1 = "http://www.tsviewer.com/ts3viewer.php?ID=999761&text=000000&text_size=12&text_family=1&js=1&text_s_weight=bold&text_s_style=normal&text_s_variant=normal&text_s_decoration=none&text_s_color_h=525284&text_s_weight_h=bold&text_s_style_h=normal&text_s_variant_h=normal&text_s_decoration_h=underline&text_i_weight=normal&text_i_style=normal&text_i_variant=normal&text_i_decoration=none&text_i_color_h=525284&text_i_weight_h=normal&text_i_style_h=normal&text_i_variant_h=normal&text_i_decoration_h=underline&text_c_weight=normal&text_c_style=normal&text_c_variant=normal&text_c_decoration=none&text_c_color_h=525284&text_c_weight_h=normal&text_c_style_h=normal&text_c_variant_h=normal&text_c_decoration_h=underline&text_u_weight=bold&text_u_style=normal&text_u_variant=normal&text_u_decoration=none&text_u_color_h=525284&text_u_weight_h=bold&text_u_style_h=normal&text_u_variant_h=normal&text_u_decoration_h=none"; ts3v_display.init(ts3v_url_1, 999761, 100); --> </script> </span> <span id="TS3_close_button" style="display:none;cursor:pointer;position:absolute;top:0;" onclick="toggle_id_display('TS3_button');toggle_id_display('TS3_window');"><?echo TS3_BUTTON;?></span> </span> <!--/ TS3 -->
und das JS:JavaScriptfunction get_TS3_window_width(){ setTimeout(function(){ document.getElementById("TS3_close_button").style.display=''; document.getElementById("TS3_close_button").style.left=ts3viewer_999761.offsetWidth; alert(ts3viewer_999761.offsetWidth); }, 1000); }Der Ablauf ist recht einfach:
- onlcick auf button id="TS3_button" wird dieser versteckt,
- gleichzeitig span id="TS3_window" angezeigt,
- und eine JS function aufgerufen um die Breite des spans herauszubekommen.Warum die breite: Das TS3 window hat dynamische breite/höhe. Ich hab gesehen, dass viele einfach eine feste Breite angeben, wodurch dann der Scrollbalken erwacht -.-
Testweise hab ich mir mit alert die Breite anzegen lassen und es funtioniert. Allerdings lässt sich wohl der Abstand "left" nicht per JS setzen ?
document.getElementById("TS3_close_button").style.left=ts3viewer_999761.offsetWidth;
^sollte doch eigtl das style von "left" auf 'ts3viewer_999761.offsetWidth' setzen (also die ermittelte Breite).
Aber es tuts nicht.
Hab ich da was übersehen? -
Aber gut, dass ich nicht der einzige bin ;D
Werd das mal stück für stück auseinander nehmen.
Eigtl ist es nicht so dragisch, da alle, die auf die seite gehen sowie so große bildschirme haben.
Aber es lässt mir halt keine ruhe ;Dtrotzdem danke =)
-
die seite kann ich momentan noch nich hochladen ... würde nicht laufen.
Aber egal - hab mal den output und die ganzen styles die verwendet werden in ne .html gepackt. -
-
Alter thread, aber gleiches Thema:
Bei "text-overflow: ellipsis" bekomme ich nicht die "..."
Auf online test Seiten funktioniert es einwandfrei: http://www.w3schools.com/cssref/tryit.a…3_text-overflowBei mir wird (in einer Tabelle) die Zeile (td) nicht umgebrochen und schrumpft nicht weiter, als der Inhalt es zulässt.
Woran kann das liegen? -
Gehe ich richtig in der Annahme, dass es sich nicht lohnt radio button und check boxen zu ändern?
Hab festgestellt, dass es schon ein krampf ist, ein select zu "stylen".
Bei checkboxen hab ich das Problem, dass Firefox (wiedermal) macht, was er will.Muss sowieso mal loswerden, dass ich Firefox überhaupt nicht abhaben kann. Der macht was er will. ;D
Hab mich mal umgesehen und Amazon zB hat ja auch ein neues Design. Und selbst die haben keine checkbox oder select bearbeitet.
Aufwand/Nutzen scheint zu gering zu sein, oder?
Bleibt wohl die Kunst, die checkbox usw im standard style einzubinden =)Oder gibt es inzwischen doch einfache Lösungen ohne JS ?
-
Oh man ...
Da denkt man es wäre bissl mehr dazu, sucht und sucht im Netz,
aber am Ende bekomt man eine "Blitzidee" und merkt, dass es so einfach ist:client side:
PHP
Alles anzeigen// url der API $url = 'http://localhost/server_side.php'; // Daten, die gesendet werden sollen $postdata = 'name=cottton'; // init $ch = curl_init($url); // options curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); // execute $data = curl_exec($ch); // decode $data = json_decode($data,true); // close curl curl_close($ch); // print result echo "<pre>";print_r($data);echo "</pre>";server side:
PHP
Alles anzeigen// checking if "something" came in if(isset($_POST['name'])and $_POST['name'] =='cottton'){ // any code ... $whatever = 'cottton'; $anything = 'bla'; $lolz = 13*13*13; // sort data ... $data['whatever'] = $whatever; $data['anything'] = $anything; $data['lolz'] = $lolz; }else{ // error message ... $data['Error'] = 'wrong name!'; } // json_encode data and 'echo it out' echo json_encode($data);Jetzt nur noch den ganzen kram drum rum wie zB API key und und und
=) -
ich hätte alles in ein array gelesen und in_array genutzt (WENN die datei nicht riesen groß wird/ist)
-
ich hab viele functions in denen ich mehrere vars rausgeben muss (oder besser will =).
Klar kann man alles in ein einziges Array packen, aber dann (um selbst wieder durchzusehen) müsste ich es "draußen" wieder umsortieren.BTW - mit return klappt es auch bei "unset". Wobei es immernoch falsch ist =)
-
-
hehe ja, ich hab mir heut nen ast gesucht, ob ich irgentwo im gesamten ablauf den wert doppelt vergeben habe.
jedesmal kam der gleiche wert raus, auch wenn ich ihn gelöscht hatte ;D
übel wenn man das nicht weiß ;Dim prinzip hab ich zwei wichtige sachen gelernt:
- nie nie nie unset() in einer function, weil auch die global-zuweisung gelöscht wird
- und = array(); löscht den inhalt eines arrays -
...
PHP
Alles anzeigen$var = array(); erste_function($var); function erste_function($var) { global $var; $var[] = 'content 1'; } zweite_function($var); function zweite_function($var) { global $var; // hier stellen wir fest, // dass wir $var löschen wollen, // um neuen ihnalt zuzuweisen unset($var); $var[] = 'content 2'; } print_r($var); // wird ausgabe 'content 1' ergeben
Oder auch:PHP
Alles anzeigen$var = array(); erste_function($var); function erste_function($var) { global $var; $var[] = 'content 1'; } zweite_function($var); function zweite_function($var) { global $var; // hier stellen wir fest, // dass wir $var löschen wollen, // um neuen ihnalt zuzuweisen unset($var); $var[] = 'content 2'; global $var; // man könnte ja mal versuchen, // die $var wieder global zu setzen =) } print_r($var); // wird ausgabe wird wieder 'content 1' ergeben
richtig wäre dann aber:PHP
Alles anzeigen$var = array(); erste_function($var); function erste_function($var) { global $var; $var[] = 'content 1'; } zweite_function($var); function zweite_function($var) { global $var; $var = array(); // besser so =) $var[] = 'content 2'; } print_r($var); // wird ausgabe 'content 2' ergebenHat mir heute kopf-fasching bereitet ;D
-