Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zapisem adresu IP do bazy danych
Forum PHP.pl > Forum > PHP
easyshare
Kod
if (isset($_POST['submit'])) { // Obsługa formularza.
    if (eregi ("^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$", stripslashes(trim($_POST['ip_address'])))) {
        $ip = $_POST['ip_address'];
    } else {
        $ip = FALSE;
        echo "WprowadĽ poprawny adres IP";
    }
}

echo "$ip";
if ($ip) {
    $query = "UPDATE users SET ipaccess=(172.16) WHERE user_id=$_SESSION[user_id]";
    $result = @mysql_query ($query);
    if (mysql_affected_rows() == 1 ) { // Jesli nie wyst±piły żadne problemy
        echo "Zmieniono ustawienia dostępu IP";
        header ("Location:  http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
    } else {
        echo "Ze względu na wystapienie błedu systemowego zmiana nie była możliwa";
    }
}


Adres IP w postaci xxx.xxx.xxx.xxx nie wchodzi, natomiast w postaci xxx.xxx tak :/ Proszę o pomoc
_olo_1984
ale nie wchodzi do bazy danych czy nie przechodzi tego warunku ?
Pokazż strukture i typy pol w tabel, zmien zapytanie na:
  1. <?php
  2. $query = "UPDATE users SET ipaccess='".$ip."' WHERE user_id=$_SESSION[user_id]";
  3. ?>


może to coś pomoże
easyshare
nie wchodzi do bazy danych, żeby było ciekawej, jak wpisze do formularza 192.168 wchodzi, jak wpisze 192.168.1 już nie wchodzi, wynika z tego że problem jest z ilością " . " w zmiennej. Zapisane zapytanie tak jak podałeś również nie rozwiązuje problemu. Struktura tabeli

ipaccess varchar(16) latin1_swedish_ci
delfinium
No nie ma bata, żeby tamto zapytanie od _olo_1984 nie przeszło. Na pewno dodajesz cudzysłów przed i po zmiennej $ip? Bo coś mi się wydaje, że nie. Bo jeśli przechodzi Ci 192.168 a 192.168.1 już nie to znaczy, że nie dodajesz cudzysłowów a z jedną kropką do SQL traktuje to jako float i przepuszcza a z dwoma kropkami to już nie ma takiego typu i dlatego się wykrzacza i po to mają być tam cudzysłowy.
elmozaur
To co napisales niema prawa sie zapisac w bazie

zrob tak:

  1. <?php
  2. $sesja=$_SESSION['user_id'];
  3. $query = "UPDATE users SET ipaccess='$ip' WHERE user_id='$sesja'";
  4. ?>


pozdro
easyshare
Kolejne schody :/ dodałem jeszcze jedną funkcję do resetowania IP ( wpisywania * do bazy ) i teraz cała strona się wykrzacz :/
Kod wygląda teraz tak
  1. <?php
  2. if (isset($_POST['submit'])) { // Obsługa formularza.
  3.    if (eregi ("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$", stripslashes(trim($_POST['ip_address'])))) {
  4.        $ip = $_POST['ip_address'];
  5.    } else {
  6.        $ip = FALSE;
  7.        echo "WprowadĽ poprawny adres IP";
  8.    }
  9. }
  10.  
  11.  
  12. if (isset($_POST['submit1'])) {
  13.    echo "Zresetowano";
  14.    $reset = "*";
  15.    $query = "UPDATE users SET ipaccess='".$reset."' WHERE user_id=$_SESSION[user_id]";
  16.    $result = @mysql_query($query);
  17.    if (mysql_affected_rows() = 1) {
  18.        header ("Locatio: htt://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
  19.    } else {
  20.        echo "Błąd. Odblokowanie dostepu niemożliwe.";    
  21.    }
  22. }
  23.  
  24. if ($ip) {
  25.    $query = "UPDATE users SET ipaccess='".$ip."' WHERE user_id=$_SESSION[user_id]";
  26.    $result = @mysql_query ($query);
  27.    if (mysql_affected_rows() == 1 ) { // Jesli nie wystąpiły żadne problemy
  28.        header ("Locatio:  htt://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
  29.    } else {
  30.        echo "Ze względu na wystapienie błedu systemowego zmiana nie była możliwa";
  31.    }
  32. }
  33. ?>

Szukam błędu ale go nie widze :/
dadexix
nie wiem czy można tak sobie dac * samo... może spróbuj zamiast gwaizdki dawac nie możliwy ip np. 0.0.0.0, 127.0.0.1


BTW.
czemu @ przed mysql_query? daje błędy? powiedz jakie!
czemu locatio a nie location? i czemy htt a nie http?
header ("Locatio: htt://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "panel.php");
easyshare
W skrypcie jest wpisane prawidłowo Location i http .Przy dodawaniu na forum obcieło :/

Do tabeli musi być zapisana * , wymaga tego specyfikacja. Błędu nie otrzymuje przy wykonywaniu skryptu, poprostu strona się wykrzacza , dziwne, sprawdziłem wszystkie tagi html powinno być OK a nie jest

Błąd
  1. <?php
  2. if (mysql_affected_rows() = 1) {
  3. ?>


powinno być
  1. <?php
  2. if (mysql_affected_rows() == 1) {
  3. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.