PHP GET variable auf Inhalt prüfen

Mitglied: nobodyisperfect

nobodyisperfect (Level 1) - Jetzt verbinden

20.07.2011, aktualisiert 01.08.2011, 6975 Aufrufe, 6 Kommentare

Hallo an alle da DRAUSEN ^^

PHP Variable $_GET[''] macht mich verrückt!

Kurze Info zu meinen Server:

OS : Linux 11.3
Module: apache2 mit PHP Modulen / MySQL-Datenbank
Nutzung: Webserver


Mein Problem:

Ich lasse eine Variable übergeben an ein php Dokument wo die Übergabe abgefangen wird mit $_GET[" "]
sieht wie folgt aus:

Document "musik.php"
Also Übergabe von Wert "gen" und "int" wird von Dokument "musik_show.php" abgefangen mit $_GET['gen'] und $_GET['int']
Dokument "musik_show.php" sieht wie folgt aus:
Hier das Problem:

Irgendwo ist ein Fehler drin und weis nicht wo bzw wieso.
Möchte Prüfen lassen ob die $_GET['gen'] Variable leer ist aber funktioniert nicht.

Bräuchte wirklich eure Hilfe hab schon rauf und runter gebingt aber irgendwie find ich dazu weder ne lösung noch versteh ich des eigentliche Problem.

Vielen Dank für eure Hilfe.


nobodyisperfect
Kommentar vom Moderator masterG am 01.08.2011 um 13:21:52 Uhr
Formartierungshilfe beachten
Mitglied: nxclass
20.07.2011 um 22:35 Uhr
Übergabe von Wert "gen" und "int"
abgefangen mit $_GET['gen'] und $_GET['int']
.. nein es ist $_GET['gen'] ODER $_GET['int']

Prüfen kannst du ob ein Schlüssel in einem Array ist z.B.mit
.. das ist also nicht das Problem. Ich sehe eher das Problem in den SQL Abfragen, wenn ein Parameter leer ist. Ebenso erscheint mir deine Variablennamen sind etwas durcheinander.


Nebenbei: überlege mal mit etwas Fantasie was in der musik_show.php mit der SQL Abfrage passiert wenn jemand die URL manipuliert.
Bitte warten ..
Mitglied: nobodyisperfect
20.07.2011 um 23:33 Uhr
Hi Danke für die schnelle Antwort!

Hab schon zuvor mit "isset" versucht mit "empty" geht aber einfach net werd net schlau draus.

Hier mal beide Dateien komplett:

musik.php
<?php

echo"
<!DOCTYPE HTML PUBLIC ' -W3CDTD HTML 4.01 Transitiona lEN' 'http:www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title>Musik</title>
<link rel=stylesheet type=text/css href=global.css>
<link rel=stylesheet type=text/css href=nav.css>
<script type=text/javascript src=nav.js></script>
</head>
<body>
";


include 'head.html';
include 'nav.html';
include 'musik.html';


echo "
<table id='musik'>
<tr>
<td>Genre</td>
<td>Interpret</td>
</tr>
";

include 'logindb.php';

mysql_select_db("elysionpw");

$abf = mysql_query("SELECT * FROM musik");

while ($a = mysql_fetch_row($abf)) {
echo"
<tr>
<td><li><a id='mures' href='musik_show.php?gen=$a[4]&int=$a[1]'>$a[4]</a></li></td>
<td><li><a id='mures' href='musik_show.php?int=$a[1]&gen=$a[4]'>$a[1]</a></li></td>
</tr>
";
};

echo"

</table>
";


echo"
</body>
</html>
";

?>
musik_show.php
<?php
$ggen = $_GET['gen'];
$gint = $_GET['int'];

echo"
<!DOCTYPE HTML PUBLIC ' -W3CDTD HTML 4.01 Transitiona lEN' 'http:www.w3.org/TR/html4/loose.dtd'>
<html>
<head>
<title>Musik</title>
<link rel=stylesheet type=text/css href=global.css>
<link rel=stylesheet type=text/css href=nav.css>
<script type=text/javascript src=nav.js></script>
</head>
<body>
";


include 'head.html';
include 'nav.html';


echo "
<table id='musik'>
<tr>
<td>$ggen $gint</td>
</tr>
</table>
<br>
<br>
";

include 'logindb.php';

mysql_select_db("elysionpw");

$abfg = mysql_query("SELECT * FROM musik WHERE interpret LIKE $gint");
$abfi = mysql_query("SELECT * FROM musik WHERE genre LIKE $ggen");

echo "<table><tr>";


if ( isset( $_GET['gen'] ) ) {
while($a = mysql_fetch_row($abfi)) {
echo "<td>$a[1]</td>";
}
else {
while ($b = mysql_fetch_row($abfg)) {
echo "<td>$b[4]<td>";
}
}
}


echo "</tr></table>";

echo"
</body>
</html>
";

