Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapis IP do MySQL
Playboy
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


Witam, mam problem, gdyż nie potrafię sobie poradzić z zapisem adresu IP do bazy MySQL.

Więc tak, projekty robię na KRASNALu czyli cała baza itp. opiera sie na localhoscie ale to nie ma znaczenia.

Mój problem jest taki że (dodam ręcznie dajmy na to adres IP w formie xxx.xxx.xxx.xxx) to za nic w świecie nie mogę porównać tego adresu.Chciałem na początku sprawdzić czy adres osoby która jest aktualnie zarejestrowana znajduje się w bazie, jeśli tak to uniemożliwić jej głosowanie a jeśli nie to pozwolić jej głosować, po czym zapisać IP w bazie.

Próbowałem to robić na wszystkie sposoby, nawet i ręcznie wpisywałem adres ip do bazy i do tego skryptu który sprawdza i nici...
Korzystając z $_SERVER['REMOTE_ADDR'] też nie uzyskuje poprawnego działania.

  1. $ip = $_SERVER['REMOTE_ADDR'];
  2. if(mysql_query("SELECT ip FROM `adres` WHERE `ip`=".$ip.";"))
  3. {echo 'IP jest w bazie,nie możesz oddać głosu ';}
  4. else
  5. {echo 'IP nie ma w bazie możesz oddać głos';}


Jeśli to w czymś pomoże to pole ip jest typu varchar(15)

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
gothye
post
Post #2





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

Ostrzeżenie: (0%)
-----


spróbuj tak :

  1. mysql_query("SELECT ip FROM `adres` WHERE `ip`='".$ip."'"


swoją droga pod względem wydajności ,polecam to rozwiązanie : strona


--------------------
Nie udzielam pomocy poprzez PW
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Co z tego opisu jest niejasne? http://pl.php.net/mysql_query#refsect1-fun...ry-returnvalues
Go to the top of the page
+Quote Post
Playboy
post
Post #4





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


Wszystko...

Zmieniłem zapytanie na
  1. $result = mysql_query("SELECT * FROM adres WHERE ip=(".$_SERVER['REMOTE_ADDR']).")";
  2. if (!$result) { echo 'nie';} else { echo 'jest';}


Z tym że nadal występuje problem z poprawnym odczytem z bazy... możecie nakierować w czym jest błąd?
Go to the top of the page
+Quote Post
zdemotywowany
post
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

Ostrzeżenie: (0%)
-----


  1. $result = mysql_query("SELECT * FROM adres WHERE ip=(".$_SERVER['REMOTE_ADDR']).")";
  2. if ( mysql_num_rows == 0 )
  3. echo 'ok';
  4. else
  5. echo 'zle';


Ten post edytował zdemotywowany 19.01.2012, 20:15:13
Go to the top of the page
+Quote Post
Playboy
post
Post #6





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


Dalej to samo :/ może opiszę dokładniej.

Więc:
Cały serwer stoi u mnie na komputerze, program KRASNAL. Wchodzę z domowego kompa wpisując loclhost lub 127.0.0.1 i teoretycznie jak i w praktyce $_SERVER['REMOTE_ADDR'] zwraca mi wartość 127.0.0.1 ale ten kod który jest podany ciągle zwraca mi wartość dla true czyli że ip znajduje się w bazie danych,bez względu na to czy ono tam jest czy go nie ma...
Go to the top of the page
+Quote Post
zdemotywowany
post
Post #7





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

Ostrzeżenie: (0%)
-----


  1. $result = mysql_query("SELECT * FROM adres WHERE ip=(".$_SERVER['REMOTE_ADDR']."))";
  2. if ( mysql_num_rows == 0 )
  3. echo 'ok';
  4. else
  5. echo 'zle';


Może teraz, wcześniej był mały błąd i zapewne u wszystkich on był wink.gif

EDIT: A jak robisz przez phpmyadmin to też Ci zwraca, że jest gdy go nie ma?

Ten post edytował zdemotywowany 19.01.2012, 20:45:41
Go to the top of the page
+Quote Post
Playboy
post
Post #8





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


dalej nie działa, może błędny typ danych jest? ale wątpię wcześniej był podany sposób konwersji adresu ip do liczb i odwrotnie może by z tego skorzystać... skoro tak normalnie się nie da...
Go to the top of the page
+Quote Post
zdemotywowany
post
Post #9





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

Ostrzeżenie: (0%)
-----


Da się, nie panikuj. Wyświetl to zapytanie w phpmyadmin i daj tutaj wynik.
Go to the top of the page
+Quote Post
Playboy
post
Post #10





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 18.01.2011

Ostrzeżenie: (0%)
-----


nie wyświetle tego zapytania gdyż jest tam $_SERVER['REMOTE_ADDR'] - jeśli podmienię na ip "ręczne" - SELECT * FROM adres WHERE ip='127.0.0.1' wtedy zadziała może coś w tym $_SERVER['REMOTE_ADDR'] jest nie tak...
Go to the top of the page
+Quote Post
zdemotywowany
post
Post #11





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

Ostrzeżenie: (0%)
-----


  1. $ip = $_SERVER['REMOTE_ADDR'];
  2. $result = mysql_query("SELECT * FROM adres WHERE ip='$ip'";
  3. if ( mysql_num_rows == 0 )
  4. echo 'ok';
  5. else
  6. echo 'zle';
Go to the top of the page
+Quote Post
mortus
post
Post #12





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Odstąpię nieco od problemu. Rozwiązanie, które chcesz zaimplementować do dobrych nie nie należy. Adres IP nie jest wiarygodną informacją (jeśli chodzi o identyfikacje użytkownika) przede wszystkim dlatego, że bardzo wiele osób ma wspólny adres IP. Do identyfikacji użytkownika, który nie jest zarejestrowany w Twoim serwisie musisz użyć większej ilości danych, jak np. informacje o przeglądarce, ciasteczka, itp. i do tego IP.
W powyższej wypowiedzi celowo użyłem podkreślenia. Jeśli bowiem sprawa dotyczy użytkownika zarejestrowanego (tak można wywnioskować z Twojego pierwszego opisu), to przecież nie ma problemu, bo jego unikalnym identyfikatorem jest odpowiedni numer w bazie danych. Wtedy wystarczy dodatkowa tabela, np.:
GŁOSY_UŻYTKOWNIKÓW:
DOTYCZY - kolumna zawierające identyfikator ankiety, której dotyczy głos
ID_UŻYTKOWNIKA - identyfikator użytkownika, który oddał głos (tej kolumny używamy do sprawdzenia, czy użytkownik juz głosował)
OCENA - kolumna opcjonalna, w której określamy wartość głosu użytkownika

W przypadku, gdy mówimy o użytkowniku niezarejestrowanym, niestety trzeba się "nagimnastykować". Odpowiednie tematy były na tym forum omawiane i wystarczy dobrze poszukać.

PS:
Krasnal chyba nie jest już rozwijany i z tego co się orientuję nie ma najnowszych wersji czy to PHP, czy MySQL, dlatego proponuję rozważyć możliwość zainstalowania czegoś bardziej "współczesnego". Aplikacji jest sporo i wystarczy poszukać.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 10:17