Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][skrypt] Prosze o sprawdzenie logiczności i błędów, oraz o propozycje
Ile wiekszych skryptów już napisałeś?
Napisałem skryptów:
mniej niż 3 [ 1 ] ** [10.00%]
mniej niż 5 [ 1 ] ** [10.00%]
mniej niż 7 [ 0 ] ** [0.00%]
mniej niż 10 [ 0 ] ** [0.00%]
mniej niż 15 [ 1 ] ** [10.00%]
więcej niż 20 [ 7 ] ** [70.00%]
Suma głosów: 11
Goście nie mogą głosować 
thomson89
post 8.01.2009, 20:08:27
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Poniżej prosty skrypt, pokazujący kiedy ostatnio byleś na stronie. Proszę o sprawdzenie:
- poprawności ze świata relnego
- poprawności logicznej
- poprawności językowej (php)
Oraz o ewentualne propozycje rozbudowy.
  1. <?php
  2. function ostatnio()
  3. {
  4.   if(!isset($_COOKIE['kiedy'])){
  5.      $teraz = date("H:i");
  6.      setcookie("kiedy", $teraz);
  7.      return $_COOKIE['kiedy'];
  8.   }
  9.   else {
  10.      //ustawianie nowego czasu
  11.      $teraz = date("H:i");
  12.      $ostatnio = $_COOKIE['kiedy'];
  13.      //zmiana godziny na sekundy
  14.      $minelo = explode(':', $ostatnio);
  15.      $godz = $minelo[0];
  16.      $min = $minelo[1];
  17.      $godz*60*60;
  18.      $min*60;
  19.      $sek1 = $godz+$min;
  20.      //to samo z czasem teraz
  21.      $teraz_cz = explode(':', $teraz);
  22.      $godz = $teraz_cz[0];
  23.      $min = $teraz_cz[1];
  24.      $godz*60*60;
  25.      $min*60;
  26.      $sek2 = $godz+$min;
  27.      //obliczanie ile czasu temu byles
  28.      $sek_temu = $sek2-$sek1;
  29.      if($sek_temu>60){
  30.         $sek_temu/60;
  31.         $min_temu = explode(',', $sek_temu);
  32.         $tresc = "Ostatnio tu byleś".$min_temu[0]." minut temu i ".$min_temu[1]." sekund.";
  33.        
  34.      }
  35.      if($min_temu[0]>60){
  36.         $min_temu[0]/60;
  37.         $godz_temu = explode(',', $min_temu[0]);
  38.         $tresc = "Ostatnio tu byleś".$godz_temu[0]." godzin temu, ".$godz_temu[1]."minut i".$min_temu[0]." sekund.";
  39.      }
  40.      setcookie("kiedy", $teraz);
  41.      return $tresc;
  42.      
  43.   }
  44. }
  45. ?>


I wywołujemy, dołączając plik z funckjami i wywołując:
  1. <?php
  2. $cos = ostatnio();
  3. echo $cos;
  4. ?>


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
Maxik
post 8.01.2009, 20:27:01
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Dokładnie się nie przygladałem, ale zamiast date użyłbym unixowego znacznika czasu, prościej obliczać.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
Crozin
post 8.01.2009, 20:35:03
Post #3





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

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


Skrypt ten polegnie, gdy ostatnio byłbym wczoraj (inny dzień). Jak już wspomniano wcześniej - lepiej będzie Ci operować na dacie w formacie UNIXowym (time" title="Zobacz w manualu PHP" target="_manual).

I co to za zadanie: Ostatnio byłeś tu 6 minut temu i 12 sekund.
Chyba: Ostatnio byłeś tutaj 6 minut i 12 sekund temu (chociaż i tak lepiej zapisać 6 minut temu - po co sekundowa dokładność?)
Go to the top of the page
+Quote Post
Rafal Filipek
post 8.01.2009, 20:42:30
Post #4





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


1)
Kod
<?php
function spr(){
    setcookie('test',1);
    return $_COOKIE['test'];
}
var_dump(spr());
?>

gwarantuje ci ze jak odpalisz ten skrypt pierwszy raz to bedziesz mial blad w return $_COOKIE['test']; bo bez przeladowania nie bedzie takiego ciastka

2) twoja funkcja w zaleznosci od warunku zwraca albo $_COOKIE albo caly komunikat, dziwne.
3) w php nie ma funkcji leży_jerzy_na_wieży() wieć staraj się też pisać swoje skrypty stosując angielskie nazwy zmiennych, funkcji itp.
4) nierozumiem czemu sobie utrudniasz tak z tymi datami i czasami. czemu nie przechowujesz timestamp cookies ? zobacz, to co twój skrypt robi od 9 do 46 linijki
Kod
<?php
$now = time();
$last = time() - rand(5000, 10000);
$time = getdate($now-$last);
if($time['hours']-1>0){
    echo 'Ostatnio byłeś tutaj '.($time['hours']-1).' godzin, '.$time['minutes'].' minut, '.$time['seconds'].' sekund temu';
}else{
    echo 'Ostatnio byłeś tutaj '.$time['minuts'].' minut, '.$time['seconds'].' sekund temu';
}
?>

tylko trzeba -1 od godzin bo liczy od 0.

Ten post edytował Rafal Filipek 8.01.2009, 20:47:58
Go to the top of the page
+Quote Post
thomson89
post 8.01.2009, 21:04:41
Post #5





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Dziekuję.


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
SzamanGN
post 8.01.2009, 21:47:13
Post #6





Grupa: Zarejestrowani
Postów: 94
Pomógł: 14
Dołączył: 11.10.2007

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


Nie jestem ekspertem od języka polskiego, ale ja bym napisał w linii 39 pierwszego kodu:
  1. <?php
  2. $tresc = 'Ostatnie odwiedziny były ';
  3. if ($godz_temu[0]>4) $tresc.=$godz_temu[0].' godzin, ';
  4. if ($godz_temu[0]>1 && $godz_temu[0]<5) $tresc.=$godz_temu[0].' godziny, ';
  5. if ($godz_temu[0]==1) $tresc.=$godz_temu[0].' godzinę, ';
  6. if ($godz_temu[1]>4) $tresc.=$godz_temu[1].' minut, ';
  7. if ($godz_temu[1]>1 && $godz_temu[1]<5) $tresc.=$godz_temu[1].' minuty, ';
  8. if ($godz_temu[1]==1) $tresc.=$godz_temu[1].' minutę, ';
  9. if ($min_temu[0]>4) $tresc.=$min_temu[0].' sekund ';
  10. if ($min_temu[0]>1 && $min_temu[0]<5) $tresc.=$godz_temu[0].' sekundy ';
  11. if ($min_temu[0]==1) $tresc.=$min_temu[0].' sekundę ';
  12. $tresc.='temu.';
  13. ?>


A tak dalej, to:
Jak rozwiążesz problem wspomniany wyżej (jeżeli to będzie dłużej niż 1 doba)?
Dlaczego nie używasz time (łatwiej)?
Czy to jest aż tak ważne aby pokazać dokładną różnicę czasu?
Czy nie lepiej napisać: Ostatnio odwiedziłeś tą stronę DD-MM-YYYY o HH:MM (formatu daty i czasu chyba nie trzeba tłumaczyć)?

Ten post edytował SzamanGN 8.01.2009, 21:51:06


--------------------
SzamanGN
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 Wersja Lo-Fi Aktualny czas: 13.07.2025 - 01:29