Zurück   klamm-Forum > klamm-Lose > Lose4Scripts

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 29.07.2008, 17:10:19   #1 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard IP in DB suchen (Fehler nicht gefunden)

PHP-Code:
1:
2:
3:
4:
$current_ip $_SERVER['REMOTE_ADDR'];
$sql "SELECT * FROM ip_check WHERE ip=" $current_ip;
$query $db->query($sql);
$count $db->num_rows($query); 
Die dazugehörige Klasse ist in einer anderen Datei und beinhaltet unter anderem:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
function query($sql) {
  
$sql mysql_real_escape_string($sql);
  
$query mysql_query($sql) or die(mysql_error());
  return 
$query;
}
function 
num_rows($query) {
  
$num_rows mysql_num_rows($query);
  return 
$num_rows

Ich krieg jetzt jedoch folgende Fehlermeldung:

Zitat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'xx.xxx.xxx.xxx\'' at line 1
Statt der xx steht halt meine IP-Adresse... wenn ich $current_ip vorher als irgendeine andere Zahl (z.B. "5") definiere, funktioniert alles, nur eben nicht bei der richtigen IP...
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline   Mit Zitat antworten
Alt 29.07.2008, 17:14:25   #2 (permalink)
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose-Remote

LasMiranda eine Nachricht über ICQ schicken LasMiranda eine Nachricht über AIM schicken LasMiranda eine Nachricht über MSN schicken LasMiranda eine Nachricht über Yahoo! schicken LasMiranda eine Nachricht über Skype™ schicken
Reg: 05.05.2006
Beiträge: 3.054
Standard

Datentyp von ip?
Gruß, Martin
LasMiranda ist offline   Mit Zitat antworten
Alt 29.07.2008, 17:16:05   #3 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

ip varchar(15) default NULL
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 17:19:14   #4 (permalink)
n00b

ID: 319158
Lose-Remote

destro eine Nachricht über ICQ schicken
Reg: 06.05.2008
Beiträge: 81
Standard

Zitat:
Zitat von Drrichardfahrer Beitrag anzeigen
varchar (15)
PHP-Code:
1:
$sql "SELECT * FROM ip_check WHERE ip='" $current_ip "'; 
Probier es mal damit!
 
destro ist offline   Mit Zitat antworten
Alt 29.07.2008, 17:21:01   #5 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

Zitat:
Zitat von destro Beitrag anzeigen
Probier es mal damit!
Abgesehen davon, dass du ein " vergessen hast, funktioniert das auch nicht
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 17:28:39   #6 (permalink)
Lose 2.0 –
das zweite Zeitalter
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.650
Standard

Zitat:
$sql = mysql_real_escape_string($sql);
Du escapst die gesamte Query. Das kann ja nicht funktionieren
NEU OpenIsles - das freie Insel-Aufbauspiel NEU

www.theHacker.ws v3 | WhatPulse-Team
Bezahlte Startseite
- mehr Verdienst als auf klamm - viele Auszahlungen erhalten
theHacker ist offline   Mit Zitat antworten
Alt 29.07.2008, 17:40:06   #7 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

Wie soll ich es denn sonst machen?? Ich bitte um Quellcode
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 17:55:33   #8 (permalink)
Nerds2²ever
Benutzerbild von No5251

ID: 8850
Lose-Remote

No5251 eine Nachricht über ICQ schicken
Reg: 02.06.2006
Beiträge: 1.559
Standard

Denk einfach mal genau darüber nach, wann du was machen lässt, schaue
es dir genauer an und übe dich bei der Gelegenheit in "Debugging".

P.S: de.comp.lang.php.* FAQ: 16.14. Warum soll ich nicht SELECT * schreiben?
greetz
</no5251>


No5251 ist offline   Mit Zitat antworten
Alt 29.07.2008, 18:05:22   #9 (permalink)
Lose 2.0 –
das zweite Zeitalter
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.650
Standard

Zitat:
Zitat von Drrichardfahrer Beitrag anzeigen
Wie soll ich es denn sonst machen??
Was ist der Sinn von Escapen? Warum sollte man was escapen? Und was sollte man escapen?
Zitat:
Zitat von Drrichardfahrer Beitrag anzeigen
Ich bitte um Quellcode
Hast du diese Fragen geklärt, schaust du dir deinen Quellcode nochmal an und überlegst, was da mit den Antworten auf obige Fragen nicht zusammenpasst.
NEU OpenIsles - das freie Insel-Aufbauspiel NEU

www.theHacker.ws v3 | WhatPulse-Team
Bezahlte Startseite
- mehr Verdienst als auf klamm - viele Auszahlungen erhalten
theHacker ist offline   Mit Zitat antworten
Alt 29.07.2008, 19:10:12   #10 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

OK, ich hab mich jetzt weiter eingelesen in die Materie und verstehe, dass ich nur die eingegebenen Werte escapen soll...aber wie kann ich das in der Klasse verwirklichen? Es können ja jeweils eine unterschiedliche Anzahl von Variablen eingegeben worden sein.
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 19:12:54   #11 (permalink)
Lose 2.0 –
das zweite Zeitalter
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.650
Standard

Zitat:
Zitat von Drrichardfahrer Beitrag anzeigen
OK, ich hab mich jetzt weiter eingelesen in die Materie und verstehe, dass ich nur die eingegebenen Werte escapen soll...
Bingo
Zitat:
Zitat von Drrichardfahrer Beitrag anzeigen
aber wie kann ich das in der Klasse verwirklichen? Es können ja jeweils eine unterschiedliche Anzahl von Variablen eingegeben worden sein.
func_num_args() heißt hier das Zauberwort.
Du kannst dich selber versuchen oder im Snippets-Thread einfach die fertige Funktion abkopieren.
NEU OpenIsles - das freie Insel-Aufbauspiel NEU

www.theHacker.ws v3 | WhatPulse-Team
Bezahlte Startseite
- mehr Verdienst als auf klamm - viele Auszahlungen erhalten
theHacker ist offline   Mit Zitat antworten
Alt 29.07.2008, 19:32:46   #12 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

Wow, ihr seid ja echt genial

Ich hab mir mal die func_num_args() angesehen aber auf den Code im Snippet-Thread wäre ich nie gekommen.

Und die zurückgegebene Query ist jetzt genauso wie meine im oberen Code?? Weil jetzt funktioniert plötzlich die num_rows-Abfrage nicht mehr (es sollte 0 herauskommen).

Hier meine Änderungen:

In meiner Klasse:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
function query($sql) {
  
$args func_get_args();
  
$vargs = array();
  for(
$i=1$i<func_num_args(); $i++) {
     if (
get_magic_quotes_gpc()) {
        
$args[$i]=stripslashes($args[$i]);
     }
     
$vargs[]=mysql_real_escape_string($args[$i]);
  }
  
$query vsprintf($query,$vargs);
  
$res mysql_query($query);
  return(
$res);
}

function 
num_rows($query) {
  
$num_rows mysql_num_rows($query);
  return 
$num_rows

Und in der Datei weiterhin:
PHP-Code:
1:
2:
3:
$sql "SELECT zeit,ip FROM ip_check WHERE ip='" $current_ip "'";
   
$query $db->query($sql);
   
$count $db->num_rows($query); 
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 19:39:07   #13 (permalink)
Lose 2.0 –
das zweite Zeitalter
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 22.650
Standard

Du benutzt die Funktion ja falsch. Atm escapst du wieder alles und nicht nur die Eingabedaten.
Guck dir mal ice-breaker's Beispiel an, wie man db_query() benutzt.
NEU OpenIsles - das freie Insel-Aufbauspiel NEU

www.theHacker.ws v3 | WhatPulse-Team
Bezahlte Startseite
- mehr Verdienst als auf klamm - viele Auszahlungen erhalten

Geändert von theHacker (29.07.2008 um 19:39:32 Uhr) Grund: edit
theHacker ist offline   Mit Zitat antworten
Alt 29.07.2008, 19:50:22   #14 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

Ich bin einfach nur doof...

Neuer Versuch:
PHP-Code:
1:
2:
3:
$sql "SELECT zeit, ip FROM %s WHERE %s=%s, 'ipcheck', 'ip', " $current_ip;
$query $db->query($sql);
$count $db->num_rows($query); 
Trotzdem erscheint dann folgende Meldung:
Zitat:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ...
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!

Geändert von Drrichardfahrer (29.07.2008 um 20:24:16 Uhr)
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Alt 29.07.2008, 21:06:12   #15 (permalink)
Erfahrener Benutzer
Benutzerbild von Drrichardfahrer

ID: 207405
Lose-Remote

Reg: 20.04.2006
Beiträge: 7.088
Standard

Ich habs jetzt mal ohne SQL-Injektion-Sicherung und ohne Klasse probiert - da geht es auch nicht...da hats was anderes

PHP-Code:
1:
2:
3:
4:
$sql mysql_query("SELECT ip FROM ipcheck WHERE ip='$current_ip'"); 
if(
mysql_num_rows($sql) < 1) {
echo 
"Da ist nix drinnen";

Eigentlich sollte er 0 hinschreiben, weil die Tabelle ja leer ist, aber es kommt die Fehlermeldung:
Zitat:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... (die Zeile, wo eben das mysql_num_rows steht)
edit: Ich bin ein Depp! Ich hab den Namen der Tabelle falsch

edit2: Diese Variante geht, aber alle anderen oben in den vorigen Postings von mir gehen nicht... Für den richtigen Quellcode vergebe ich 3 Mio Klammlose!
99% RB für alle, die sich anmelden - tolle Seite mit losespuckenden Slots und vielen Aktionen!

Geändert von Drrichardfahrer (29.07.2008 um 21:30:36 Uhr)
Drrichardfahrer ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kann zu alle fehler gefunden! Tomson Lose4Action (erledigt) 13 31.07.2006 10:17:41
Scriptshop Fehler suchen und beheben 27o8 Lose4Scripts (erledigt) 3 24.07.2006 17:11:12
2 Fehler gefunden. 27o8 Bug-Report 4 08.06.2006 23:51:24
ich glaube ich hab ein Bug gefunden bei SS und weiß nicht wo das hingehört coolmono Ich bin neu hier und habe eine Frage! 9 29.04.2006 12:22:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27:52 Uhr.