Avatar billede thedeathart Nybegynder
15. juni 2004 - 23:59 Der er 16 kommentarer og
1 løsning

IP-loggin på mit login-system.

Hej..

Er der nogle der kan komme med nolge ider til at lave en slags ip-logging på dette login-system.
Det skal helst være i en tekst-fil.

<?php

include ('config.php');

function validate_user($username, $password) {
  $username=myaddslash($username);
  $password=myaddslash($password);
  $res = mysql_query("SELECT 1 FROM sw_medlemmer WHERE username='$username' AND `password`='$password' LIMIT 1");
  return( mysql_num_rows($res) == 1 );
}

function myaddslash($s){
  return get_magic_quotes_gpc()?$s:addslashes($s);
}
  function authenticate_user()
  {
    $is_logged_in = false;
    if (isset($_SERVER['PHP_AUTH_USER'])) {
      $is_logged_in = validate_user($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
    }
    if (!$is_logged_in) {
      header('WWW-Authenticate: Basic realm="ShadowWeb Adminsystem"');
      header('HTTP/1.0 401 Unauthorized');
      echo "<br><b><center>INGEN ADGANG UDEN LOGIN !";
      echo "<br><b><center><br> Du indtastede: <br><br>Bruger: ";
      echo $_SERVER['PHP_AUTH_USER'];
      echo "<br><br>Password: ";
      echo $_SERVER['PHP_AUTH_PW'];
      exit;
    }
  }
  authenticate_user();

?>
Avatar billede dorgbar Nybegynder
16. juni 2004 - 02:46 #1
du har ikke mysql eller hva? for det vilgøre det noget nemmere.
og vil du både have at der er ipkontrol og bruger/kode ?
Avatar billede sjh Nybegynder
16. juni 2004 - 03:17 #2
Du kan gøre det sådan:

Tilføj kode i din -> config.php

<?php
  function my_log_ip($filename) {
    $strIP = $_SERVER["REMOTE_ADDR"];
    $fh = fopen ($filename, "a+");
    fwrite($fh, $strIP."\r\n");
    fclose($fh);
  }
?>


Så kan du indtaste den her kode hvor du vil:
<?php my_log_ip("log_login_2004.txt");?>

eller

my_log_ip("log_login_2004.txt");
Avatar billede riversen Nybegynder
16. juni 2004 - 06:55 #3
dorgbar: hvis du ser i hans kode, vil du får svar på dit spørgsmål ;-)
Avatar billede thedeathart Nybegynder
16. juni 2004 - 08:13 #4
sjh, det ser rigtigt godt ud, men jeg får en fejl:

conncot redeclare my_log_up() in [sti]/config.php on line 7

linje 7: function my_log_ip($filename) {
Avatar billede thedeathart Nybegynder
16. juni 2004 - 08:31 #5
har fixet det, jeg lagde bare funktionen i en ny fil, og inkludere den kun én gang.

Mange tak for hjælpen.
Avatar billede thedeathart Nybegynder
16. juni 2004 - 08:44 #6
eneste problem er at den oprette en ny fil hver gang den vil logge.
Avatar billede riversen Nybegynder
16. juni 2004 - 08:54 #7
det lyder lidt underligt for a+ åbner netop for en fil med skrive og læse rettigheder. Og skrivning foretages i slutningen af filen. Filen oprettes kun, hvis den ikke eksisterer
Avatar billede thedeathart Nybegynder
16. juni 2004 - 08:58 #8
ja, filen er chmod til 777, men den laver 2 filer: log_login_2004 og log_login_2004txt
altså uden .
Har også prøvet med et filnavn uden . men den oprette altig en til :S
Men det lader til at den logger det rigtigt..Bare i 2 filer ?-)
Avatar billede riversen Nybegynder
16. juni 2004 - 08:59 #9
jamen så har du lavet en fejl i kaldet af funktionen
Avatar billede riversen Nybegynder
16. juni 2004 - 08:59 #10
dvs. du angiver forskellige filnavne
Avatar billede thedeathart Nybegynder
16. juni 2004 - 09:00 #11
skriver sådan her:

my_log_ip("log_login_2004.txt");

og det bliver kun gjordt én gang.
Avatar billede thedeathart Nybegynder
16. juni 2004 - 09:02 #12
dooh.. havde skrevet det 2 forskellige steder. ups.

nu virker det rigtigt, men kun når jeg ikke bruger .txt
Avatar billede riversen Nybegynder
16. juni 2004 - 09:12 #13
ja, tænkte det nok :-)
Avatar billede riversen Nybegynder
16. juni 2004 - 09:13 #14
post al din kode her. Du må have en anden fejl så, hvis ikke det virker med .txt.
Avatar billede thedeathart Nybegynder
16. juni 2004 - 09:42 #15
[login.php]
<?php

include('config.php');
include('iplog.php');
my_log_ip("log_login_2004");

function validate_user($username, $password) {
  $username=myaddslash($username);
  $password=myaddslash($password);
  $res = mysql_query("SELECT 1 FROM sw_medlemmer WHERE username='$username' AND `password`='$password' LIMIT 1");
  return( mysql_num_rows($res) == 1 );
}

function myaddslash($s){
  return get_magic_quotes_gpc()?$s:addslashes($s);
}
  function authenticate_user()
  {
    $is_logged_in = false;
    if (isset($_SERVER['PHP_AUTH_USER'])) {
      $is_logged_in = validate_user($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
    }
    if (!$is_logged_in) {
      header('WWW-Authenticate: Basic realm="ShadowWeb Adminsystem"');
      header('HTTP/1.0 401 Unauthorized');
      echo "<br><b><center>INGEN ADGANG UDEN LOGIN !";
      echo "<br><b><center><br> Du indtastede: <br><br>Bruger: ";
      echo $_SERVER['PHP_AUTH_USER'];
      echo "<br><br>Password: ";
      echo $_SERVER['PHP_AUTH_PW'];
      exit;
    }
  }
  authenticate_user();
 


?>


[iplog.php]

<?

function my_log_ip($filename) {
    $strIP = $_SERVER["REMOTE_ADDR"];
    $fh = fopen ($filename, "a+");
    fwrite($fh, $strIP."\r\n");
    fclose($fh);
  };

?>
Avatar billede thedeathart Nybegynder
16. juni 2004 - 17:38 #16
men never mind, det virker fint uden .txt, og jeg har også videre udviklet det.
Avatar billede riversen Nybegynder
16. juni 2004 - 18:37 #17
ok, fint nok
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