| anpera.net https://anpera.homeip.net/phpBB3/ |
|
| Post-Daten werden nicht geuppdatet https://anpera.homeip.net/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
|
|
| 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}...
Neeeeeeeeeeeeein!
$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
|
|
| Autor: | Eliwood [ Mi 13 Apr, 2005 15:54 ] |
| Betreff des Beitrags: | |
Das mit den Abfragen ob Wert negativ oder Positiv is, sollte noch kommen
Zuerst wollte ich versuchen, ob das überhaupt geht, und dem war nicht der Fall
Na ja, Danke an alle
|
|
| Seite 1 von 1 | Alle Zeiten sind UTC + 1 Stunde |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|