Avatar billede fixbabe Nybegynder
29. oktober 2005 - 10:35 Der er 81 kommentarer og
1 løsning

mysql ban ip

<?
$ip = getenv('REMOTE_ADDR');
if (($ip == "127.0.0.1")
|| ($ip == "0.0.0.0")
|| ($ip == "0.0.0.0")
|| ($ip == "0.0.0.0")){
echo besked";

exit;
}else{
   
}
?>

Jeg vil gerne have en form hvor jeg kan smide ip og besked ind, samt en funktion her tjekker om den besøgende er banned. Hvis personen er skal den skrive den besked der er gemt sammen med personens ip.
Avatar billede fixbabe Nybegynder
29. oktober 2005 - 10:37 #1
Kommer i tankte om jeg godt selv kan lave form'en :) felterne hedder "ip" og "besked"
Avatar billede jakobdo Ekspert
29. oktober 2005 - 10:45 #2
Prøv at se om du kan finde lidt info i dette spørgsmål: http://www.eksperten.dk/spm/650478
Avatar billede fixbabe Nybegynder
29. oktober 2005 - 11:01 #3
Grunden til jeg søger hjælp her er at jeg ikke forstår meget af php, så hvordan havde du tænkt dig jeg skulle få noget ud af det link ? :)
Avatar billede jakobdo Ekspert
29. oktober 2005 - 11:20 #4
Har du rent faktisk kigget på linket: http://www.codebreaker.dk/exp/650478.php
Der er kode og det hele...
Avatar billede fixbabe Nybegynder
29. oktober 2005 - 11:21 #5
ja det har jeg faktisk, ingen grund til at tro jeg "bare" vil have det serveret. du kunne jo have skrevet "prøv google" i din første kommentar istedet
Avatar billede jakobdo Ekspert
29. oktober 2005 - 11:28 #6
Hvad er det præcis du vil have hjælp til?
Jeg har vist noget kode som gør det du ønsker?
Avatar billede fixbabe Nybegynder
29. oktober 2005 - 11:30 #7
at have en form hvor jeg smider ip og en besked ind. når en person så prøver at komme ind på sitet tjekker den om personen er banned, hvis personen er får personen en besked om ham er banned og en grund (beskeden)

Formen kan jeg selv lave, det er den funktion der skal tjekke om personen er banned jeg ikke kan lave.
Avatar billede jakobdo Ekspert
29. oktober 2005 - 11:34 #8
Vil du tjekke mod en database?
Eller hvad vil du tjekke op i mod?
Hvor vil du gemme alle de ip'er, beskeder og lign?
Avatar billede fixbabe Nybegynder
29. oktober 2005 - 11:36 #9
i en database som overskriften også hentyder til...
Avatar billede jakobdo Ekspert
29. oktober 2005 - 11:55 #10
Hehe!
Så laver du en tabel med dette:

--
-- Table structure for table `banned`
--

CREATE TABLE `banned` (
  `ip` int(10) unsigned NOT NULL default '0',
  `datotid` datetime default NULL,
  `kommentar` text collate latin1_danish_ci NOT NULL,
  PRIMARY KEY  (`ip`),
  KEY `ip` (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci;

Og så laver du et tjek med:
include("connect.php");
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$sql = "SELECT kommentar FROM banned WHERE ip = INET_ATON('".$ip."') AND (datotid > NOW() OR ISNULL(datotid)) LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "Din IP: <b>" . $ip . "</b> er banned<br>";
    echo "Besked fra admin: " . $row['kommentar'] . "<br>";
}
else
{
    echo "Velkommen: <b>" . $ip . "</b>";
}
Avatar billede ldrada Nybegynder
29. oktober 2005 - 16:42 #11
PS.
Istedet for at sætte hele siden i en else { }, så er det nemmere at fjerne den else, og bare tilføje et die(); efter besked fra admin ;)



