Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MySQL] Sprawdzanie ip
MaffSound
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.02.2014

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


Witam, mam pewien problem, z którym męcze się od 3 dni. Mianowicie mam taki kod:
  1. while($r = mysql_fetch_array($baza)){
  2. $id = $r['0'];
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $zapytanie = mysql_query("SELECT * FROM iplike WHERE id = '$id'");
  5. $ip_m = mysql_fetch_array($zapytanie);
  6. if($ip_m['ip'] != $ip){
  7. if(isset($_POST['idf'.$r['0']])){
  8. mysql_query("INSERT INTO iplike (ID, IP) values ('$id', '$ip')");
  9. mysql_query("UPDATE poczekalnia SET plusy = plusy+1 WHERE id = '$id'");
  10. echo '<script>java script:location.reload()</script>';
  11. }
  12. } else {
  13. $blad = 'Twój głos został już oddany';
  14. }

Działa dobrze, ale tylko na jedną osobe. Co prawda dodaje kolejne rekordy do bazy o tym id postu. Jeżeli ja mam jakieś tamn ip np. 192.168.1.1 a druga osoba ma inne np. 192.144.0.2, to wtedy dla mnie są nie widoczne przyciski (tak jak powinno być), a dla innej osoby przyciski są widoczne i mogą spamić ile chcą. (do kodu nie załączyłem przycisków ponieważ nie widzę sensu).
Dokładniej chodzi o tą linijke:
  1. if($ip_m['ip'] != $ip){

Sprawdza ip tylko pierwszego rekordu, a ma sprawdzać wszystkie z podanym id. Niestety nie mam pojęcia jak to zrobić, a na innym forum też nie potrafili mi pomóc.
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #2





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


!= oznacza nie równe!! czyli dla przykładu...

jeśli (IP_0.0.0.0 nie jest równe IP_0.0.0.1)
{
wykonaj akcję ...
}

dwa... $r['0']; skoro int to po co robić string? $r[0]; ten skrypt na ogół nie poprawny więc chyba nie ma co tu pomóc, lepiej na nowo napisać ;|

poza tym polecam poczytać o PDO lub mysqli ponieważ w php 5.5 mysql_* są wycofywane. A to pewnie już nie długo, no chyba że masz własny server lub na l.h.


--------------------
Go to the top of the page
+Quote Post
MaffSound
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.02.2014

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


1. != oznacza nie równe!!
Wiem o tym... inaczej tak kod by nie wyglądał.

2. $r['0']; nie dotyczy problemu!

3. O wycofanie mysql będe się martwił jak to zrobią.

4. Zamiast $ip_m['ip'] tam powinienem napisać $ip_m['2']
Go to the top of the page
+Quote Post
Wazniak96
post
Post #4





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


@ZaXaZ skoro korzysta z fetch_array to nie ma różnicy czy daje indexy numeryczne czy tekstowe. Tablica zawiera dwie wersje. A że nie trzyma się jakiś tam standardów to inna sprawa.

@MaffSound Dzieje się tak ponieważ sprawdzasz tylko dla jednego rekordu jakim jest twój. Przyjrzyj kod i sprawdź co pozmieniałem. Jak czegoś nie rozumiesz to pisz. smile.gif

  1. while($r = mysql_fetch_array($baza)){
  2. $id = $r['0'];
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $zapytanie = mysql_query("SELECT count(*) AS ile FROM iplike WHERE id = '$id' AND ip = '$ip'");
  5. $ip_m = mysql_fetch_assoc($zapytanie);
  6. if($ip_m['ile'] == 0){
  7. if(isset($_POST['idf'.$r['0']])){
  8. mysql_query("INSERT INTO iplike (ID, IP) values ('$id', '$ip')");
  9. mysql_query("UPDATE poczekalnia SET plusy = plusy+1 WHERE id = '$id'");
  10. echo '<script>java script:location.reload()</script>';
  11. }
  12. } else {
  13. $blad = 'Twój głos został już oddany';
  14. }
Go to the top of the page
+Quote Post
MaffSound
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.02.2014

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


Dziękuje ślicznie, w końcu jakiś myślący człowiek smile.gif
nie rozumiem trochę count(*) ale sobie gdzieś doczytam wink.gif
Dzięki ! smile.gif
Go to the top of the page
+Quote Post
Wazniak96
post
Post #6





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


count(*) - liczy wszystkie rekordy
AS ile - nadaj nazwę ile.

PS: Niektóre osoby po prostu piszą zanim dokładnie zrozumieją problem. Ale cóż.. każdy ma prawo się mylić i każdy kiedyś zaczynał wink.gif
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: 21.08.2025 - 00:41