Problem mit MySql-Anweisung in PHP-Script
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abbuchung
angreifer
beitrag
eintrag
energie
existiert beitrag
fehler
gel
gen
kristall
login
metall
pa
pawort
pressen
set
sinnen
steuern
update
zeitung
-
Hi
ich habe folgendes Problem,
Mein "Abbuchungs-Script" f?r ein Browsergame streikt. Wenn ich dieses Script ausf?hre kommt kein Fehler oder sonst was. Auch die Funktion Error_reporting(E_ALL) zeigt nix an. Aber wenn ich in die Datenbank schaue ver?ndern sich die Daten nicht. Hier is ma des Script:
<? error_reporting(E_ALL); include("db_connect.php"); if(isset($_COOKIE['user'])) { $user = $_COOKIE['user']; $ergebnis_mm = mysql_query("SELECT GB_1 FROM Login WHERE name='$user'"); while($row = mysql_fetch_object($ergebnis_mm)) { echo $row->GB_1; $stufe_mm = $row->GB_1; } $a = 2; $b = 1; $kosten_m = 40 * pow($a, $stufe_mm); $kosten_k = 20 * pow($a, $stufe_mm); $energie = 10 * pow(1.7, $stufe_mm); mysql_free_result($ergebnis_mm); $abbuchung = mysql_query("UPDATE `Login` SET `Metall` = `Metall` - '$kosten_m', `Kristall` = `Kristall` - '$kosten_k', `Energie2` = `Energie2` + '$energie', `GB_1` = `GB_1` + '$b'"); if($abbuchung == TRUE) { mysql_free_result($abbuchung); echo "<html> <head> <meta http-equiv=\"refresh\" content=\"1; URL=gebaeude2.php\"> </head> </html>"; } } else { echo "ERROR"; mysql_free_result($abbuchung);} ?>
thx scho ma im vorraus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich w?rde an deriner stelle
$abbuchung = mysql_query("UPDATE Login SET Metall = Metall - '$kosten_m' AND Kristall = Kristall - '$kosten_k' AND Energie2 = Energie2 + '$energie' AND GB_1 = GB_1 + '$b'");
und
if($abbuchung)
Schreiben
Theoretisch ist eine variable aber nur f?r SELECTs notwendig, da du da results weiterverwenden musst
Ein Where beim Update w?re auch nicht schlecht
Zudem w?rde ich ein 2. Cookie schreiben, und dass Passwort einf?gen, da ein Fake zu einfach w?re
Dann m?sstest du nur noch if(mysql_num_rows(mysql_query("SELECT User FROM Login WHERE User = '$user' AND Pass = '$pass'")) == 1)
{
echo "Eingeloggt";
}
Am besten w?ren immernoch Sessions
Und ich w?rde nicht den Cookie-Namen user verwenden, da jede Website, die den Cookie user schreiben will das ?berschreibt
Ohne Pr?fung w?rst du dann als User eingeloggt der warscheinlich garnicht existiert :?
Beitrag ge?ndert am 6.06.2006 14:29 von kai008 -
Zudem w?rde ich ein 2. Cookie schreiben, und dass Passwort einf?gen, da ein Fake zu einfach w?re
Dann m?sstest du nur noch if(mysql_num_rows(mysql_query("SELECT User FROM Login WHERE User = '$user' AND Pass = '$pass'")) == 1)
{
echo "Eingeloggt";
}
versteh net ganz was du damit erreichen willst
es soll nur ein zwischenscript sein was au?erdem versteckt aufm server liegt. Den COOKIE namen werd ich dank deinem tipp ers ma ?ndern. Aber w?r nett wenn du mir noch ma den Sinn der dahinter steht erkl?rst :) -
z. B.:
Der User ?ffnet das Cookie, was local am rechner liegt
?ndert den Namen, der darin gespeichert wird (Bei IE sind Cookies unverschl?sselt (zumindest alle 6.x))
Schon w?rde er anderst indentifiziert werden
Er k?nnte dich steuern, da er ja glaubt dass der Angreifer du bist, da er ja deinen Namen zum ?ndern bekommt
W?rde er das machen, wenn dein Pass auch gespeichert wird, und nicht zuf?llig dass selbe Pass hat wie du, sucht der Script zuerst nach deinen Namen, h?tte aber noch immer sein Pass, woduch er es nicht findet und ihm ausspeert
Somit muss er dein Pass haben, um sich als dich auszugeben
Nat?rlich geh?rt statt echo "Eingeloggt"; der eigendliche Script hin, und unter } else { echo "Account existiert nicht" } oder so, da er ja keinen findet
Ich denke, dass war jetzt erkl?rend genug :?
-
Ich habe jez die "UPDATE-Zeile" so geschrieben wie mir kai008 empfohlen hat.
Aber es passiert immer noch nix in der Datenbank .
Ich find den Fehler einfach net....
Helft mir bitte...
Thx im vorraus
PS: sollte schnell gehen =P
Beitrag ge?ndert am 6.06.2006 18:11 von walkonshit
Beitrag ge?ndert am 7.06.2006 09:20 von walkonshit -
Hallo, ich habe den Fehler auch:
$aendern = "UPDATE `presse` Set `imgfile` = '$imgfile', `urlfile` = '$urlfile', `titel` = '$titel', `datum` = '$datum', `zeitung` = '$zeitung', WHERE `id` = '$id'"; $update = mysql_query($aendern) or die("<font size=\"+4\" color=\"#ff0000\">Eintrag konnte nicht bearbeitet werden</font>");
Bei mir auch, alle Variablen werden ?bergeben,
keine wird ge?ndert.
Keine Fehlermeldung, -
@speedtouch:
Vll ist es ja nur hier im Forum so, aber ganz hinten ist ein , zu viel. Probier es mal so:
$aendern=" UPDATE presse SET imgfile='$imgfile', urlfile='$urlfile, titel='$titel', datum='$datum', zeitung='$zeitung' WHERE id='$id' "; mysql_query($aendern) or die("<font size=\"+4\" color=\"#ff0000\">Eintrag konnte nicht bearbeitet werden</font>");
@kai:
Bei dir k?nnte das Problem sein, dass er nicht wei?, wo er updaten soll, da du kein WHERE angegeben hast:
$abbuchung=" UPDATE Login SET Metall=Metall-'$kosten_m', Kristall=Kristall-'$kosten_k', Energie2=Energie2+'$energie', GB_1=GB_1+'$b' WHERE name='$user' "; mysql_query($abbuchung);
-
Hey, danke, mein Problem (speedtouch92) ist gel?st!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage