Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Skrypty obsługi baz danych _ [PHP, MYSQL] Skrypt zapisujący IP

Napisany przez: MlodyJNTR 6.04.2013, 08:32:37

Witam napisałem z nudów skrypt PHP i Mysql ponieważ na facebooku dużo osób się podszywa pod inne osoby i pobiera czyjeś zdjęcia i wstawia na konta fikcyjne i nie chcę usuwać.

Skrypt ten zapisuje IP, z jakiej strony przyszedł i kiedy. Napisałem go przez godzinę.
Demo: http://mlodyjntr.ugu.pl/IP/

  1. <meta charset="windows-1250" />
  2.  
  3. <?php
  4. /* link do połączenia z bazą danych */
  5.  
  6. $haslo = http://www.php.net/htmlspecialchars(http://www.php.net/stripslashes(http://www.php.net/strip_tags(http://www.php.net/trim($_GET['haslo']))), ENT_QUOTES);
  7. $id = http://www.php.net/htmlspecialchars(http://www.php.net/stripslashes(http://www.php.net/strip_tags(http://www.php.net/trim($_GET['id']))), ENT_QUOTES);
  8. if ($id) {
  9. $zkad = $_SERVER['HTTP_REFERER'];
  10. $ip_tresc.= 'IP: '.$_SERVER['REMOTE_ADDR'].', skąd przychodzi: ';
  11. if ($zkad) { $ip_tresc.= $zkad; } else { $ip_tresc.='stąd'; }
  12. $ip_tresc.= ', data: '.http://www.php.net/date("d-m-Y, H:i:s").'\n';
  13. $id = http://www.php.net/mysql_fetch_array(http://www.php.net/mysql_query("SELECT * FROM `skrypt_ip` WHERE linkip = '$id'"));
  14. $ip_tresc = $ip_tresc.''.$id['ip_tresc'];
  15. http://www.php.net/mysql_query("UPDATE skrypt_ip SET ip_tresc='$ip_tresc' WHERE `id` = '".$id['id']."'");
  16. if($id['link']) { $link = $id['link']; } else { $link = 'http://google.com'; }
  17. http://www.php.net/echo "<script>window.location.href='".$link."';</script>";
  18. } else {
  19. if (!$haslo) {
  20. if ($_POST["wyslane"]) {
  21. $haslo = http://www.php.net/htmlspecialchars(http://www.php.net/stripslashes(http://www.php.net/strip_tags(http://www.php.net/trim($_POST['haslo']))), ENT_QUOTES);
  22. if($haslo == "") {
  23. function haslo($dlugosc_kodu) { $znaki = "ABCDEFGHIJKLMNOPRSTUWXYZabcdefghijklmnopqrstuvwxyz1234567890"; for($i=0;$i<$dlugosc_kodu;$i++) { $aktyw .= $znaki{http://www.php.net/rand(0,http://www.php.net/strlen($znaki))}; } return $aktyw; }
  24. $haslo = haslo(50);
  25. $linkip = haslo(20);
  26. http://www.php.net/mysql_query($wynik = "INSERT INTO `skrypt_ip` (id, haslo, linkip) VALUES('', '$haslo', '$linkip');");
  27. } else {
  28. $haslo = http://www.php.net/mysql_fetch_array(http://www.php.net/mysql_query("SELECT * FROM `skrypt_ip` WHERE haslo = '$haslo'"));
  29. $haslo = $haslo['haslo'];
  30. http://www.php.net/echo "<script>window.location.href='index.php?haslo=$haslo';</script>";
  31. }}
  32.  
  33. http://www.php.net/echo '<form id="post" method="post" name="post" onsubmit="return checkForm(this)" enctype="multipart/form-data" action="">
  34. <input type="hidden" name="wyslane" value="TRUE">
  35.  
  36. <center>
  37. <font size="5"><u>Jeżeli masz już konto to wpisz hasło, a jeżeli nie masz to wciśnij OK!</u></font><br>
  38. <b>Podaj hasło:</b> <input type="text" name="haslo"> <input type="submit" name="post" value="OK"><br>';
  39. if ($haslo) { http://www.php.net/echo 'Twoje hasło to <b>'.$haslo.'</b> zapisz je gdzieś, teraz możesz wpisać do pola podaj hasło!'; }
  40. http://www.php.net/echo '</center>
  41. </form>';
  42. } else {
  43. $haslo = http://www.php.net/mysql_fetch_array(http://www.php.net/mysql_query("SELECT * FROM `skrypt_ip` WHERE haslo = '$haslo'"));
  44. if ($haslo['id']) {
  45. if ($_POST["wyslane"]) {
  46. $link = http://www.php.net/htmlspecialchars(http://www.php.net/stripslashes(http://www.php.net/strip_tags(http://www.php.net/trim($_POST['link']))), ENT_QUOTES);
  47. $ip_tresc = http://www.php.net/htmlspecialchars(http://www.php.net/stripslashes(http://www.php.net/strip_tags(http://www.php.net/trim($_POST['ip_tresc']))), ENT_QUOTES);
  48. http://www.php.net/mysql_query("UPDATE skrypt_ip SET link='$link', ip_tresc='$ip_tresc' WHERE `ip_tresc` = '".$haslo['ip_tresc']."'");
  49. http://www.php.net/echo "<script>window.location.href='index.php?haslo=".$haslo['haslo']."';</script>";
  50. }
  51.  
  52. http://www.php.net/echo '
  53. <form id="post" method="post" name="post" onsubmit="return checkForm(this)" enctype="multipart/form-data" action="">
  54. <input type="hidden" name="wyslane" value="TRUE">
  55. <center><textarea name="ip_tresc" style="width:728px; height:400px;;">'.($haslo['ip_tresc']).'</textarea><br>
  56. Podaj ten link komuś aby sprawdzić IP: <b>http://'.$_SERVER['SERVER_NAME'].''.$_SERVER['SCRIPT_NAME'].'?id='.$haslo['linkip'].'</b>.<br>
  57. Ten link jest dużo rozpoznawalny aby go jakoś ukryć skozysztaj z usługi np. <a href="http://tnij.org">Tnij.org</a>, <a href="http://skroc.pl/">Skroc.pl</a><br>
  58. <b>Link do przekerowania:</b> <input type="text" style="width: 300px" value="'.$haslo['link'].'" name="link"> <input type="submit" name="post" value="OK"><br>';
  59. http://www.php.net/echo '</center>
  60. </form>';
  61. } else { http://www.php.net/echo "<script>window.location.href='index.php';</script>"; }
  62. }}
  63. ?>


  1. CREATE TABLE IF NOT EXISTS `skrypt_ip` (
  2. `id` int(100) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `haslo` varchar(3000) COLLATE latin1_general_cs NOT NULL,
  4. `linkip` varchar(100) COLLATE latin1_general_cs NOT NULL,
  5. `ip_tresc` varchar(3000) COLLATE latin1_general_cs NOT NULL,
  6. `link` varchar(3000) COLLATE latin1_general_cs NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=0 ;


Nowa strona z Demo: http://projekty-mlodyjntr.ugu.pl/IP/

Napisany przez: markonix 6.04.2013, 11:18:11

Co ma skrypt do działu "Skrypty obsługi baz danych"?

Kod mega brzydki, podręcznikowe spaghetti.

Nie rozumiem po co takie długie hasła, tak samo identyfikatory.
Są lepsze sposoby do tworzenia unikalnych stringów, tutaj nawet nie ma unikalnych - są losowe więc trzeba liczyć, że się nie powtórzą.

  1. enctype="multipart/form-data"
po co to?
Czemu przekierowanie nie następuje za pomocą PHP (tzn. przy tej sieczce nie zadziała, ale jest znacznie pewniejszym rozwiązaniem)?
CHARSET=latin1 - lepiej utf.
<meta charset="windows-1250" /> - fuj.
Nie mam pewności ale użyte funkcji na stringu nie zabezpieczają przed SQL Injection - przynajmniej żadna z nich do tego nie służy.

Ogólnie wygenerowałem hasło, utworzyłem link i .. nie wiem gdzie sprawdzić jakiś wynik.
Userbility kuleje.

Napisany przez: wlisik 8.08.2013, 10:59:25

Cytat(markonix @ 6.04.2013, 12:18:11 ) *
Co ma skrypt do działu "Skrypty obsługi baz danych"?

Kod mega brzydki, podręcznikowe spaghetti.

Nie rozumiem po co takie długie hasła, tak samo identyfikatory.
Są lepsze sposoby do tworzenia unikalnych stringów, tutaj nawet nie ma unikalnych - są losowe więc trzeba liczyć, że się nie powtórzą.
  1. enctype="multipart/form-data"
po co to?
Czemu przekierowanie nie następuje za pomocą PHP (tzn. przy tej sieczce nie zadziała, ale jest znacznie pewniejszym rozwiązaniem)?
CHARSET=latin1 - lepiej utf.
<meta charset="windows-1250" /> - fuj.
Nie mam pewności ale użyte funkcji na stringu nie zabezpieczają przed SQL Injection - przynajmniej żadna z nich do tego nie służy.

Ogólnie wygenerowałem hasło, utworzyłem link i .. nie wiem gdzie sprawdzić jakiś wynik.
Userbility kuleje.

Za taki najazd na usera powinien być warn albo nawet i ban. Ktoś się namęczył po to aby druga osoba go krytykowała. Nieładnie.
Co do FB to jest to prawda - na FB zdarza się to coraz częściej.
Skrypt się jaknajbardziej przyda. Dzięki wielkie.

Napisany przez: ziqzaq 8.08.2013, 11:18:03

Cytat
Za taki najazd na usera powinien być warn albo nawet i ban.

Padłem. Forum powinno wprowadzić "megaban". To jest żart? smile.gif
Przecież markonix napisał prawdę. Niestety jakość tego kodu jest bardzo niska a jesteśmy na forum php, więc co jest dziwnego lub nie fair w tej krytyce?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)