Åh, jeg elsker die(). Der var en gang hvor jeg havde en admin.php på alle mine scripts som kun indeholdte "die("You fail!");"
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 09:53 #12
jakobdo - jeg får en fejl når jeg prøver at oprette databasen

Fejl

SQL-forespørgsel : 

CREATE TABLE `banned` (

`ip` int( 10 ) unsigned NOT NULL default '0',
`datotid` datetime default NULL ,
`kommentar` textcollate latin1_danish_ci NOT NULL ,
PRIMARY KEY ( `ip` ) ,
KEY `ip` ( `ip` )
)ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE = latin1_danish_ci

MySQL returnerede:


#1064 - 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 'textcollate latin1_danish_ci NOT  NULL ,
PRIMARY  KEY (  `ip`
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 09:58 #13
idrada - hva det sådan her du mente`?

    echo "Din IP: <b>" . $ip . "</b> er banned<br>";
    echo "Besked fra admin: " . $row['kommentar'] . "<br>";
}
else
{
die();
}
?>
Avatar billede ldrada Nybegynder
30. oktober 2005 - 10:44 #14
fixbabe:

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "Din IP: <b>{$ip}</b> er banned<br>";
    echo "Besked fra admin: {$row['kommentar']}<br>";
    die();
}

Uden else... :)~
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 10:47 #15
Takker :) hva med den fejl jeg får når jeg prøver at oprette databasen ? kan du hjælpe med den ?
Avatar billede ldrada Nybegynder
30. oktober 2005 - 10:49 #16
Prøv med at fjerne de sidste argumenter fra query'en.

CREATE TABLE `banned` (

`ip` int( 10 ) unsigned NOT NULL default '0',
`datotid` datetime default NULL ,
`kommentar` textcollate latin1_danish_ci NOT NULL ,
PRIMARY KEY ( `ip` ) ,
KEY `ip` ( `ip` )
)

MySQL laver MyISAM databaser per default, og der er ingen grund til at fortælle den at der skal et dansk tegnsæt i, da den klarer sig meget godt med æøå uden det.
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 10:52 #17
Nu får jeg dette:

#1064 - 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 'textcollate latin1_danish_ci NOT  NULL ,
PRIMARY  KEY (  `ip`
Avatar billede ldrada Nybegynder
30. oktober 2005 - 10:53 #18
Hov,

CREATE TABLE `banned` (

`ip` int( 10 ) unsigned NOT NULL default '0',
`datotid` datetime default NULL ,
`kommentar` text NOT NULL ,
PRIMARY KEY ( `ip` ) ,
KEY `ip` ( `ip` )
)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 10:57 #19
Nu sker der noget :) bare en ting, når jeg gemmer ip eks 0.0.0.0  så gemmer den ik .
Avatar billede ldrada Nybegynder
30. oktober 2005 - 10:59 #20
Hmm.... det må nok være fordi MySQL forventer en int, mens punktummerne gør, at den modtager en string.

Prøv at lave `ip` om til en TINYTEXT
Avatar billede jakobdo Ekspert
30. oktober 2005 - 11:00 #21
Det er fordi ip ikke er en streng!
Den skal laves om med: INET_ATON
Se denne sql:
$ip = $_SERVER["REMOTE_ADDR"];
mysql_query("INSERT INTO banned(ip,datotid,kommentar) VALUES(INET_ATON('".$ip."'),NOW(),'".$comment."') ON DUPLICATE KEY UPDATE datotid=NOW(),kommentar='".$comment."'");
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 11:04 #22
sry men der stod jeg af... er ik lige med længere
Avatar billede jakobdo Ekspert
30. oktober 2005 - 11:14 #23
INET_ATON og INET_NTOA
De 2 funktioner konvertere en IP  til og fra et nummer.
#

INET_ATON(expr)

Given the dotted-quad representation of a network address as a string, returns an integer that represents the numeric value of the address. Addresses may be 4- or 8-byte addresses.

mysql> SELECT INET_ATON('209.207.224.40');
        -> 3520061480

The generated number is always in network byte order. For the example just shown, the number is calculated as 209×2563 + 207×2562 + 224×256 + 40.

INET_ATON() also understands short-form IP addresses:

mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
        -> 2130706433, 2130706433

NOTE: When storing values generated by INET_ATON(), it is recommended that you use an INT UNSIGNED column. If you use a (signed) INT column, then values corresponding to IP addresses for which the first octet is greater than 127 will be truncated to 2147483647 (that is, the value returned by INET_ATON('127.255.255.255')). See Section 11.2, “Numeric Types”.
#

INET_NTOA(expr)

Given a numeric network address (4 or 8 byte), returns the dotted-quad representation of the address as a string.

mysql> SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
Avatar billede ldrada Nybegynder
30. oktober 2005 - 11:29 #24
Jakobo > Det lyder smart. Jeg har ellers altid brugt en string til at gemme mine IP addresser indtil nu. :)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 11:36 #25
Jakobo > må ærligt indrømme at jeg ikke fik en **** ud af det du smed der.. tror bare du skal smide et svar så glemmer jeg bare alt om det her script..
Avatar billede jakobdo Ekspert
30. oktober 2005 - 11:37 #26
Nej nej, du må ikke give op nu...
Vi er så tæt på mål! :o)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 11:39 #27
ja men sry, det der med at lave en ip om til et tal kan jeg ikke se det smarte i, så skal jeg til at bøvle med en funktion der kan lave tallet om til ip når jeg skal have det listet..
Avatar billede jakobdo Ekspert
30. oktober 2005 - 11:42 #28
Der er også en indbygget mysql funktion, den hedder: INET_NTOA(3520061480)
Prøv at lav: SELECT INET_NTOA(3520061480) og se hvad den giver dig.
Prøv evt også: SELECT INET_ATON('127.0.0.1')
Avatar billede ldrada Nybegynder
30. oktober 2005 - 11:43 #29
fixbabe:
Send koden som du har brugt til at gemme IP'er ind på http://pastebin.com/ (eller bare her ind), så fixer jeg eller Jakobo den så den virker :)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 11:51 #30
okay 2 min så
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 11:55 #31
add.php

<form method="post" action="list.php">
Ip <input type="text" name="ip" size="20"><br>
Besked <input type="text" name="besked" size="20"><br>
<input type="submit" value="Gem" name="addban"></font></td>
</form>


list.php

<?
include('connect.php');
$res = mysql_query('select * from banned2 order by id desc') or die(mysql_error());

if (isset($_POST['addban'])) {
    $sql = 'INSERT INTO banned2 (id, ip, besked) VALUES ("", "'.$_POST['ip'].'", "'.$_POST['besked'].'")';
        mysql_query($sql) or die("Kunne ikke forbinde : " . mysql_error());
        echo "<font face='Verdana' size='1'>Gemmer";
        print('<script type="text/javascript">window.location="list.php"</script>');
    }
   
if (isset($_GET['action']) && $_GET['action']=='slet') {
    mysql_query('DELETE FROM banned2 where id="'.$_GET['id'].'"') or die(mysql_error());
    print('<script type="text/javascript">window.location="list.php"</script>');
}
?>
<script language="JavaScript">
function erdusikker() {
  sikker = confirm('Er du sikker på at du vil slette?');
     
  if(sikker == true) {
    return true;
  } else {
    return false;
  }
}
</script>
<b>Bans</b><br><br>
<table border="0" cellspacing="1" width="450" style="border-left-width: 0; border-right-width: 0; border-bottom-width: 0">
  <tr>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Ip</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>besked</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Funtion</b></td>
      </tr>
        <?
while ($info = mysql_fetch_array($res)) {
    ?>
  <tr>
    <td width="100" style="border-style:none; border-width:medium; "><? echo $info['ip']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><? echo $info['besked']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><a href="list.php?action=slet&id=<? echo $info['id']; ?>">slet</a></td>
  </tr>
</font>
<?
}
echo '</table>';
?>

Sådan
Avatar billede jakobdo Ekspert
30. oktober 2005 - 12:05 #32
Ret denne linie:
$sql = 'INSERT INTO banned2 (id, ip, besked) VALUES ("", "'.$_POST['ip'].'", "'.$_POST['besked'].'")';
til:
$sql = 'INSERT INTO banned2 (id, ip, besked) VALUES ("", INET_ATON("'.$_POST['ip'].'"), "'.$_POST['besked'].'")';
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 12:07 #33
hvad skal ændre på databasen ?
Avatar billede ldrada Nybegynder
30. oktober 2005 - 12:08 #34
fixbabe: Med jakobo's løsning skal du ikke ændre i databasen :)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 12:10 #35
hva med banned.php så ? og nu lister den det nr der er gemt ik ipen
Avatar billede ldrada Nybegynder
30. oktober 2005 - 12:10 #36
Så paste koden fra banned.php :)
Avatar billede jakobdo Ekspert
30. oktober 2005 - 12:12 #37
Du skal også rette:
$res = mysql_query('select * from banned2 order by id desc') or die(mysql_error());
til:
$res = mysql_query('select id,INET_NTOA(ip), kommentar from banned2 order by id desc') or die(mysql_error());

Og hvor er koden til banned.php?
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 12:16 #38
<?php include("connect.php");
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$sql = "SELECT besked FROM banned WHERE ip = INET_ATON('".$ip."') AND (datotid > NOW() OR ISNULL(datotid)) LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "Din IP: <b>" . $ip . "</b> er banned<br>";
    echo "Besked fra admin: " . $row['kommentar'] . "<br>";
die();
}
?>
Avatar billede jakobdo Ekspert
30. oktober 2005 - 12:29 #39
Den er som den skal være...
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 13:13 #40
kommentar skal ikke rettes til besked? og det er denne database:

CREATE TABLE `banned` (

`ip` int( 10 ) unsigned NOT NULL default '0',
`datotid` datetime default NULL ,
`kommentar` text NOT NULL ,
PRIMARY KEY ( `ip` ) ,
KEY `ip` ( `ip` )
)

?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 13:16 #41
jo, besked skal rettes til kommentar! :o)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 13:23 #42
Der er noget helt galt, smider lige de 3 scripts op igen.

add.php
<form method="post" action="list.php">
Ip <input type="text" name="ip" size="20"><br>
kommentar <input type="text" name="kommentar" size="20"><br>
<input type="submit" value="Gem" name="addban"></font></td>
</form>

list.php
<?
include('connect.php');
$res = mysql_query('select * from banned order by ip desc') or die(mysql_error());

if (isset($_POST['addban'])) {
    $sql = 'INSERT INTO banned (ip, kommentar) VALUES ("", INET_ATON("'.$_POST['ip'].'"), "'.$_POST['kommentar'].'")';
        mysql_query($sql) or die("Kunne ikke forbinde : " . mysql_error());
        echo "<font face='Verdana' size='1'>Gemmer";
        print('<script type="text/javascript">window.location="list.php"</script>');
    }
   
if (isset($_GET['action']) && $_GET['action']=='slet') {
    mysql_query('DELETE FROM banned where id="'.$_GET['id'].'"') or die(mysql_error());
    print('<script type="text/javascript">window.location="list.php"</script>');
}
?>
<script language="JavaScript">
function erdusikker() {
  sikker = confirm('Er du sikker på at du vil slette?');
     
  if(sikker == true) {
    return true;
  } else {
    return false;
  }
}
</script>
<b>Bans</b><br><br>
<table border="0" cellspacing="1" width="450" style="border-left-width: 0; border-right-width: 0; border-bottom-width: 0">
  <tr>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Ip</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>kommentar</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Funtion</b></td>
      </tr>
        <?
while ($info = mysql_fetch_array($res)) {
    ?>
  <tr>
    <td width="100" style="border-style:none; border-width:medium; "><? echo $info['ip']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><? echo $info['kommentar']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><a href="list.php?action=slet&id=<? echo $info['id']; ?>">slet</a></td>
  </tr>
</font>
<?
}
echo '</table>';
?>

banned.php
<?php include("connect.php");
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$sql = "SELECT besked FROM banned WHERE ip = INET_ATON('".$ip."') AND (datotid > NOW() OR ISNULL(datotid)) LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "Din IP: <b>" . $ip . "</b> er banned<br>";
    echo "Besked fra admin: " . $row['kommentar'] . "<br>";
die();
}
?>Dette er siden


Databasen:
Felter: ip - datotid - kommentar

Ved add sker dette: Kunne ikke forbinde : Column count doesn't match value count at row 1
Avatar billede jakobdo Ekspert
30. oktober 2005 - 13:31 #43
Prøv at ret din insert sql til:
$sql = 'INSERT INTO banned (ip, datotid, kommentar) VALUES ("", INET_ATON("'.$_POST['ip'].'"),NOW(), "'.$_POST['kommentar'].'")';
Avatar billede jakobdo Ekspert
30. oktober 2005 - 13:32 #44
Nej, det skal være:
$sql = 'INSERT INTO banned (ip, kommentar) VALUES (INET_ATON("'.$_POST['ip'].'"), "'.$_POST['kommentar'].'")';
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:01 #45
Kunne ikke forbinde : Duplicate entry '1353153262' for key 1
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:03 #46
bare glem den sidste :) rettede en fejl og nu virker det
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:07 #47
Det virker nu :) dejligt, der er bare en ting hvordan får jeg den til at liste ip istedet for det nummer den gemmer?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:10 #48
Supert!
Og et svar!
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:11 #49
Det gør du ved at rette:
$res = mysql_query('select * from banned2 order by id desc') or die(mysql_error());
til:
$res = mysql_query('select id,INET_NTOA(ip), kommentar from banned2 order by id desc') or die(mysql_error());
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:24 #50
jeg har fjernet id fra den linje du lige skrev da variablen id ikke er i databasen. nu lister den hverken ip eller nr

$res = mysql_query('select INET_NTOA(ip), kommentar from banned order by ip desc') or die(mysql_error());
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:28 #51
nr hvor skulle det komme fra?
Prøv: INET_NTOA(ip) as nyip og udskriv så: $info['nyip'] og ikke: $info['ip']
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:32 #52
haha :D kanont
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:33 #53
Takker mange gange for jeres hjælp.
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:39 #54
Takker for point! :o)
Og godt vi kom helt i mål!
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:40 #55
Hmm ja helt i mål er vi nu ik..

Kunne ikke forbinde : Column 'ip' cannot be null
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:42 #56
hva gør "datotid" og er det muligt at smide "id" ind? den brokker ved mig hvis jeg prøver at tilføje id til databasen
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:46 #57
datotid var noget jeg brugte, fordi banningen skulle være tidsbestemt.
I dit tilfælde ville jeg nok bruge:
id = int,auto_increment
ip = int(10)
kommentar eller besked = text
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:48 #58
ip = UNSIGNED ?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 14:53 #59
Du kan bare lade vær med at vælge noget! :o)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 14:56 #60
Fejl

SQL-forespørgsel : 

CREATE TABLE `banned2` (

`id` INT( 2 ) NOT NULL AUTO_INCREMENT ,
`ip` INT( 10 ) UNSIGNED NOT NULL ,
`datotid` DATETIME,
`kommentar` TEXT( 250 ) NOT NULL ,
`besked` TEXT( 250 ) NOT NULL ,
PRIMARY KEY ( `id` )
)

MySQL returnerede:


#1064 - 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 '(250) NOT NULL, `besked` TEXT(250) NOT NULL, PRIMARY KEY (`id`)

:S
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:08 #61
Prøv at nøjes med dette:
CREATE TABLE `banned2` (
`id` INT( 2 ) NOT NULL AUTO_INCREMENT ,
`ip` INT( 10 ) UNSIGNED NOT NULL ,
`besked` TEXT( 250 ) NOT NULL ,
PRIMARY KEY ( `id` )
)
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:10 #62
Fejl

SQL-forespørgsel : 

CREATE TABLE `banned2` (

`id` INT( 2 ) NOT NULL AUTO_INCREMENT ,
`ip` INT( 10 ) UNSIGNED NOT NULL ,
`besked` TEXT( 250 ) NOT NULL ,
PRIMARY KEY ( `id` )
)

MySQL returnerede:


#1064 - 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 '( 250  )  NOT  NULL ,
PRIMARY  KEY (  `id`  )  )' at line 3
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:12 #63
Prøv denne:
CREATE TABLE `banned2` (
`id` INT NOT NULL AUTO_INCREMENT ,
`ip` INT( 10 ) NOT NULL ,
`besked` TEXT NOT NULL ,
PRIMARY KEY ( `id` )
);
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:23 #64
Det var bedre :) har ændret "besked" til "kommentar" og har tilføjet "andet" til databasen (samme settings som kommentar)

men:
Kunne ikke forbinde : 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 '' at line 1


Linje 1:
$sql = 'INSERT INTO banned2 (ip, kommentar, andet) VALUES (INET_ATON("'.$_POST['ip'].'"), "'.$_POST['kommentar'].'" , "'.$_POST['andet'].'"';
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:28 #65
Måske sådan:
$sql = 'INSERT INTO banned2 (ip, kommentar, andet) VALUES (INET_ATON("'.$_POST['ip'].'"), "'.$_POST['kommentar'].'" , "'.$_POST['andet'].'")';
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:30 #66
Kunne ikke forbinde : Column 'ip' cannot be null

så tæt på, men stadig så langt fra..
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:33 #67
bare glem den sidste fejl der..
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:34 #68
jeg har tilføjet min egen ip til listen..
men kan stadig se "siden" banned.php

<?php include("connect.php");
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$sql = "SELECT kommentar FROM banned2 WHERE ip = INET_ATON('".$ip."') AND (datotid > NOW() OR ISNULL(datotid)) LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "<font face='verdana' size='1'>Info:<br>Din ip ".$ip." er banned<br>";
    echo "Grund: ".$row['kommentar']."";
die();
}
?>siden
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:51 #69
Ret din $sql til:
$sql = "SELECT kommentar FROM banned2 WHERE ip = INET_ATON('".$ip."') LIMIT 1";
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:52 #70
ah tilføjede ellers "timedate" til databasen
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:54 #71
hva var det "datetime" gjorde ?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:55 #72
Har du ikke kun felterne: id, ip og kommentar?
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 15:56 #73
nej jeg har "id, ip, kommentar, andet og nu også datotid
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:58 #74
Ok!
Avatar billede jakobdo Ekspert
30. oktober 2005 - 15:59 #75
Kom med alt din kode...
Så retter jeg det lige til!
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 16:01 #76
Det virker nu som det skal:) takker endnu en gang og smider scriptet op så andre kan bruge det.

//mysql databsen
CREATE TABLE `banned` (
  `id` int(11) NOT NULL auto_increment,
  `ip` int(10) NOT NULL default '0',
  `kommentar` text NOT NULL,
  `andet` text NOT NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;

//add.php
<form method="post" action="list.php">
Ip <input type="text" name="ip" size="20"><br>
kommentar <input type="text" name="kommentar" size="20"><br>
Andet: <textarea rows="2" name="andet" cols="20"></textarea><br>
<input type="submit" value="Gem" name="addban"></font></td>
</form>

//banned.php
<?php include("connect.php");
$ip = mysql_escape_string($_SERVER['REMOTE_ADDR']);
$sql = "SELECT kommentar FROM banned WHERE ip = INET_ATON('".$ip."') LIMIT 1";
$query = mysql_query($sql);

if(mysql_num_rows($query)>0)
{
    $row = mysql_fetch_assoc($query);
    //header("location: banned.php");
    echo "<font face='verdana' size='1'>Info:<br>Din ip ".$ip." er banned<br>";
    echo "Grund: ".$row['kommentar']."";
die();
}
?>her kommer siden

//list.php
<?
include('connect.php');
if (isset($_POST['addban'])) {
    $sql = 'INSERT INTO banned (ip, kommentar, andet) VALUES (INET_ATON("'.$_POST['ip'].'"), "'.$_POST['kommentar'].'" , "'.$_POST['andet'].'")';        mysql_query($sql) or die("Kunne ikke forbinde : " . mysql_error());
        echo "<font face='Verdana' size='1'>Gemmer";
        print('<script type="text/javascript">window.location="list.php"</script>');
}
   
if (isset($_GET['action']) && $_GET['action']=='slet') {
    mysql_query('DELETE FROM banned where id="'.$_GET['id'].'"') or die(mysql_error());
    print('<script type="text/javascript">window.location="list.php"</script>');
}
$res = mysql_query('select id, kommentar, andet, INET_NTOA(ip) as nyip from banned order by id desc') or die(mysql_error());
?>
<script language="JavaScript">
function erdusikker() {
  sikker = confirm('Er du sikker på at du vil slette?');
     
  if(sikker == true) {
    return true;
  } else {
    return false;
  }
}
</script>
<b>Bans</b><br><br>
<table border="0" cellspacing="1" width="450" style="border-left-width: 0; border-right-width: 0; border-bottom-width: 0">
  <tr>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Id</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Ip</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>kommentar</b></td>
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Andet</b></td>   
    <td width="150" style="border-bottom-style: none; border-bottom-width: medium"><b>Funtion</b></td>
      </tr>
        <?
while ($info = mysql_fetch_array($res)) {
    ?>
  <tr>
      <td width="100" style="border-style:none; border-width:medium; "><? echo $info['id']; ?></td>
    <td width="100" style="border-style:none; border-width:medium; "><? echo $info['nyip']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><? echo $info['kommentar']; ?></td>
        <td width="150" style="border-style:none; border-width:medium; "><? echo $info['andet']; ?></td>
    <td width="150" style="border-style:none; border-width:medium; "><a href="list.php?action=slet&id=<? echo $info['id']; ?>">slet</a></td>
  </tr>
</font>
<?
}
echo '</table>';
?>
Avatar billede fixbabe Nybegynder
30. oktober 2005 - 16:02 #77
hva var det datotid gjorde?
Avatar billede jakobdo Ekspert
30. oktober 2005 - 17:20 #78
Jeg brugte den i mit system til at lave en ban tidsbestemt!
Så jeg f.eks. kunne banne dig en time, og derefter måtte du så gerne komme ind igen.
Avatar billede fixbabe Nybegynder
01. april 2006 - 20:11 #79
Back igen :) er løbet ind i et problem med ip lign denne: 202.184.41.200
Den udskriver den som værende ip 127.255.255.255
Avatar billede jakobdo Ekspert
02. april 2006 - 19:28 #80
Hmmm...
Det lyder mærkeligt.
INET_ATON() og INET_NTOA() burde jo ellers virke fint med det ip-nummer.
Avatar billede fixbabe Nybegynder
02. april 2006 - 19:30 #81
foreskellen på INET_ATON() og INET_NTOA()  ?
Avatar billede jakobdo Ekspert
02. april 2006 - 19:32 #82
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester