Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Modyfikacja skryptu sonda - dodanie informacji o głosowaniu
-asziatko-
post
Post #1





Goście







Witam,

Mam taki prosty skrypt sondy na stronę WWW

  1. <?
  2. $pyt = "Twoje Pytanie?";
  3. $odp[] = "1";
  4. $odp[] = "2";
  5. $odp[] = "3";
  6. $odp[] = "4";
  7. $glosowan = 1;
  8. $pl = "sonda.txt";
  9. $ip = $_SERVER["REMOTE_ADDR"];
  10. $o = $_GET["o"];
  11. $ile = count($odp);
  12. $f = fopen($pl, "r");
  13. $plik = fread($f, filesize($pl));
  14. fclose($f);
  15. preg_match_all("/$ip/i", $plik, $glos);
  16. if (($o>-1)and($o<$ile)and(count($glos[0])<$glosowan)) {
  17. $f = fopen($pl,"a");
  18. fputs($f, "<$o>$ip"); fclose($f);
  19. $plik .= "<$o>";
  20. }
  21. echo $pyt;
  22. for ($i=0;$i<$ile;$i++) {
  23. preg_match_all("/<$i>/i", $plik, $li);
  24. $wynik = "[". count($li[0]) ."]";
  25. echo "<br />$wynik <a href=\"strona.php?o=$i\">$odp[$i]</a>";
  26. }
  27. ?>


Skrypt zabezpieczony przed wielokrotnym głosowaniem. Zapis IP jest do pliku TXT. Brakuje mi w tym skrypcie takiej informacji jak:
  • Oddałeś Już Głos po kliknięciu po raz kolejny przez Użytkownika z tego samego adresu IP
  • Jak się odda głoś żeby pojawiała się informacja np. Dziękuje Twój Głoś Został Dodany.
Jak dodać i w którym miejscu w/w skryptu funkcję by dawała efekt informacji Oddałeś Już Głos i Dziękuje Twój Głoś Został Dodany?.

Ten post edytował batman 5.10.2008, 11:28:13
Powód edycji: poprawiłem bbcode
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Lion_87
post
Post #2





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


no ale skoro masz skrypt i chyba sprawdzasz czy takie ip oddalo juz glos to w czym problem?

jezeli oddal juz swoj glos wczesniej to po spr wstawiasz echo Oddałeś Już Głos
a jezeli nie oddał to po zapisaniu glosu wstawiasz echo z Dziękuje Twój Głoś Został Dodany

Ten post edytował Lion_87 5.10.2008, 09:49:04
Go to the top of the page
+Quote Post
-asziatko-
post
Post #3





Goście







Właśnie oto chodzi tylko nie wiem w którym to miejscu dać żeby wszystko ze sobą grało prawidłowo.
Go to the top of the page
+Quote Post
melkorm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


no hmm a nie możesz dać np. zmiennej $error w której byś np. przechowywał treść błędu w zależności od sytuacji? i dać
  1. <?php
  2. if(error) echo $error;
  3. ?>

czy tam isset jak wolisz ;]

wyglądało by to np tak:
  1. <?php
  2. if (($o>-1)and($o<$ile)and(count($glos[0])<$glosowan)) {
  3. $f = fopen($pl,"a");
  4. fputs($f, "<$o>$ip"); fclose($f);
  5. $plik .= "<$o>";
  6. }
  7. else $error = 'Już oddałeś głos w tej sondzie!';
  8. ?>

;]

Ten post edytował melkorm 5.10.2008, 11:27:11


--------------------
Go to the top of the page
+Quote Post
-asziatko-
post
Post #5





Goście







Zrobiłem tak:

  1. <?
  2. $pyt = "Twoje Pytanie?";
  3. $odp[] = "1";
  4. $odp[] = "2";
  5. $odp[] = "3";
  6. $odp[] = "4";
  7. $glosowan = 1;
  8. $pl = "sonda.txt";
  9. $ip = $_SERVER["REMOTE_ADDR"];
  10. $o = $_GET["o"];
  11. $ile = count($odp);
  12. $f = fopen($pl, "r");
  13. $plik = fread($f, filesize($pl));
  14. fclose($f);
  15. preg_match_all("/$ip/i", $plik, $glos);
  16. if (($o>-1)and($o<$ile)and(count($glos[0])<$glosowan)) {
  17. $f = fopen($pl,"a");
  18. fputs($f, "<$o>$ip"); fclose($f);
  19. $plik .= "<$o>";
  20. }
  21. else $error = 'Już oddałeś głos w tej sondzie!';
  22. echo $pyt;
  23. for ($i=0;$i<$ile;$i++) {
  24. preg_match_all("/<$i>/i", $plik, $li);
  25. $wynik = "[". count($li[0]) ."]";
  26. echo "<br />$wynik <a href=\"strona.php?o=$i\">$odp[$i]</a>";
  27. }
  28. ?>


Bez rezultatów, sonda się wyświetla ale nie ma Już oddałeś głos w tej sondzie!.

Ten post edytował batman 5.10.2008, 19:17:38
Powód edycji: poprawiłem bbcode ~batman
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


tak. bo go nie wyświetlasz smile.gif daj na dole
  1. <?php
  2. if(isset($error)) echo $error;
  3. ?>
i wyświetli ci się błąd ;]

Ten post edytował melkorm 5.10.2008, 12:32:35


--------------------
Go to the top of the page
+Quote Post
-asziatko-
post
Post #7





Goście







Faktycznie, dałem

  1. <?php
  2. if(isset($error)) echo $error;
  3. ?>


i wyświetla mi się napis Już oddałeś głos w tej sondzie!. Jedyny ból jest taki że on się wyświetla cały czas. Jak wejde na podstronę z sondą to już jest on widoczny. Jak klikne w daną odpowiedz, owszem głos jest nie ważny ale napis też jest.

Ten post edytował batman 5.10.2008, 19:18:05
Powód edycji: poprawiłem bbcode
Go to the top of the page
+Quote Post
batman
post
Post #8





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@asziatko popraw bbcode.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
-asziatko-
post
Post #9





Goście







Przepraszam za bbcode ale nie wiem gdzie on się znajduje.


wysłałem Ci PW z informacją co i jak
~batman
Go to the top of the page
+Quote Post
Lion_87
post
Post #10





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Cytat
Przepraszam za bbcode ale nie wiem gdzie on się znajduje.

klikasz na przycisk PHP i wszawiasz kod pomiedzy znaczniki.


moze tak?
  1. <?php
  2. if(isset($error)) (echo $error;)
  3. ?>


Ten post edytował Lion_87 5.10.2008, 13:08:13
Go to the top of the page
+Quote Post
-asziatko-
post
Post #11





Goście







Lion_87 dałem tak

Kod
<?php
      if(isset($error)) (echo $error;)
      ?>


i pojawia się błąd

Parse error: syntax error, unexpected T_ECHO in /home/serwer/public_html/sonda.php on line 31 a 31 linią jest

Kod
if(isset($error)) (echo $error;)


batman dzięki instrukcje na PW.

Ten post edytował asziatko 5.10.2008, 14:07:06
Go to the top of the page
+Quote Post
Lion_87
post
Post #12





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


a skopiuj i wklej to :

  1. <?php
  2. if (isset($error)) {
  3.    echo $error;
  4.   }
  5. ?>
Go to the top of the page
+Quote Post
-asziatko-
post
Post #13





Goście







Po zmianie na

Kod
<?php
if (isset($error)) {
    echo $error;
   }
?>


w ogóle nie zlicza głosów sonda.

Ten post edytował asziatko 5.10.2008, 14:29:27
Go to the top of the page
+Quote Post
melkorm
post
Post #14





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


ok. no to jest oczywiste że wyświetla się zawsze bo akcja jest na tej samej stronei co sonda winksmiley.jpg
wrzuć w HTML w forma:
  1. <input type="hidden" name="submit" value="1" />


i kod php taki :
  1. <?
  2. $pyt = "Twoje Pytanie?";
  3. $odp[] = "1";
  4. $odp[] = "2";
  5. $odp[] = "3";
  6. $odp[] = "4";
  7. $glosowan = 1;
  8. $pl = "sonda.txt";
  9. $ip = $_SERVER["REMOTE_ADDR"];
  10. $o = $_GET["o"];
  11. $ile = count($odp);
  12. $f = fopen($pl, "r");
  13. $plik = fread($f, filesize($pl));
  14. fclose($f);
  15. preg_match_all("/$ip/i", $plik, $glos);
  16. if (($o>-1)and($o<$ile)and(count($glos[0])<$glosowan)) {
  17. $f = fopen($pl,"a");
  18. fputs($f, "<$o>$ip"); fclose($f);
  19. $plik .= "<$o>";
  20. }
  21. else if($_GET['submit']) {
  22.    $error = 'Już oddałeś głos w tej sondzie!';
  23. }
  24. echo $pyt;
  25. for ($i=0;$i<$ile;$i++) {
  26. preg_match_all("/<$i>/i", $plik, $li);
  27. $wynik = "[". count($li[0]) ."]";
  28. echo "<br />$wynik <a href=\"strona.php?o=$i\">$odp[$i]</a>";
  29. }
  30. if (isset($error)) {
  31.     echo $error;
  32.    }
  33. ?>


--------------------
Go to the top of the page
+Quote Post
-asziatko-
post
Post #15





Goście







melkorm zrobiłem tak jak napisałeś wrzuciłem Twoją modyfikację + w HTML
  1. <input type="hidden" name="submit" value="1" />
. Sonda się wyświetla, ale nic nie pisze że Już Oddałeś Głos w Sondzie!. Plik sonda.php daje przez include i wygląda to tak
Kod
<input type="hidden" name="submit" value="1" /><?php include('sonda.php');?>
.
Go to the top of the page
+Quote Post
melkorm
post
Post #16





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


hm powinno działać ... a czy napewno ten input znajduje się między tagami formularza? może pokaż cały kod html snitch.gif?


--------------------
Go to the top of the page
+Quote Post
-asziatko-
post
Post #17





Goście







melkorm, tak to wygląda u mnie

  1. <div id="sonda">
  2. <div class="r1 tlo"></div><div class="r2 tlo"></div>
  3. <div class="r3 tlo"></div><div class="r4 tlo"></div>
  4. <div class="srodek tlo"><input type="hidden" name="submit" value="1" /><?php include('sonda.php');?></div>
  5. <div class="r4 tlo"></div><div class="r3 tlo"></div>
  6. <div class="r2 tlo"></div><div class="r1 tlo"></div>
  7. </div>
Go to the top of the page
+Quote Post
melkorm
post
Post #18





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


no dobrze a gdzie jest :
  1. <form action="" method="get" >


?


--------------------
Go to the top of the page
+Quote Post
-asziatko-
post
Post #19





Goście







Dałem tak

  1. <div id="sonda">
  2. <div class="r1 tlo"></div><div class="r2 tlo"></div>
  3. <div class="r3 tlo"></div><div class="r4 tlo"></div>
  4. <div class="srodek tlo"><form action="" method="get" ><input type="hidden" name="submit" value="1" /><?php include('sonda.php');?></form></div>
  5. <div class="r4 tlo"></div><div class="r3 tlo"></div>
  6. <div class="r2 tlo"></div><div class="r1 tlo"></div>
  7. </div>


i nie działa worriedsmiley.gif .
Go to the top of the page
+Quote Post
melkorm
post
Post #20





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Hm. Dobra zacznijmy od początku :
czy głos przychodzi z innej strony? jeżeli tak to tam wrzuć ten przycisk "hidden" :]


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 06:35