Spalteninhalt als Varibale speichern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
array
ausgabe
brauche
button
check
code
datum
endzeit
fehler
nutzer
session
setzen
stadt
stehen
tabelle
url
variable speichern
verbindung
wechsel
-
So da bin ich mal wieder, heute brauche ich mal nen Denkansatz..
Folgendes „Problem“
Ich habe eine bestehende Datenbankabfrage, mit dieser wird geprüft ob die IP und „GangID“ eines Nutzers in der DB hinterlegt sind.
Nun möchte ich den sich daraus ergebenden Namen ermitteln.
Der Name ist mit in der DB-Tabelle hinterlegt bei jedem Nutzer.
Ich habe also die
und dieIP
eines User´s, diese werden in der DB-Tabelle gefunden und mir sollte dann der Name am besten in eine Variable geschrieben werden, diesen brauche ich dann um eine weitere Prüfung durchzuführen. ( später dann wenn das hier geht ;)) Da durch evtl. IP dopplungen mehr als 1 Name da sein könnte muss es wohl in ein array, denke ich.gangid
Ich weiß hier nur leider nicht wie ich ansetzen soll.
Hier mal die Abfrage wie Sie derzeit läuft
Mit der ersten Abfrage wird der besagte Datensatz geprüft, hier müsste irgendwie der Name ermittelt werden.
Bei der 2ten Abfrage wird dann schon der eigentliche Inhalt der Ausgabe ausgelesen.
//------------------------------------------------------------------- // Prüfen ob IP hinterlegt ist und GangID stimmt /////////////////// //------------------------------------------------------------------- $check = mysql_query("SELECT * FROM $stadt WHERE ip='$ip' AND kw_gangid='$gid'") or die (mysql_error()); if(mysql_num_rows($check ) >= 1){ //------------------------------------------------------------------- // Ausgabe der Werte abrufen und array erzeugen //////// //------------------------------------------------------------------- $abfrage = "SELECT * FROM $stadt WHERE kw_gangid='$gid' ORDER by kw_wert DESC"; $loesung = mysql_query($abfrage) or die(mysql_error()); while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) { // hier kommen weitere Abfragen und die eigenltiche Ausgabe, //das lasse ich hier mal weg, da ich denke das es //nicht benötigt wird
Ich hoffe man versteht irgendwie was ich meine. Das Ganze soll am Ende eine Sicherheitsüberprüfung sein ob ein Nutzer
die Daten sehen darf oder nicht. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
wenn du nur den wert eines bestimmten Datensatzes haben möchtest kannst du es so machen:
$wert=mysql_fetch_row(mysql_query("SELECT name FROM user WHERE id=' ".$id." ' ")); $der_wert=$wert[0];
mysql abfrage muss natürlich etwas angepasst werden
hoffe habe dich jetzt nicht falsch verstanden -
Ne ganz so nicht.
Ich habe vom User in der DB unter anderen Name, GangID, Ip, Datum ectr. Diese Daten hinterlegt der User selber.
Der User möchte nun eine bestimmte Ausgabe sehen ( bezieht sich auf eine tabelarische Ausgabe ), wenn er diese Aufruft stehen mir vom User nur die
und dieIP
zur Verfügung, anhand dieser möchte ich ermitteln welcher Name dazu gehört.GangID
-
Das von kdhdamoria sollte eigentlch funktionieren. Du selectest nur den Namen und wertest diesen dann aus. Oder was stimmt daran nicht?
Kannst du vllt auch den Hintergrund geben, warum du das möchtest? Ich kann mich nicht vorstellen, wozu du des noch brauchst. du kannst mit dem AssocArray direkt das Template befüllen, bzw die Tabelle usw erstellen.
Liebe Grüße -
meine Code gibt doch genau den Namen zurück, der in der Varibale $der_wert gespeichert und in der mysql Abfrage kannst du dann schreiben: ...WHERE gangid='$gangid' AND ip='$ip'.
-
Ok ich muss mich entschuldigen, es geht selbstverständlich so!!
Beim 2ten Denkansatz habe ich es dann verstanden, ich habe mich da auf einen anderen Ansatz versteift der so nicht nötig ist.
Stimmt natürlich, wenn ich nur den Namen selecte und prüfe ob IP und GangID passen ist es ja das Ergebnis was ich möchte.
mal zum Hintergrund, dann versteht man es vieleicht und jemand hat eine alternative Idee.
Die Ausgabe der Daten erfolgt über Image create als Bild (png)
Diese Ausgabe kann rein Theoretisch jeder, der den Link hat Aufrufen.
Es soll aber nur der User Einblick in die Daten erhalten, der auch selber eingetragen ist.
Während der Ausgabe kann ich den Namen des User aber nicht direkt auslesen, mir stehen eben nur die IP und die GangID zur Verfügung.
-
aff3m1tw4ff3 schrieb:
Dir ist aber hoffentlich schon klar, dass sich die IP eines Users jederzeit ändern kann? Dann würde es dein System schon durcheinanderhauen... sinnvoller wäre es hier ein Login-System zu bauen mit dem du die User sicher identifizieren kannst anstatt auf IP-Adressen zurückgreifen zu müssen.
Während der Ausgabe kann ich den Namen des User aber nicht direkt auslesen, mir stehen eben nur die IP und die GangID zur Verfügung. -
Ja das weiß ich. Die User wissen auch worauf Sie sich einlassen. Bei IP wechsel müssen Sie Ihre Daten erst mit der neuen IP eintragen bevor Sie wieder eine Ausgabe erhalten.
Einen extra Login brauche ich dafür nicht machen, auch wenn er sicherer ist, das wäre dem Nutzer in diesem Fall zuviel aufwand.
Darum versuche ich ja auf mehrere Faktoren zu prüfen.
hackyourlife das ist die Ausgabe zu dem Javascript Button bei dem Du mir so toll geholfen hast ;)
Beitrag zuletzt geändert: 12.9.2012 21:52:42 von aff3m1tw4ff3 -
wenn du kein loginsystem haben mögchtest kannst du es ja mit htaccess machen, dass ich schnell und einfach gemacht und ruft bei den meisten Browsern nur das erste mal ein "login feld" aus.
-
aff3m1tw4ff3 schrieb:
Wenn ich den nächsten Absatz von dir nicht gelesen hätte: verwend zumindest ein Cookie, das ist in Verbindung mit der IP und GangID schonmal sicherer...
Einen extra Login brauche ich dafür nicht machen, auch wenn er sicherer ist, das wäre dem Nutzer in diesem Fall zuviel aufwand.
Darum versuche ich ja auf mehrere Faktoren zu prüfen.
aff3m1tw4ff3 schrieb:
Nachdem ich das aber gelesen habe: verwend ein Supercookie... das in Verbindung mit der IP und der GangID ist auch sicherer als wenn du dich nur auf die IP und GangID verlassen würdest.
hackyourlife das ist die Ausgabe zu dem Javascript Button bei dem Du mir so toll geholfen hast ;)
kdhdamoria schrieb:
aber das ist bei GreaseMonkey-Scripten mit AJAX-Requests wie in diesem Fall auch nicht das Wahre (wenn das überhaupt funktioniert)...
wenn du kein loginsystem haben mögchtest kannst du es ja mit htaccess machen, dass ich schnell und einfach gemacht und ruft bei den meisten Browsern nur das erste mal ein "login feld" aus. -
Supercookie? Ich werde wohl mal Google quälen müssen, dank dem Wikki Link weiß ich schonmal was das ist.
Hab ich heute das erste mal gehört.
Ich denke mal setzen kann man den wie nen normalen Cookie bei der Datenspeicherung.
Also müsste ich Ihn über Javascript setzen.
Das muss ich mir jetzt mal genau anschauen, ich schreie wenn ich festhänge
Zum Thema loginsystem:
auch wenn es umsetzbar wäre, würden die User es nicht wollen. Die Nutzer sind Quasi etwas Faul, es muss alles einfach ohne weitere Eingaben gehen. -
aff3m1tw4ff3 schrieb:
Kurze Erklärung:
Ich denke mal setzen kann man den wie nen normalen Cookie bei der Datenspeicherung.
Also müsste ich Ihn über Javascript setzen.
Die Verwendung ist ähnlich wie bei einem normalen Cookie, nur wird dieses ausschließlich clientseitig gespeichert, kann also auch nur mit JavaScript gelesen und geschrieben werden.
Maximale Größe: 5-10MB, abhängig vom verwendeten Browser.
W3: webstorage (genauere Beschreibung) -
Ok dann kann ich das so nicht nutzen, da nicht jeder der die Ausgabe sehen soll auch den Scriptbutton nutzt.
Zur Erklärung:
Die Daten werden unter anderem über JavaScript ( der Button ) eingetragen. Der Nachteil dabei ist das der User die Daten
ja ändern könnte die er sendet. Das Script wird ja auf dem Rechner des Nutzers ausgeführt.
Dazu kommt das nicht jeder Nutzer seine Daten über diesen JS Button sendet sondern auch über einen "manuellen Bereich".
Manche wollen nicht auf Scripte zurück greifen, darum die "2te" Möglichkeit zum Eintragen.
Jede "Benutzergruppe" hat einen eigenen "manuellen Eingabebereich" der auch durch ein PW geschützt wird.
Und beim schreiben kommt mir eine Idee, eigentlich muss nur jeder Nutzer aus diesem manuellen Bereich einen Wert senden auf den ich dann prüfen kann. Quasi eine Verifizierung hinterlegen die nicht über den Javascript Button geändert wird, sondern nur aus diesem Bereich eingetragen werden kann.
Das muss ich mal kurz überdenken.
-
Eine weitere Möglichkeit wären Sessions.
Wenn der User eine andere Seite aufruft/seine Daten eingibt, speicherst du diese Informationen serverseitig in der Session. Wenn ein User dann das Bild oÄ. aufruft, kannst du auf diese Informationen zugreifen.
Vorteil:
geht auch, wenn der User keine Cookies aktiviert hat
die ganze Session muss nicht bei jedem Seitenaufruf hin und her übertragen werden
überlebt IP-Wechsel
Nachteil:
Session laufen je nach Servereinstellung ca. nach 20Minuten bis mehrere Stunden ohne Erneuerung (zB. bei einem Seitenaufruf auf deiner Homepage) ab -
wolkenlos0 schrieb:
Und wie glaubst du funktioniert eine Session? Woher glaubst du weiß der Server wer wer ist? Dafür setzt er entweder ein Cookie mit einer Session ID oder die Session ID muss immer per GET mitgegeben werden was hier schon mal wegfällt.
Vorteil:
geht auch, wenn der User keine Cookies aktiviert hat
die ganze Session muss nicht bei jedem Seitenaufruf hin und her übertragen werden
überlebt IP-Wechsel -
Stimmt, das mit dem GET habe ich übersehen.
Generell finde ich verwenden von Sessions einfacher und der User kann sie nicht so einfach manipulieren, wobei das sicher auch Geschmacksfrage ist. -
Hi,
so endlich mal wieder Zeit hier weiter zu machen. Ich habe es jetzt mal so gemacht wie hier vorgeschlagen. Natürlich angepasst.
kdhdamoria schrieb:
$wert=mysql_fetch_row(mysql_query("SELECT name FROM user WHERE id=' ".$id." ' ")); $der_wert=$wert[0];
Leider wird der Name nicht in die Variable gepackt. Wenn ich mir den Namen ausgeben lasse ist die Variable leer.
Wenn ich
in$name = $check[0];
ändere gibt er den Namen als$name = $check;
aus.Resource ID3
Hier mal der "Vollständige" Code. Es wird vorher noch das PHP Image definiert, aber das sollte hierbei ja irrelevant sein. Zeile 37 bis 47 sind wohl die Entscheidenden Zeilen. Im ersten Select wird der Name anhand der IP und GangID bestimmt und im 2ten Select wird in einer weiteren Tabelle geprüft ob der Name dort auch existent ist.
// ENDE AUFBAU PHP IMAGE //------------------------------------------------------------------- // Ermitteln der IP ///////////////////////////////////////// //------------------------------------------------------------------- $ip = getenv('REMOTE_ADDR'); //------------------------------------------------------------------- // Start verbindung //////////////////////////////////////// //------------------------------------------------------------------- include("connect.inc.php"); $dbverbindung = mysql_connect ($host, $user, $password); //------------------------------------------------------------------- // Datenbank wählen //////////////////////////////////////////////// //------------------------------------------------------------------- $db_sel = mysql_select_db( pennereck_de ); //------------------------------------------------------------------- // Namen anhand von IP und Gangid in Variable speichern ///////////// //------------------------------------------------------------------- $check = mysql_query("SELECT kw_name FROM $stadt WHERE ip='$ip' AND kw_gangid='$gid'") or die (mysql_error()); $name = $check[0]; $user=mysql_fetch_row(mysql_query("SELECT kw_name FROM $stadt WHERE ip=' ".$ip." ' ")); $username=$user[0]; if(mysql_num_rows($username) >= 1){ //------------------------------------------------------------------- // Ausgabe der Werte abrufen und array erzeugen //////// //------------------------------------------------------------------- $abfrage = "SELECT * FROM $stadt WHERE kw_gangid='$gid' ORDER by kw_wert DESC"; $loesung = mysql_query($abfrage) or die(mysql_error()); while ($row = mysql_fetch_array($loesung, MYSQL_ASSOC)) { //------------------------------------------------------------------- //Prüfen ob Wert angezeigt werden soll //////// //------------------------------------------------------------------- if ($row['vali'] == '1') { $datenarray = explode(" "); $row[kw_wert] = $datenarray[0]."****.**"; $row[kw_att] = $datenarray[1]."***"; $row[kw_def] = $datenarray[2]."***"; } //------------------------------------------------------------------- // Ausgabe in Variable speichern //////////////////////////// //------------------------------------------------------------------- $ausgabe1 .= "$row[date] " . str_pad($row['boost'], 2, '-', STR_PAD_LEFT) . " // gekürzt da sonst zu lang für Lima post ;) } //------------------------------------------------------------------- // Ladezeit berechnen //////////////////////////// //------------------------------------------------------------------- $endzeit=explode(" ", microtime()); $endzeit=$endzeit[0]+$endzeit[1]; $ladezeit="in ".round($endzeit - $startzeit,6)." Sek geladen"; //------------------------------------------------------------------- // Datum und Uhrzeit + 7200sec //////////////////////////// //------------------------------------------------------------------- $timestamp = time()+(7200); $datum = date("d.m.Y",$timestamp); $zeit = date("H:i",$timestamp); $datum="Am ".$datum." um ".$zeit." Uhr"; //------------------------------------------------------------------- // Start eigentliche Ausgabe in der MotD //////////////////////////// //------------------------------------------------------------------- sendimagetext ("$ausgabe1 $ladezeit $bild2"); } //------------------------------------------------------------------- // Wenn keine Werte gefunden werden //////////////// //------------------------------------------------------------------- else { sendimagetext ("$fehlerinfo"); } /* entleeren + schliessen */ mysql_free_result($result); mysql_close($dbverbindung); //------------------------------------------------------------------- // Das bittere Ende ///////////////////////////////////////// //-------------------------------------------------------------------
Egal was ich mache, ich bekomme am Ende immer das else(wird normal ausgegeben wenn keine Werte in der DB gefunden werden) als Ausgabe.
else { sendimagetext ("$fehlerinfo"); }
TANTE EDIT!!
Hab es nun derzeit so:
$user=mysql_fetch_row(mysql_query("SELECT kw_name FROM $stadt WHERE ip=' ".$ip." ' ")); $username=$user[0];
Die Variable
bleibt aber leer.username
Vieleicht hat ja jemand einen Denkanstoß für mich was ich nu wieder falsch mache.
Danke schon mal und ne schöne Woche euch.
Beitrag zuletzt geändert: 17.9.2012 15:20:08 von aff3m1tw4ff3 -
aff3m1tw4ff3 schrieb:
Du hast da ein paar Fehler im Code...
$db_sel = mysql_select_db( pennereck_de ); //------------------------------------------------------------------- // Namen anhand von IP und Gangid in Variable speichern ///////////// //------------------------------------------------------------------- $check = mysql_query("SELECT kw_name FROM $stadt WHERE ip='$ip' AND kw_gangid='$gid'") or die (mysql_error()); $name = $check[0]; $veri = mysql_query("SELECT name FROM kw_veri WHERE name='$name' AND gangid='$gid'") or die (mysql_error()); if(mysql_num_rows($veri ) >= 1){ ...
•
ist vermutlich nicht als Konstante definiert worden... → mach einen String draus oder wenn das eine Variable ist einpennereck_de
davor$
• beim
: dort sollte vielmehr sowas stehen:$check
$check = mysql_query("SELECT kw_name FROM $stadt WHERE ip='$ip' AND kw_gangid='$gid'") or die (mysql_error()); $check = mysql_fetch_array($check); // ← das fehlt $name = $check[0];
• Wo wird
definiert?$gid
-
hackyourlife schrieb:
? Wo wird
definiert?$gid
Wird in der connect mit definiert.
include("connect.inc.php");
Dort werden
und$stadt = 'berlin';
definiert$gid = "xyz";
Tante Edit:
ok der Name wird jetzt ausgelesen und auch in die Variable gepackt:
//------------------------------------------------------------------- // Namen anhand von IP und Gangid in Variable speichern ///////////// //------------------------------------------------------------------- $check = mysql_query("SELECT kw_name FROM $stadt WHERE ip='$ip' AND kw_gangid='$gid'") or die (mysql_error()); $check1 = mysql_fetch_array($check); // ← das fehlt $name1 = $check1[0]; //------------------------------------------------------------------- // Prüfen ob Name verifiziert wurde ///////////// //------------------------------------------------------------------- $veri = mysql_query("SELECT name FROM kw_veri WHERE name='$name1' AND gangid='$gid'") or die (mysql_error()); if(mysql_num_rows($veri) <= 1){sendimagetext ("veri fehler"); }
Nun muss ich Ihn nur in der 2ten Tabelle vergleichen. Da hängt er sich jetzt hier auf:
if(mysql_num_rows($veri) <= 1){sendimagetext ("veri fehler");
Da muss ich nachher mal schauen. Muss erst mal meinen Sohn besuchen und sein B-Day Geschenk abliefern, sonst is er sauer :)
Danke soweit wie immer für eure Hilfe
Beitrag zuletzt geändert: 17.9.2012 15:54:19 von aff3m1tw4ff3 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage