Ip adres blocken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerben van Erkelens

Gerben van Erkelens

29/01/2007 19:12:00
Quote Anchor link
Hallo,

Ik heb in een database alvast een ip adres neergezet. Ik moet de boel nog zo maken dat hij als er gereageerd wordt op bijv nieuws dat hij dan het ip toevoegt.

Nu bestaat mijn table ip op dit moment uit de volgende velden:
ip_id
ip
news_id
date
ban

Het veld ban kan alleen maar een 1 of een 0 staan. Is het een 0 dan is hij niet gebanned. Staat er een 1 dan moet hij gebanned worden.

Nu wil ik met de volgende code kijken of je gebanned bent. Daarmee gebruik ik mijn eigen ip als test. Echter gebeurt er helemaal niks. hij zegt alleen Qeury was leeg.

Dit is mijn code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include "inc_connect.php";

$current_ip =  $_SERVER['REMOTE_ADDR'];

$query = "SELECT * FROM ip WHERE ip = '" . $current_ip . "'";
$res = mysql_query($sql) or die(mysql_error());
    
if (mysql_num_rows($res) >= 1)
    {

        echo "<center>Je bent geblokkeerd op deze website.</center>";
    }


?>


echter staat er dus alleen maar query is leeg op het scherm. Nu heb ik current_ip al eens vervangen door letterlijk mijn ip in te vullen maar ook dan geeft hij dezelfde melding.

Kan iemand mij vertellen wat er fout gaat?

EDIT:
De Dingen als news_id en date ga ik gebruiken om in de backend te kunnen zien bij welk news article en wanneer het ip is gebruikt. Om zo de laatste reactie te achterhalen.
Gewijzigd op 01/01/1970 01:00:00 door Gerben van Erkelens
 
PHP hulp

PHP hulp

26/12/2024 15:21:34
 
Joren de Wit

Joren de Wit

29/01/2007 19:48:00
Quote Anchor link
Het lijkt me dat je in je query ook nog wilt toevoegen dat ban gelijk moet zijn aan 1.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT *
FROm ip
WHERE ip = '127.0.0.1'
AND ban = 1

Als die gegevens in je database voorkomen, zou gewoon weergegeven moeten worden dat je gebanned bent.

Nog iets mbt tot je datamodel: het lijkt mij logischer om het ip adres bij het nieuwsbericht in de tabel op te slaan in plaats van andersom. Je hebt immers al een datum waarop het article geplaatst is en dan ook een ip adres waarmee het geplaatst is.
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 19:52:00
Quote Anchor link
dat klopt maar het gaat vooral om de reacties. Ik heb alle id's in een tabel opgeslagen niet het gehele bericht. En die date in de ip tabel heeft de datum van de reactie. Maar ik snap wat je bedoelt. Het ip kan ik dan beter toevoegen bij de tabel waar de reacties in staan. Ga dit meteen even testen.

Als ik er echter en ban = 1 bij doe dan werdt hij nog steeds niet en geeft hij hetzelfde weer. De code nu is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include "inc_connect.php";

$current_ip =  $_SERVER['REMOTE_ADDR'];

$query = "SELECT * FROM ip WHERE ip = '". $current_ip ."' AND ban = 1";
$res = mysql_query($sql) or die(mysql_error());
                
if (mysql_num_rows($res) >= 1)
    {

        echo "<center>Je bent geblokkeerd op deze website.</center>";
    }


?>


snap niet waar het fout gaat.
 
Joren de Wit

Joren de Wit

29/01/2007 20:15:00
Quote Anchor link
Welke melding krijg je precies dan?
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:19:00
Quote Anchor link
Echt alleen maar het volgende: Query was leeg

Gecontroleerd of hij $current_ip niet leeg was maar die bevat het juiste ip en daarnaast ook gekeken of er iets in de DB was ingevuld wat ook klopt.
 
Frank -

Frank -

29/01/2007 20:22:00
Quote Anchor link
Echo de query eens, dan krijg je zekerheid over wat je nu precies naar de database stuurt.
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:27:00
Quote Anchor link
Hmm dat is raar. Als ik de query echo dan krijg ik precies hetzelfde terug. Dus niet wat ik eigenlijk query lijkt me. Of hij is dus daadwerkelijk leeg.
 
Joren de Wit

Joren de Wit

29/01/2007 20:29:00
Quote Anchor link
'Query was leeg' is geen standaard mysql foutmelding (ik ben hem iig nog nooit tegen gekomen) dus dat betekent dat dat ergens in je script moet staan?

En Frank bedoelt dat je de query echoed, dus de variabele $query. Dat heb je gedaan?
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:32:00
Quote Anchor link
Yup en ook $res heb ik geechoéd gewoon om te kijken wat ik daar dan van terug kreeg.

tevens me hele pagina afgezocht maar geen Query is leeg gevonden :S
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:35:00
Quote Anchor link
Nu breekt mijne bek open. Heb de gehele local site en www map gechecked via dreamweaver of er in de sourcecode Qeury was leeg stond maar nergens op de site is deze te vinden :S
 
Jan Koehoorn

Jan Koehoorn

29/01/2007 20:36:00
Quote Anchor link
Is dit nog steeds je oorspronkelijke code?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include "inc_connect.php";

$current_ip =  $_SERVER['REMOTE_ADDR'];

$query = "SELECT * FROM ip WHERE ip = '" . $current_ip . "'";
$res = mysql_query($sql) or die(mysql_error());
    
if (mysql_num_rows($res) >= 1)
    {

        echo "<center>Je bent geblokkeerd op deze website.</center>";
    }

?>

Dan vind ik het niet zo vreemd want je gebruikt eerst $query als variabelenaam, en later als je hem uitvoert ineens $sql.
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:39:00
Quote Anchor link
uhum............lol?


EDIT:
verrekte jammer dat ik daar al twee dagen gewoon gans overheen kijk.....
Gewijzigd op 01/01/1970 01:00:00 door Gerben van Erkelens
 
Jan Koehoorn

Jan Koehoorn

29/01/2007 20:40:00
Quote Anchor link
Regel 6 en 7 van je code :-)

Edit:
Ja, dat zijn zo van die dingen he!
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
 
Frank -

Frank -

29/01/2007 20:48:00
Quote Anchor link
Gerben van Erkelens schreef op 29.01.2007 20:39:
uhum............lol?


EDIT:
verrekte jammer dat ik daar al twee dagen gewoon gans overheen kijk.....
Dan moet je toch eens wat aan de error_reporting() doen! Zet die op E_ALL en je krijgt direct een notice dat je een ongedefinieerde variabele gebruikt.

Onmisbaar bij het debuggen...
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 20:50:00
Quote Anchor link
goede tip, ga ik dat iig even doen zodat het voortaan wat makkelijk gaat :D
 
Jan Koehoorn

Jan Koehoorn

29/01/2007 20:54:00
Quote Anchor link
Bijkomend voordeel: omdat die error_reporting (E_ALL) zelfs over notices gaat klagen ga je na een tijdje een stuk scherper kijken. Take a tip from one who's tried.
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 21:02:00
Quote Anchor link
eigenlijk onder het motto twee vliegen in 1 klap slaan :)
 
Jan Koehoorn

Jan Koehoorn

29/01/2007 21:02:00
Quote Anchor link
Ja, eerst vind je het zwaar irritant al die notices steeds, maar na een tijdje programmeer je gewoon beter.
 
Gerben van Erkelens

Gerben van Erkelens

29/01/2007 21:03:00
Quote Anchor link
Mooi dan wordt dat vanaf nu mijn nieuwe standaard.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.