| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

31-01-2010, 14:39
|
|
unnamedkh
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 20
|
|
Problem bei Verschieben eines Such-Skritpes
Hallo zusammen,
ich habe folgendes Problem: Ich möchte eine einfache IP-Sperre für eine Bewertung realisieren. Dazu lasse ich alle verwendeten IPs in eine Spalte ("IP") eintragen. Dann lasse ich nach dieser IP suchen und falls gefunden, darf derjenige nicht mehr abstimmen. Soweit so gut. Das Script läuft auch - jedoch nur relativ weit oben in meinem Gesamtcode. Kopiere ich es weiter nach unten, funktioniert die Überprüfung der IP nicht mehr. Hat jemand eine Idee, woran das liegen könnte? Ich bin derzeit ratlos. Anbei der verkürzte Code.
PHP-Code:
<?
$ip=$_SERVER['REMOTE_ADDR'];
$aid=$comments[id];
$voted=mysql_num_rows(mysql_query("SELECT IP FROM test WHERE IP LIKE '%".$ip."%' AND id='$aid'"));
if(!$voted)
{
//darf abstimmen
}
else
{
//darf nicht abstimmen
}
?>
|

31-01-2010, 14:43
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
„Funzt nich“ ist absolut keine brauchbare Problembeschreibung.
http://www.php-resource.de/forum/php...uncements.html
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

31-01-2010, 14:43
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Pack doch noch mal den Code nach unten. Und dann gibst du dir den Query per echo aus. Ich vermute, dass du irgendwo eine Variable überschreibst.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

31-01-2010, 14:58
|
|
unnamedkh
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 20
|
|
@wahsaga: "Funktioniert nicht" heißt, dass ich immer voten (if) kann, obwohl meine IP schon vorhanden ist.
@Kropff: Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten? Wenn ich das mache, dann kommt "oben" eine "1", unten erscheint nichts.
Wenn ich eine Variable überschreiben sollte, dann hätte ich doch bei einem anderen Script Probleme, aber nicht bei dem, das überschreibt, oder? Da es auch fast am Ende meines Gesamtcodes steht, dürfte danach auch nix überschreiben.
|

31-01-2010, 15:03
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von unnamedkh
"Funktioniert nicht" heißt, dass ich immer voten (if) kann, obwohl meine IP schon vorhanden ist.
|
Ja, toll - hilft aber immer noch nicht weiter.
Zitat:
|
Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten? Wenn ich das mache, dann kommt "oben" eine "1", unten erscheint nichts.
|
Das deutet nach wie vor darauf hin, dass die Datenbankabfrage schief gegangen ist.
Um herauszufinden, warum, liest du jetzt erst mal die Regeln, und machst, was da drin steht.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

31-01-2010, 15:06
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von unnamedkh
@Kropff: Blöde Frage, einfach "echo $voted" oder muss ich etwas beachten?
|
Wer lesen kann, ist klar im Vorteil:
Zitat:
|
Und dann gibst du dir den Query per echo aus
|
PHP-Code:
echo "SELECT IP FROM test WHERE IP LIKE '%".$ip."%' AND id='$aid'"
Außerdem ist das LIKE imho fehl am Platz. Da solltest du mit = arbeiten.
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|

31-01-2010, 15:20
|
|
unnamedkh
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 20
|
|
Zitat:
Zitat von wahsaga
Ja, toll - hilft aber immer noch nicht weiter.
|
Ich weiß nicht, was ich Dir noch schreiben soll. Wie geschrieben, funktioniert das Skript relativ weit oben ohne Probleme, weiter unten führt er immer else anstatt wie eigentlich gewollt if aus. Wenn ich dann else ausführen (also vote), wird alles erhöht, IP eingetragen, allerdings kann ich weiter else ausführen, sprich ist $voted immer noch nicht das, was ich will. Die Spalte IP sieht in etwa so aus "ip, ip2, ip3, ...". Mehr fällt mir beim besten Willen nicht ein.
@Kropff: Danke. Jetzt weiß ich, dass ich vorher die Variable $ip schon einmal verwende (nach dem ersten Aufruf des Skriptes und vor dem letzten/zweiten Aufruf). Ändert aber nichts, da der Wert gleich ist.
Nein, like stimmt meiner Meinung nach, weil ich nach einem Muster in der Spalte suche. Da in der Spalte mehrere IPs sind, suche ich nur nach einem Muster - die einzigartige IP.
|

31-01-2010, 15:32
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Das Problem mit LIKE ist aber, dass %$ip% mit $ip = 1.0.0.1 nicht nur auf 1.0.0.1 passt sondern auch auf 11.0.0.11 und noch viele weitere IPs. Ich hoffe du verwendest ein Trennzeichen in der IP-Spalte, z.B. ein Komma. Dann solltest du %,$ip,% verwenden.
Noch besser wäre natürlich, wenn du deine DB normalisierst!
|

31-01-2010, 15:39
|
|
unnamedkh
Registrierter Benutzer
|
|
Registriert seit: Nov 2006
Beiträge: 20
|
|
Zitat:
Zitat von onemorenerd
Das Problem mit LIKE ist aber, dass %$ip% mit $ip = 1.0.0.1 nicht nur auf 1.0.0.1 passt sondern auch auf 11.0.0.11 und noch viele weitere IPs. Ich hoffe du verwendest ein Trennzeichen in der IP-Spalte, z.B. ein Komma. Dann solltest du %,$ip,% verwenden.
Noch besser wäre natürlich, wenn du deine DB normalisierst!
|
Ah, danke, daran habe ich nicht gedacht. Werde ich die Komma-Variante verwenden, zumal ich nicht genau weiß, was Du mit "normalisieren" meinst!?
|

31-01-2010, 15:43
|
Kropff
  Administrator
|
|
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.310
|
|
Zitat:
Zitat von unnamedkh
zumal ich nicht genau weiß, was Du mit "normalisieren" meinst!?
|
Normalisierung
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
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.
HTML-Code ist aus.
|
|
|
|
PHP News
|