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. :D

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

: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

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 :bash:
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 :cry:

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/