anpera.net https://anpera.homeip.net/phpbb3/ |
|
$session https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=4473 |
Seite 1 von 1 |
Autor: | Fargo [ Di 15 Apr, 2008 20:01 ] |
Betreff des Beitrags: | $session |
hallo wie wird das bearbeiten eines mysql befehls mit php bewältigt z.B. dieses hier: $session['user']['gems'] += 1; das gibs ja dann auch noch mit level und hp und sowas gibt es dafür eine extra funktion oder wie funktioniert das???? alsoin der common.php habe ich keine funktion gefunden mfg Fargo |
Autor: | The_Muh [ Di 15 Apr, 2008 20:19 ] |
Betreff des Beitrags: | Re: $session |
mit $session[user][<einfügen>] kannst du if abfragen machen, die werte bearbeiten (erhöhen, herabsetzen, neu setzen usw) und rechnen (mit anderen variablen) ich glaube das ganze ist in der dbwrapper.php zu finden, wo genau weiß ich allerdings nicht mit $session[user] kannst du alle werte aus der accountstable auslesen und verändern aber nur von dem spieler der das script gerade ausführt. ich weiß nicht ob es noch mehr möglichkeiten gibt, ich glaube aber nicht. ich hoffe ich hab geholfen mfg The_Muh |
Autor: | -DoM [ Di 15 Apr, 2008 20:40 ] |
Betreff des Beitrags: | Re: $session |
Du musst ein wenig genauer schauen, dann findest du die Funktion "saveuser()", welche für das Speichern, in der DB zuständig ist. |
Autor: | Fargo [ Di 15 Apr, 2008 20:58 ] |
Betreff des Beitrags: | Re: $session |
kann es sein das es die function charstats() in zeile 625 in der common.php ist?? in der dbwrapper.php konnte ich nix finden kann aber auch daran liegen dass ich mich noch nicht so gut damit auskenne mfg Fargo |
Autor: | Rikkarda [ Di 15 Apr, 2008 21:51 ] |
Betreff des Beitrags: | Re: $session |
ich hab das jetzt 2x gelesen und nicht so ganz den Sinn hinter der Frage erfassen können. Möchtest du wissen, wieso das so funktioniert, oder möchtest du irgendwas in einem script haben, und weisst nicht, wie du die php datei dazu bringen kannst es umzusetzen? Falls es 2. ist müsstest du schon genauer definieren, was du gern hättest. Falls es erstes ist siehe vorantworten^^ |
Autor: | -DoM [ Di 15 Apr, 2008 23:21 ] |
Betreff des Beitrags: | Re: $session |
Hast du eigentlich gelesen? -DoM hat geschrieben: Du musst ein wenig genauer schauen, dann findest du die Funktion "saveuser()", welche für das Speichern, in der DB zuständig ist. Wie dem auch sei.... Geladen werden die Daten an dieser Stelle: PHP: $sql = 'SELECT * FROM accounts WHERE acctid = \''.$session['user']['acctid'].'\''; $result = db_query($sql); if (db_num_rows($result)==1){ $session['user']=db_fetch_assoc($result); Dadurch sind sämtliche Felder der "accounts"-Tabelle im "$session['user']"-Array gespeichert. Diese können dann durch "$session['user']['wasauchimmer']" abgerufen werden und/oder verändert werden. Das Script "common.php" läuft dann weiter und weiter, bis am Ende die Funktion "saveuser()" aufgerufen wird und damit die eventuell veränderten Daten wieder in der Tabelle "accounts" gespeichert werden. Das passiert bei jedem Klick und jeder neuen Seite die dem Spieler angezeigt wird... |
Autor: | Fargo [ Mi 16 Apr, 2008 15:06 ] |
Betreff des Beitrags: | Re: $session |
oh sorry muss ich wohl überlesen haben aber genau das wollte ich wissen wie das funktioniert ^^ mfg Fargo |
Autor: | Fargo [ Sa 19 Apr, 2008 12:27 ] |
Betreff des Beitrags: | Re: $session |
öhm kann mir jemand erklären wie das bei saveuser funktioniert mit den ändern der daten??? weil ich will auch so eine funktion schreiben blicke da aber nicht durch hier der code falls jemand nicht weis was ich meine: $this->bbcode_second_pass_code('', 'function saveuser(){ 1 global $session,$dbqueriesthishit; 2 // $cmd = date("Y-m-d H:i:s")." $dbqueriesthishit ".$_SERVER['REQUEST_URI']; 3 // @exec("echo $cmd >> 4 /home/groups/l/lo/lotgd/sessiondata/data/queryusage-".$session['user']['login'].".txt"); 5 if ($session[loggedin] && $session[user][acctid]!=""){ 6 $session[user][output]=$session[output]; 7 $session[user][allowednavs]=serialize($session[allowednavs]); 8 $session[user][bufflist]=serialize($session[bufflist]); 9 if (is_array($session[user][prefs])) 10 $session[user][prefs]=serialize($session[user][prefs]); 11 if (is_array($session[user][dragonpoints])) 12 $session[user][dragonpoints]=serialize($session[user][dragonpoints]); 13 //$session[user][laston] = date("Y-m-d H:i:s"); 14 $sql="UPDATE accounts SET "; 15 reset($session[user]); 16 while(list($key,$val)=each($session[user])){ 17 if (is_array($val)){ 18 $sql.="$key='".addslashes(serialize($val))."', "; 19 }else{ 20 $sql.="$key='".addslashes($val)."', "; 21 } 22 } 23 $sql = substr($sql,0,strlen($sql)-2); 24 $sql.=" WHERE acctid = ".$session[user][acctid]; 25 db_query($sql); 26 } 27}') |
Autor: | Linus [ Sa 19 Apr, 2008 12:50 ] |
Betreff des Beitrags: | Re: $session |
Ist eigendlich gar nicht so schwer zu verstehen: Zunächst wird erst einmal geprüft ob der betreffende User überhaupt noch eingelogged ist bzw ob die User-ID nicht leer ist: $this->bbcode_second_pass_code('', 'if ($session[loggedin] && $session[user][acctid]!=""){') dann werden Felder in $session['user'] welche ein Array beinhalten serialisiert, d.h. es wird aus diesem Array ein String generiert der somit dann auch in ein Feld der Datenbank geschrieben werden kann: $this->bbcode_second_pass_code('', ' $session[user][allowednavs]=serialize($session[allowednavs]); $session[user][bufflist]=serialize($session[bufflist]); if (is_array($session[user][prefs])) $session[user][prefs]=serialize($session[user][prefs]); if (is_array($session[user][dragonpoints])) $session[user][dragonpoints]=serialize($session[user][dragonpoints]);') danach wird ein String gebaut der alle Elemente mit den dazugehörigen Werten aus eben diesem $session['user'] Array enthält: $this->bbcode_second_pass_code('', ' $sql="UPDATE accounts SET "; reset($session[user]); while(list($key,$val)=each($session[user])){ if (is_array($val)){ $sql.="$key='".addslashes(serialize($val))."', "; }else{ $sql.="$key='".addslashes($val)."', "; } } $sql = substr($sql,0,strlen($sql)-2); $sql.=" WHERE acctid = ".$session[user][acctid];') Uns dieser String wird dann an die MySQL-Datebank geschickt um alle Felder in der Tabelle accounts zu aktualisieren: $this->bbcode_second_pass_code('', 'db_query($sql);') wenn du wirklich eine derartige Funktion selbst schreiben möchtest wirst du dich wohl näher mit der Syntax von PHP und insbesondere mit den SQL-Abfragen auseinander setzen müssen. Also kann ich dir nur Empfehlen einschlägige Dokus zu PHP und MySQL zu studieren denn sonst wird das nichts. ![]() |
Autor: | Nightborn [ Sa 19 Apr, 2008 17:52 ] |
Betreff des Beitrags: | Re: $session |
mach bitte noch am anfang deines scripts $this->bbcode_second_pass_code('', 'define("user",1); define("acctid",1); define("loggedin",1)') damit du siehst, warum Eliwoods Signatur so ist wie sie ist. |
Autor: | Fargo [ So 20 Apr, 2008 09:32 ] |
Betreff des Beitrags: | Re: $session |
wenn ich selber so eine funktion schreiben würde wie würde die den dan aussehen???? kann mir da jemand helfen? mfg Fargo |
Autor: | -DoM [ So 20 Apr, 2008 10:47 ] |
Betreff des Beitrags: | Re: $session |
PHP: function wasauchimmer(){ //Hier kommt dann dein auszuführender Code hin... } Aufgerufen wird das dann mit dem hier: PHP: wasauchimmer();
|
Autor: | Fargo [ So 20 Apr, 2008 10:55 ] |
Betreff des Beitrags: | Re: $session |
![]() aber was müsste in der funktion stehen?? sagen wir mal ich habe alle daten von accounts aus der datenbank in $session['user']['wasauchimmer'] gespeichert wie müsste dan der inhalt der funktion aussehen?? mfg Fargo |
Autor: | Rikkarda [ So 20 Apr, 2008 11:22 ] |
Betreff des Beitrags: | Re: $session |
Fargo hat geschrieben: :lol: also das ist mir schon klar^^ aber was müsste in der funktion stehen?? sagen wir mal ich habe alle daten von accounts aus der datenbank in $session['user']['wasauchimmer'] gespeichert wie müsste dan der inhalt der funktion aussehen?? mfg Fargo wenn du mal nach prefs suchst findest du was ähnliches ![]() |
Autor: | Fargo [ So 20 Apr, 2008 11:28 ] |
Betreff des Beitrags: | Re: $session |
wo nach pref suchen??? |
Autor: | Rikkarda [ So 20 Apr, 2008 11:46 ] |
Betreff des Beitrags: | Re: $session |
suchenfunktion : getpref , savepref |
Autor: | Fargo [ So 20 Apr, 2008 14:01 ] |
Betreff des Beitrags: | Re: $session |
meinst du das: PHP: function getpref($prefname,$default = false,$acctid = false) { global $session; if($acctid == false) $acctid = $session['user']['acctid']; $result = db_query("SELECT `value` FROM `prefs` WHERE acctid='".$acctid."' AND `pref`='".$prefname."'"); $row = db_fetch_assoc($result); if(db_num_rows($result) == 0 || $row['value']=="" || $row['value']==" ") $row['value'] = $default; return $row['value']; } bei savepref habe ich nix gefunden ![]() und wie man die $session abruft das weis ich ja PHP: foreach ($session as $tabelle => $wert){ $sql= "UPDATE users SET $tabelle = $wert WHERE id ='". $_SESSION['id'] ."'"; $query = @mysql_query($sql); $session = @mysql_fetch_array($query); } so funktioniert es die daten zu ändern aber nicht richtig ![]() gehen wir mal davon aus das der 100 bei gold in der datenbank und wenn ich jetzt z.b. schreibe: $session[gold] ++; müsste der ja bei gold 101 schreiben aber der setzt das auf 1 gold und wenn ich z.b. schreibe: $session[gold] += 43; müsste der ja bei gold 143 schreiben aber der schreibt 43 ![]() der geht jedes mal vom wert 0 aus mfg Fargo |
Autor: | -DoM [ So 20 Apr, 2008 18:22 ] |
Betreff des Beitrags: | Re: $session |
Weil die Daten, zum Beispiel "$session", nicht innerhalb einer Funktion verfügbar sind. Nach mehreren Posts, hast du es geschafft dich verständlich auszudrücken. Das hättest du auch früher haben können... Es gibt 2 Arten Daten innerhalb einer Funktion verfügbar zu machen... Beispiel 1: PHP: function wasauchimmer($wert){ $wasweissich = 1000; $wasweissich += $wert; } wasauchimmer(100); Bei dem ersten Beispiel, wird ein Wert über die Variable "$wert" an die Funktion übergeben, und der Variablen "$wasweissich" hinzu gezählt. Beispiel 2: PHP: function wasauchimmer(){ global $session; $session['user']['wasweissich'] += 100; } Im zweiten Beispiel, wird "$session", mit Hilfe von "global" innerhalb der Funktion, verfügbar gemacht. |
Autor: | Auric [ So 20 Apr, 2008 22:39 ] |
Betreff des Beitrags: | Re: $session |
kleiner Hinweis zum Beispiel 1: $wasweisich steht außerhalb der funktion nicht zur verfügung, der Code beriwkrt in der form also gar nix (solange $wasweisich nicht noch irgendwie gebraucht wird). Beispiel 2 Verändert aber direkt etwas am Spiel. |
Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |