Alle User in einer Datei
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
benutzername
code
domain
fehler
funktion
host
http
index
nachname
pack
status
string
tausche
testen
tippen
url
vergessen
vorname
zahl
zeile
-
Und ich schon wieder ^^"
Ich versuche gerade alle User in eine Datei zu Stopfen, im Meinen Kopf klang es so wie ich es mache Richtig, da aber nichts angezeigt wird ist es das wohl doch nicht ^^"
Also ich möchte das die User über:
domain.tld/User/Index.php?uid=1
domain.tld/User/Index.php?uid=2
domain.tld/User/Index.php?uid=USW
Abgerufen werden und habe das Script nun so aufgebaut:
<?php $pdo = new PDO('mysql:host=mylonky.lima-db.de;dbname=db_XXXXX_6', 'USER', 'PASS'); $uid = checkinput(trim($_GET['uid'])); // UserID aus URL $sql = 'SELECT * FROM users WHERE id = '.$uid.''; //SQL-Query: Name des Users auslesen var_dump($_GET['uid']); foreach ($pdo->query($sql) as $row) { echo "Benutzername:" .$row['username']."<br />"; echo "E-Mail: ".$row['email']."<br />"; echo "Name: " .$row['vorname']." ".$row['nachname']."<br />"; echo "Registriert: " .$row['created_at']."<br />"; echo "Premium status: " .$row['premium']."<br />"; echo "Admin status: " .$row['admin']."<br />"; echo "Gebannt?: ".$row['banned']."<br /><br />"; } ?>
Fatal error: Call to undefined function checkinput() in /home/webpages/lima-city/moneyclicker/default-website/test/User/1.php on line 129
Zeile 129 lautet
$uid = checkinput(trim($_GET['uid'])); // UserID aus URL
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
pizzeriafalcone schrieb:
Hi!
Laut der Fehlermeldung existiert die Funktion "checkinput()" gar nicht. Kannst Du mal den kompletten Quellcode posten?
ahh, habe Vergessen eine Datei zu Includen, dadurch hat sich der Fehler jetzt geändert
User.php
http://pastebin.com/g5sShCSn
functions.php
http://pastebin.com/FTBLQMY8
Der Aktuelle problem ist, anstadt des Inhaltes (Nutzername USW) zeigt er mir bei:
User.php?uid=1string(1) "1"
User.php?uid=2string(1) "2"
an, ist also schonmal Fast richtig ^^" -
pizzeriafalcone schrieb:
Kommt die Ausgabe exakt so wie von dir gepostet?
string(1) "1"
Ich würde fast auf Zeile 96 tippen. Ersetz doch zum Testen einfach mal die Variable durch eine gültige User-ID und pack sie mit in die Anführungszeichen.
Ja kommt Sie
Habe das Script um Zeile 96 Auskommentiert, Problem bleibt.
UserID 1 und auch 2 sind Gültig und vorhandene Benutzer -
Wäre schön wenn du das Error reporting auch mal anschalten würdest.
In der functions.php wird dir dann nämlich für die Funktion checkinput() ein Fehler ausgeworfen.
Denn erstens hast du zu dem Zeitpunkt noch gar keine Datenbankverbindung und zweitens verbindest du dich mittels PDO. Heisst mysqli_real_escape_string() kann nicht funktionieren.
Da dein $_GET ja auf jedenfall eine Zahl sein muss, kannst du doch mittels PHP prüfen, ob es eine Zahl ist. Dafür gibt es z.B. die Funktion is_numeric()
Das was bei mysqli_real_escape_string passiert, macht PDO alleine, wenn du die Prepared Statements verwendest.
Habe noch was vergessen:
Dein Fehler mit dem Kommentar am Anfang und mit session_start() ist ja auch noch immer vorhanden.
Beitrag zuletzt geändert: 28.5.2016 8:28:12 von controlhu -
controlhu schrieb:
Wäre schön wenn du das Error reporting auch mal anschalten würdest.
In der functions.php wird dir dann nämlich für die Funktion checkinput() ein Fehler ausgeworfen.
Denn erstens hast du zu dem Zeitpunkt noch gar keine Datenbankverbindung und zweitens verbindest du dich mittels PDO. Heisst mysqli_real_escape_string() kann nicht funktionieren.
ehh, ja natürlich ^^" mein Fehler (Ich vergesse immer die Kaputten Glaskugeln)
Aber bei z.b. Folgendem Code funktioniert PDO ja auch
<?php $pdo = new PDO('mysql:host=mylonky.lima-db.de;dbname=db_XXXXX_6', 'USER', 'PASS'); $sql = "SELECT * FROM users WHERE id = 10"; foreach ($pdo->query($sql) as $row) { echo "Benutzername:" .$row['username']."<br />"; echo "E-Mail: ".$row['email']."<br />"; echo "Name: " .$row['vorname']." ".$row['nachname']."<br />"; echo "Registriert: " .$row['created_at']."<br />"; echo "Premium status: " .$row['premium']."<br />"; echo "Admin status: " .$row['admin']."<br />"; echo "Gebannt?: ".$row['banned']."<br /><br />"; } ?>
controlhu schrieb:
Da dein $_GET ja auf jedenfall eine Zahl sein muss, kannst du doch mittels PHP prüfen, ob es eine Zahl ist. Dafür gibt es z.B. die Funktion is_numeric()
Wo setze ich das am Besten zum Testen ein?
controlhu schrieb:
Das was bei mysqli_real_escape_string passiert, macht PDO alleine, wenn du die Prepared Statements verwendest.
achso ok dann kann ich Theoretisch doch mysqli_real_escape_string wieder Entfernen oder?
controlhu schrieb:
Habe noch was vergessen:
Dein Fehler mit dem Kommentar am Anfang und mit session_start() ist ja auch noch immer vorhanden.
Hatte ich auf der Testseite nicht Korigiert gehabt, nur auf meinen von den Usern aufrufbaren seiten ^^"
Habe jetzt das was ich Verstanden habe auch umgesetzt ohne Fehlerseite steht dort einfach NULL mit eingeschaltenen Fehlern nur string(1) "1" oder string(1) "2" oder string(1) "3" usw
http://pastebin.com/CJzd5QpQ
zum Selber gucken
http://moneyclickererror.webspace.rocks/test/User/1.php?uid=2
zum Einloggen
http://moneyclickererror.webspace.rocks/login.php
User: Testi
Pass: Test123
Beitrag zuletzt geändert: 28.5.2016 15:46:25 von mylonky -
Natürlich funktioniert PDO dort. Nur wenn du versuchst, ohne Datenbankverbindung einen Datenbankbefehl auszuführen, dann kann es nicht gehen.
Dein Array ist ja $_GET['userid'], sagt ja nur aus, das $_GET gefüllt ist.
Tausche mal
$uid = checkinput(trim($_GET['uid']));
gegen
if(isset($_GET['uid']) && is_numeric($_GET['uid'])) $uid=$_GET['uid']; else echo "Entweder ist $GET keine Zahl oder nicht in der URL vorhanden\n";
-
controlhu schrieb:
Natürlich funktioniert PDO dort. Nur wenn du versuchst, ohne Datenbankverbindung einen Datenbankbefehl auszuführen, dann kann es nicht gehen.
Dein Array ist ja $_GET['userid'], sagt ja nur aus, das $_GET gefüllt ist.
Tausche mal
$uid = checkinput(trim($_GET['uid']));
gegen
if(isset($_GET['uid']) && is_numeric($_GET['uid'])) $uid=$_GET['uid']; else echo "Entweder ist $GET keine Zahl oder nicht in der URL vorhanden\n";
habe ich gemacht, jetzt Geht es aber ein Problem ist noch da ^^"
Die Angaben sind alle vorhanden aber das string(1) "1" ist noch enthalten vorne dran :/
string(1) "1" Benutzername:Wuppertaler93 E-Mail: Wuppertaler93@mylonky.eu Name: Brandon Schmitz Registriert: 2016-04-23 12:27:18 Premium status: Nein Admin status: Owner Gebannt?: Nein
wie bekomme ich das jetzt weg? (Ja Fehlermeldungsanzeige ist aus)
-
staymyfriend schrieb:
Hallo,
Zeile 134
löschen oder auskommentieren...var_dump($_GET['uid']);
Vielen Dank, jetzt passt alles wunderbar ^^ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage