|
You last visited: Today at 21:07
Advertisement
Kleiner Php Fehler. Php funktioniert nicht!
Discussion on Kleiner Php Fehler. Php funktioniert nicht! within the Web Development forum part of the Coders Den category.
03/27/2013, 11:48
|
#1
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Kleiner Php Fehler. Php funktioniert nicht!
Hi,
ich habe hier irgendwo einen Fehler gemacht aber finde Ihn als ANfänger leider nicht :S
PHP Code:
<?php
session_start ();
if($_SESSION['id'] == "") {
die('Kein Account gefunden!');
}
else {
include('../inc/config.php');
mysql_select_db('player');
$query = mysql_query("SELECT *, SUM(`account_id`) as amount FROM player where name = '" . $_SESSION['id'] . "'");
$cccc = mysql_query("SELECT (`account_id`) FROM player where name = '" . $_SESSION['id'] . "'");
$lasttime = mysql_fetch_array($query);
$amount = $lasttime['amount'];
$insertnew = false;
mysql_select_db('account');
$xxx = mysql_query("UPDATE account.account SET status = 'BLOCK' where id = '$cccc'");
header("Location: http://****.html");
exit;
}
?>
Ich Danke für eure Hilfe
|
|
|
03/27/2013, 11:57
|
#2
|
elite*gold: 104
Join Date: Jun 2010
Posts: 547
Received Thanks: 127
|
Es wäre noch gut, wenn du sagen könntest, was genau das Problem ist bzw. wenn es sich um etwas programmiertechnisches handelt, in welcher Zeile der Fehler liegt. So kann man jetzt erstmal nur spekulieren, da ganz schön viel falsch sein könnte wie z.B. die Tabellen- und Spaltennamen.
Was mir nur auffällt ist diese Zeile:
PHP Code:
$*** = mysql_query("UPDATE account.account SET status = 'BLOCK' where id = '$cccc'");
Hier änderst du den Account, bei dem die ID wirklich"$cccc" ist. Da ich vermute, dass du jedoch eher die Variable $cccc nutzen willst, sollte das so aussehen:
PHP Code:
$*** = mysql_query("UPDATE account.account SET status = 'BLOCK' where id = '".$cccc."'");
|
|
|
03/27/2013, 12:06
|
#3
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Das Script soll in der Datenbank mit dem Namen "player" in der Tabelle "player" die zeile mit der $_SESSION['id'] suchen (also die die im Bropwser als ?id=*** angegeben wird) und in dieser Spalte die "account_id" finden.
Anschließend nach der account_id in der datenbank "account" , tabelle "account" suchen und dort bei status ingleicher zeile ein "BLOCK" eintragen.
Es funktioniert soweit alles nur es wird kein BLOCK eingetragen.
|
|
|
03/27/2013, 12:29
|
#4
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
So müsste es gehen:
PHP Code:
<?php session_start ();
$id = mysql_real_escape_string($_SESSION['id']); //wichtig!! Sicherheit!!
if(empty($id)) { die('Kein Account gefunden!'); } else { include('../inc/config.php'); mysql_select_db('player'); $query = mysql_query("SELECT SUM(`account_id`) as amount FROM player where name = '" . $id . "'"); $lasttime = mysql_fetch_assoc($query); $amount = $lasttime['amount'];
$cccc = mysql_query("SELECT account_id FROM player where name = '" . $id . "'"); $row = mysql_fetch_assoc($cccc); $insertnew = false;
mysql_select_db('account');
mysql_query("UPDATE account.account SET status = 'BLOCK' where id = '". $row['account_id'] ."'");
header("Location: http://****.html");
exit; } ?>
Da ist ein bisschen mehr verändert. Kannst gerne mal mit dem alten Code abgleichen und die Veränderungen feststellen.
P.s ich würde die Variablen wie 'cccc' oder 'xxx' sinnvoller bennenen, den später weisst du nicht mehr, wofür die mal waren.
|
|
|
03/27/2013, 12:39
|
#5
|
elite*gold: 1715
Join Date: Dec 2011
Posts: 672
Received Thanks: 207
|
Quote:
|
mysql_real_escape_string($_SESSION['id']);
|
Ähm, wozu soll das gut sein?
1. ID's sind für gewöhnlich Integer. Da funktioniert dann kein mysql_real_escape_string. Die richtige Funktion wäre intval().
2. Sessions werden serverseitig gespeichert. Es ist überhaupt nicht notwendig, das an dieser Stelle zu escapen.
|
|
|
03/27/2013, 12:49
|
#6
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
Quote:
Originally Posted by PseudoPsycho
Ähm, wozu soll das gut sein?
1. ID's sind für gewöhnlich Integer. Da funktioniert dann kein mysql_real_escape_string. Die richtige Funktion wäre intval().
|
Naja, er benutzt die "id" aus der URL um den Namen abzugleichen.... Entweder der Begriff "id" ist falsch oder es wurde in der Abfrage statt "id" versehentlich "name" verwendet.
Code:
where [B]name [/B]= '" . $id . "'
Quote:
Originally Posted by PseudoPsycho
2. Sessions werden serverseitig gespeichert. Es ist überhaupt nicht notwendig, das an dieser Stelle zu escapen.
|
Sicherheit geht für mich einfach vor. Diese Variable wurde möglicherweise vor der Zuweisung nicht geschützt (das ist natürlich jetzt spekulativ). Ich würde es aus Vorsorge trotzdem schützen
|
|
|
03/27/2013, 12:49
|
#7
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Quote:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user ''@'localhost' (using password: NO) in /users/block.php on line 4
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /users/block.php on line 4
Kein Account gefunden!
|
Naja nicht so wirklich :S
|
|
|
03/27/2013, 12:52
|
#8
|
elite*gold: 0
Join Date: Mar 2012
Posts: 342
Received Thanks: 45
|
Das geht aus deinem Quellcode nicht hervor. Intval().
|
|
|
03/27/2013, 12:53
|
#9
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
Naja gut, hier wird die Datenbankverbindung erst später ausgelöst, als die Variable zugeweisen wird.
Benutz statt mysql_real_escape_string einfach htmlentities oder lass es ganz weg^^
|
|
|
03/27/2013, 12:57
|
#10
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Also was muss ich jetzt abändern das es geht ? ^^
|
|
|
03/27/2013, 13:01
|
#11
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
PHP Code:
<?php
session_start ();
$id = $_SESSION['id']; //das hier wurde geändert. Ist das der Name des Spielers oder die ID?!
if(empty($id)) {
die('Kein Account gefunden!');
}
else {
include('../inc/config.php');
mysql_select_db('player');
$query = mysql_query("SELECT SUM(`account_id`) as amount FROM player where name = '" . $id . "'");
$lasttime = mysql_fetch_assoc($query);
$amount = $lasttime['amount'];
mysql_select_db('account'); //das wurde auch verschoben
$cccc = mysql_query("SELECT account_id FROM player where name = '" . $id . "'");
$row = mysql_fetch_assoc($cccc);
$insertnew = false;
mysql_query("UPDATE account.account SET status = 'BLOCK' where id = '". $row['account_id'] ."'");
header("Location: http://****.html");
exit;
}
?>
|
|
|
03/27/2013, 13:06
|
#12
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Ne geht immernoch nicht es kommt die Ausgabe "Kein Account gefunden!"
:S
|
|
|
03/27/2013, 13:10
|
#13
|
elite*gold: 203
Join Date: Sep 2007
Posts: 732
Received Thanks: 190
|
Was steht denn in der $_SESSION['id'] drinne?! Ein Name oder die ID als Zahl eines Spielers? Gibt es diese ID auch in der Datenbank?
|
|
|
03/27/2013, 17:38
|
#14
|
elite*gold: 39
Join Date: Sep 2011
Posts: 1,198
Received Thanks: 251
|
Der name steht dort
|
|
|
03/27/2013, 18:56
|
#15
|
elite*gold: 0
Join Date: Jun 2011
Posts: 1,190
Received Thanks: 175
|
Wenn ich jetzt nichts überlesen habe, solltest du sich auch zur DB connecten(mysql_connect)
|
|
|
 |
|
Similar Threads
|
Kein Fehler in VPC aber Quest funktioniert trozdem nicht :/
11/12/2012 - Metin2 Private Server - 9 Replies
Ich habe folgende Quest :
quest lager_oeffnen begin
state start begin
when 71009.use begin
if pc.get_money > 500000 then
game.set_event_flag("tresore_kaufen" ;, 1)
else
game.set_event_flag("tresore_kaufen" ;, 2)
|
Mein combat arms funktioniert nicht fehler warum?
11/10/2012 - Combat Arms - 7 Replies
HILFE
Diese Meldung kommt immer und ich will wieder CA zocken doch es geht nicht!
|
syserr fehler --> login funktioniert nicht
08/07/2011 - Metin2 Private Server - 0 Replies
Hallo,
also bei mir kommt bei Game1_2 folgender Fehler bei syserr:
SYSERR: Aug 6 10:54:21 :: socket_connect: HOST 220.95.239.40:7120, could not connect.
SYSERR: Aug 6 10:54:21 :: heart_idle: losing 77 seconds. (lag occured)
SYSERR: Aug 6 10:54:46 :: FuncCheckWarp: Warp NPC name wrong : µµÃø¬}¥Þ¤@¼Ó
SYSERR: Aug 6 10:54:46 :: FuncCheckWarp: Warp NPC name wrong : µµÃø¬}¥Þ¤@¼Ó
SYSERR: Aug 6 10:54:46 :: FuncCheckWarp: Warp NPC name wrong : µµÃø¬}¥Þ¤@¼Ó ...
|
Kleiner Fehler. DB-Connecten will nicht ôo
06/13/2010 - Metin2 Private Server - 2 Replies
Labert mich nicht voll mit SuFu oder Google. Wenn ich was gefunden hätte würde ich nicht posten. Also sparts euch gleich !
ALso, ich hatte nach langer Zeit mit meiner Freundin mal wieder Lust nen Server zu machen.
Das Problem: Ich kann nicht auf Ihre DB Connecten. Ja Port 3306 ist an !
Das Problem währe:
http://img641.imageshack.us/img641/782/fehlerf.pn g
|
Fehler beim Laden des Designs - Aero funktioniert nicht mehr [Vista]
03/16/2010 - Technical Support - 3 Replies
Hi
Ich habe ein Problem: Das Aero Design von Vista funktioniert nicht mehr.
Gestern ging es noch. Leistungsindex ist 4,6 also über den benötigten 3,0.
Ich habe auch schon versucht, manuell die Datei auszuwählen (Designeinstellungen -> durchsuchen). Da finde ich zwar "Aero.theme", kann diese aber nicht öffnen. Wenn ich es versuche kommt folgender Fehler:
http://s10.directupload.net/images/100315/xofs5ih k.jpg
Weiß jemand, woran das liegen könnte, und was ich dagegen machen kann ?
lg...
|
All times are GMT +1. The time now is 21:07.
|
|