anpera.net
https://anpera.dyndns.org/phpbb3/

Post-Daten werden nicht geuppdatet
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=1258
Seite 1 von 1

Autor:  Eliwood [ Mi 13 Apr, 2005 14:32 ]
Betreff des Beitrags:  Post-Daten werden nicht geuppdatet

[php]case "spendgold":
addnav("Zurück zur Gilde","gilden.php?op=drin&ID=".urlencode($row['gildenid'])."&name=".urlencode($row['gildenname'])."");
if ($row['gildenschatzkammer']==1)
$goldlager = 400000;
if ($row['gildenschatzkammer']==2)
$goldlager = 1000000;
if ($row['gildenschatzkammer']==3)
$goldlager = 2000000;
$platzuebrig = $goldlager-$row['gildengold'];
if ($_GET['act']=="")
{
output("In der Schatzkammer gibt es Platz für `^".$platzuebrig." Gold`&.");
output("<form action='gilden.php?op=drin&gilde=spendgold&act=spend' method='post'><input name='spend' lengt='10' maxlenght='10'><input type='submit' value='Spenden'></form>",true);
addnav("","gilden.php?op=drin&gilde=spendgold&act=spend");
}
if ($_GET['act']!="")
{
$spendgold = $_POST['spend'];
db_query ("UPDATE gilden SET gildengold='".$spendgold."' WHERE gildenid='".$_GET['ID']."'");
$session['user']['gildengold'] += $spendgold;
$sessoin['user']['gold'] -= $spendgold;d;
output("Du hast `^".$_POST['spend']." Gold`& gespendet");
}
break;
case "spendgems":
addnav("Zurück zur Gilde","gilden.php?op=drin&ID=".urlencode($row['gildenid'])."&name=".urlencode($row['gildenname'])."");
if ($row['gildenschatzkammer']==1)
$gemslager = 400;
if ($row['gildenschatzkammer']==2)
$gemslager = 1000;
if ($row['gildenschatzkammer']==3)
$gemslager = 2000;
$platzuebrig = $gemslager-$row['gildengems'];
if ($_GET['act']=="")
{
output("In der Schatzkammer gibt es Platz für `%".$platzuebrig." Edelsteine`&.");
output("<form action='gilden.php?op=drin&gilde=spendgems&act=spend' method='post'><input name='spend' lengt='10' maxlenght='10'><input type='submit' value='Spenden'></form>",true);
addnav("","gilden.php?op=drin&gilde=spendgems&act=spend");
}
if ($_GET['act']!="")
{
$gemsgold = $_POST['spend'];
db_query ("UPDATE gilden SET gildengems='".gemsgold."' WHERE gildenid='".$_GET['ID']."'");
$session['user']['gildengems'] += $gemsgold;
$sessoin['user']['gems'] -= $gemsgold;
output("Du hast `%".$_POST['spend']." Edelsteine`& gespendet");
}
break;[/php]

Man spende Gold oder Edelsteine. Ein Fehler kommt nicht, nach dem Spendenbestätigen kommt, dass man so und soviel gespendet hat, aber es wird nicht geupdatet :(


EDIT: $_GET['ID'] wird richtig festgelegt

EDIT: Die Spenden werden nich einmal von den eigenen Daten abgezogen :o

Autor:  anpera [ Mi 13 Apr, 2005 15:07 ]
Betreff des Beitrags: 

Keine Ahnung, was in $gilden['id'] drin steht, aber wenn für &ID= ein urlencode nötig ist, dann sollte $_GET['ID'] auch ein urldecode bekommen dürfen.

Außerdem sind in der Zeile
$sessoin['user']['gold'] -= $spendgold;d;
zwei kleine Fehlerchen enthalten. Einer davon auch in der Zeile
$sessoin['user']['gems'] -= $gemsgold;

Und sollte es statt
...UPDATE gilden SET gildengold='".$spendgold."'...
nicht besser
...UPDATE gilden SET gildengold=gildengold+{$spendgold}...

und statt
...UPDATE gilden SET gildengems='".gemsgold."'...
besser
...UPDATE gilden SET gildengems=gildengems+{$gemsgold}...
heißen?

Hmm, und eine Sicherheitsabfrage auf eingegebene negative Werte oder ungültige Eingaben sollte auch irgendwo vorhanden sein.

Autor:  Chaosmaker [ Mi 13 Apr, 2005 15:16 ]
Betreff des Beitrags: 

anpera hat geschrieben:
...UPDATE gilden SET gildengold=gildengold+{$spendgold}...
...UPDATE gilden SET gildengems=gildengems+{$gemsgold}...

:shock:
Neeeeeeeeeeeeein! :D
$gemsgold und $spendgold kommt direkt aus den POST-Daten und ist ungeprüft! Daher nur so:
...UPDATE gilden SET gildengold=gildengold+'{$spendgold}'...
...UPDATE gilden SET gildengems=gildengems+'{$gemsgold}'...
Ansonsten bekommen böse User quasi Vollzugriff auf die Datenbank (z.B. sollte es dann genügen, im Gold-Eingabefeld, das ja zu $spendgold wird, einzugeben: 0;delete from accounts;#).

Autor:  das_anp [ Mi 13 Apr, 2005 15:26 ]
Betreff des Beitrags: 

Darum hab ich doch das mit der Abfrage auf negative Werte (womit ein ebensolcher böser User die Gildenkasse mit negativen Spenden theoretisch bis weit ins Negative plündern kann - ob nun mit ' oder ohne) und auf ungültige Eingaben empfohlen :shock:

Autor:  Eliwood [ Mi 13 Apr, 2005 15:54 ]
Betreff des Beitrags: 

Das mit den Abfragen ob Wert negativ oder Positiv is, sollte noch kommen :roll:

Zuerst wollte ich versuchen, ob das überhaupt geht, und dem war nicht der Fall :pein:

Na ja, Danke an alle :wink:

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/