?>
Werd zum Hirsch......




>Nebenbei: überlege mal mit etwas Fantasie was in der musik_show.php mit der SQL Abfrage passiert wenn jemand die URL >manipuliert.

ist nur für private zwecke aber an und für sich hast schon recht

Bitte warten ..
Mitglied: dog
21.07.2011 um 04:07 Uhr
Hör auf Blind zu programmieren und schalt die Fehleranzeige ein:

Dann siehst du auch, was du da alles falsch machst.
Bitte warten ..
Mitglied: SlainteMhath
21.07.2011 um 09:01 Uhr
Moin,

auch wenn's jetzt nichts mit der eigentlichen Frage zu tun hat, aber solchem Code
Kräuseln sich mir die Fußnägel.

Frage: was passiert, wenn $_GET['gen'] den Wert "1; DROP TABLE MUSIC; --" hat?

Bitte, bitte benutze diese Funktion: http://php.net/manual/de/function.mysql-real-escape-string.php

Nähers dazu: http://de.wikipedia.org/wiki/SQL-Injection

lg,
Slainte
Bitte warten ..
Mitglied: blackwinged
21.07.2011 um 10:26 Uhr
Hi,

1. Nimm dir die Kommentare zur Sicherheit bitte zu Herzen! Besser ist immer:

Das muss dir in Fleisch und Blut übergehen ;)


2. Hinter dem LIKE in deiner Query wird ein String erwartet, aber (aus Sicht von MySQL) ein Spaltenname übergeben.
So dürfte es funktionieren:

Gruß,
blackwinged
Bitte warten ..
Mitglied: nobodyisperfect
21.07.2011 um 13:44 Uhr
Vielen Dank für eure Hilfe ^^

Also erfolgreich gelöst !

Besten Dank an administrator.de
Bitte warten ..
Heiß diskutierte Inhalte
MikroTik RouterOS
Simples VLAN bringt mich zur Verzweiflung
gelöst Daniel26Vor 22 StundenFrageMikroTik RouterOS27 Kommentare

Moin, ich bin sehr neu im Mikrotik-Bereich, aber schon dabei, aufzuegeben. Wir verbauen in unserer Hardware Switche von Mikrotik. Bisher waren da Netgear-Teile drin, ...

LAN, WAN, Wireless
Switch läuft, ist aber nicht erreichbar
gelöst AndiPeeVor 1 TagFrageLAN, WAN, Wireless19 Kommentare

Hallo zusammen, mein Problemfall einleitend kurz umrissen: Privates Netzwerk Es funktioniert grundsätzlich, allerdings habe ich immer mal ein paar Ausfälle im WLAN-Netzwerk und bin ...

Windows Netzwerk
Sporadisch kein Netz auf mehreren Win10-Maschinen
SolarflareVor 1 TagFrageWindows Netzwerk6 Kommentare

Hallo, ich habe seit Monaten einen eigenartigen Effekt in unserem Windows-Netz. Windows-Domäne mit ca. 100 Maschinen, alle Clients aktuelles Windows 10. Die Maschinen hängen ...

Microsoft
STRG + ALT + ENTF
TezzlaVor 16 StundenAllgemeinMicrosoft11 Kommentare

Mahlzeit zusammen, wir haben gerade im Kollegenkreis über Sinn und Unsinn der Sperrbildschirmentriegelung STRG + ALT + ENTF unter Win10 diskutiert. Mich würde hierzu ...

VB for Applications
Auf SQL Datenbank schreiben welche Sich im Firmennetzwerk befindet
RSST-SORVor 1 TagFrageVB for Applications12 Kommentare

Hallo Ich habe ein funktionierendes VBA Makro im EXCEL welches mit: conn.Open "driver={SQL Server};" & _ "server=RSST-OFFICEIII\RSSTSQLSERVER;database=RSSTZeiterfassung;" Daten in die Tabelle schreibt Nun würde ...

Windows 10
SMB Performance VPN
Guhl22Vor 1 TagFrageWindows 104 Kommentare

Hallo zusammen, wir stellen bei uns in der Firma ein sehr merkwürdiges Phänomen fest. Zugriffe über VPN auf gemappte Netzlaufwerke (über vbs Logon Skript ...

E-Mail
Alternative zu horde webmail
fisch56Vor 1 TagFrageE-Mail6 Kommentare

Hallo, ich habe das horde webmail auf meinem Server, macht allerdings Probleme. Suche daher eine Alternative. Das Postfach hat viele Unterordner, die z.B. bei ...

Outlook & Mail
Outlook Ansicht
gelöst Kisters.SolutionsVor 2 TagenFrageOutlook & Mail9 Kommentare

Hallo zusammen, seit kurzem sieht der Posteingang im Outlook 2019 eines Kollegen plötzlich anders aus. Standard ist das die ungelesenen Mails mit einem blauen ...