anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Di 10 Jun, 2025 10:47

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: $session
BeitragVerfasst: Di 15 Apr, 2008 20:01 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Di 15 Apr, 2008 20:19 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Mo 11 Feb, 2008 13:30
Beiträge: 96
Geschlecht: Männlich
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Di 15 Apr, 2008 20:40 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
Du musst ein wenig genauer schauen, dann findest du die Funktion "saveuser()", welche für das Speichern, in der DB zuständig ist.

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Di 15 Apr, 2008 20:58 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Di 15 Apr, 2008 21:51 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
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^^

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Di 15 Apr, 2008 23:21 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
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...

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Mi 16 Apr, 2008 15:06 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
oh sorry muss ich wohl überlesen haben aber genau das wollte ich wissen wie das funktioniert ^^

mfg
Fargo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Sa 19 Apr, 2008 12:27 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
ö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}')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Sa 19 Apr, 2008 12:50 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: Sa 19 Apr, 2008 17:52 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 15 Okt, 2005 14:06
Beiträge: 864
Geschlecht: Männlich
LoGD: http://shinobilegends.com
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.

_________________
Entwicklung Lotgd 1.2.2 +nb
1.2.1 +nb ist final

Bugreports/Testing erwünscht, http://nb-core.org

Wichtige Info für Programmierersucher:
viewtopic.php?f=34&t=4285


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 09:32 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
wenn ich selber so eine funktion schreiben würde wie würde die den dan aussehen????
kann mir da jemand helfen?

mfg
Fargo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 10:47 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
PHP:
function wasauchimmer(){
//Hier kommt dann dein auszuführender Code hin...
}

Aufgerufen wird das dann mit dem hier:
PHP:
wasauchimmer();

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 10:55 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
: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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 11:22 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
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 ;)

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 11:28 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
wo nach pref suchen???


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 11:46 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 28 Aug, 2004 18:48
Beiträge: 1712
suchenfunktion : getpref , savepref

_________________
~Inaktiv und Abwesend solange Mysql hier Moderatorenrechte hat~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 14:01 
Offline
User
User

Registriert: Di 15 Apr, 2008 19:55
Beiträge: 14
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 18:22 
Offline
Freak
Freak
Benutzeravatar

Registriert: Mi 06 Jul, 2005 19:10
Beiträge: 543
Wohnort: Bremen
Geschlecht: Männlich
LoGD: http://my-logd.com/motwd
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.

_________________
Das schwarze Schaf der LotGD-Community, 2. platzierter, beim Giga.de Homepage-Award 2007 und 1. platzierter beim German Web Award 2008.
PC-ACTION meint: "Sehr gut" für MotWD!
Mind of the White Dragon => http://my-logd.com/motwd


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: $session
BeitragVerfasst: So 20 Apr, 2008 22:39 
Offline
Freak
Freak

Registriert: So 30 Okt, 2005 17:48
Beiträge: 1408
Wohnort: PB
Geschlecht: Männlich
LoGD: http://dav.blood-reaver.de/lotgd/
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.

_________________
Mehr oder minder inaktiv


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum