ForumübersichtPHP & MySQL

Punktescript - Seite 1

Einloggen
Benutzername:
Passwort:

Passwort vergessen?
Kostenlos
Anmelden
« 1 2 »
Geschlossen
AutorText


Thomas2500



Punkte: 584
Hallo, ich bekomme dieses script einfach nicht zum laufen, bitte um Hilfe!
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include "config.php";  
$eintrag=mysql_fetch_array(mysql_query("SELECT id,punkte FROM user WHERE id='$_GET[id]'")); 
var_dump($eintrag);
if(
$eintag[punkte] < 50) {
echo 
"Fehler";
} else {
echo 
"Gekauft";
$result1 $eintrag[punkte] - 50;
$sql=mysql_query("UPDATE `1212`.`user` SET `punkte` = '$result1' WHERE id='$_GET[id]'");
}
?>



ntmb
Admin



Punkte: 13700
Hallo,

eins vor Weg, dein Script hat eine Sicherheitslücke ($_GET[id]) und zwar SQL-Injection, mehr Informationen dazu findest du logischerweise bei google oder halt wikipedia.

Wäre nett wenn du uns deine Fehlermeldung/Problem genauer schildern könntest.

$sql=mysql_query("UPDATE `1212`.`user` SET `punkte` = '$result1' WHERE id='$_GET[id]'" Smily NR:7 ;

Kannst doch die Festlegung der Variable weglassen?

Würde das Update-Statement so schreiben:
mysql_query('UPDATE user SET punkte = punkte-50 WHERE id='.$_GET['id'].' Limit 1' Smily NR:7 ;

Naja...

mfg Eugen

Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen


Thomas2500



Punkte: 584
Danke für die Schnelle Antwort, mein Problem besteht darin, dass immer Fehler angezeigt wird, obwohl genug Punkte vorhanden sind.

PS.: Vielleicht das script eher so:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include "config.php";  
$eintrag=mysql_fetch_array(mysql_query("SELECT id,punkte FROM user WHERE id='$_SESSION[id]'")); 
var_dump($eintrag);
if(
$eintag[punkte] < 50) {
echo 
"Fehler";
} else {
echo 
"Gekauft";
$result1 $eintrag[punkte] - 50;
$sql=mysql_query("UPDATE `1212`.`user` SET `punkte` = '$result1' WHERE id='$_SESSION[id]'");
}
?>


Habe die Gett's mit '$_SESSION[id]' ausgetauscht
<editiert am 28.04.09 um 21:07 von Thomas2500>



ntmb
Admin



Punkte: 13700
1
2
3
4
5
6
7
8
9
10
11
12
<?php
include "config.php";  
$eintrag=mysql_fetch_array(mysql_query("SELECT id,punkte FROM user WHERE id='$_SESSION[id]'")); 
var_dump($eintrag);
if(
$eintag[punkte] < 50) {
echo 
"Fehler";
} else {
echo 
"Gekauft";
//$sql=mysql_query("UPDATE `1212`.`user` SET `punkte` = '$result1' WHERE id='$_SESSION[id]'");
echo "<br><br>UPDATE `1212`.`user` SET `punkte` = punkte-50 WHERE id='$_SESSION[id]'<br><br>";
}
?>


Wenn Abfragen nicht funktionieren, dann mach doch einfach ein Echo daraus, anschließend bei phpmyadmin ausführen und du weisst danach mehr. Smily NR:8

mfg Eugen

Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen


Thomas2500



Punkte: 584
Ja, aber der IF befehl funktioniert nicht Smily NR:4



ntmb
Admin



Punkte: 13700
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include "config.php";  
$eintrag=mysql_fetch_array(mysql_query("SELECT id,punkte FROM user WHERE id='$_SESSION[id]'")); 
var_dump($eintrag);
echo 
'<br>Aktuelle Punkte: '.$eintag['punkte'].'<br>';
if(
$eintag['punkte'] < 50) {
echo 
"Fehler";
} else {
echo 
"Gekauft";
//$sql=mysql_query("UPDATE `1212`.`user` SET `punkte` = '$result1' WHERE id='$_SESSION[id]'");
echo "<br><br>UPDATE `1212`.`user` SET `punkte` = punkte&#8722;50 WHERE id='$_SESSION[id]'<br><br>";
}
?>


Einfach immer alle Möglichkeiten durchspielen, nun kannst du sehen welchen Wert $eintag['punkte'] hat.

Edit: Hm deine Bedingung ist falsch, wenn ich gerade mal so darüber nachdenke, es müsste so ($eintag[punkte]>=50) sein.

mfg Eugen
<editiert am 28.04.09 um 21:26 von ntmb>

Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen


Thomas2500



Punkte: 584
den eintrag punkte konnte ich vorher auch schon sehen, aber mit dem Rest kann ich leider nichts anfangen Smily NR:1



ntmb
Admin



Punkte: 13700
Zitat:
Hm deine Bedingung ist falsch, wenn ich gerade mal so darüber nachdenke, es müsste so ($eintag[punkte]>=50) sein.

Probier das mal.

mfg Eugen

Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen


Thomas2500



Punkte: 584
Lustig, jetzt funktioniert es, aber wie macht man es, dass man nicht ins Minus kommen kann.



ntmb
Admin



Punkte: 13700
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include "config.php";  
$eintrag=mysql_fetch_array(mysql_query("SELECT id,punkte FROM user WHERE id='$_SESSION[id]'")); 
var_dump($eintrag);
echo 
'<br>Aktuelle Punkte: '.$eintag['punkte'].'<br>';
if(
$eintag['punkte'] >= 50) {
echo 
"Gekauft";
mysql_query('UPDATE user SET punkte = punkte-50 WHERE id='.$_SESSION[id].' Limit 1');

else {
echo 
"Fehler";
}
?>

Du musst ja nur den Inhalt deiner If-Bedingung anpassen.

mfg Eugen

Der freundliche Admin aus der Nachbarschaft
Lachecke.de - Dein täglicher Lacher im Internet
Listrank.de - Die ultimative Topliste nach Themen
« 1 2 »
Geschlossen