Mnożenie czasu oraz zapis IP na serwerze


(Matimichalak) #1

Mam problem od kilku dni z zapisaniem numeru ip w dokumencie tekstowym. Problem w tym, że na lokalnym serwerze działa. Zmieniałem już chmod() na 0777 lecz nic to nie dało. Tutaj kod:

<?php

umask(0);
@ $file=fopen("ip.log","w");
	$data=date("H:i:s, d-m-Y"); 
	if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
   {
   $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
   }
else 
   {
   $ip=$_SERVER["REMOTE_ADDR"]; 
   } 
$wszystko="$data = $ip";
fwrite ($file,$wszystko);
fclose ($file);
echo "$wszystko";
chmod ("ip.log",0777);
?>

2 sprawa to sprawa czysto logiczna. Mój formularz odejmuje od siebie 2 czasy; czas drogi i czas planowanego dojścia tak, aby można było łatwo sprawdzić o której trzeba wyjechać . Dodałem checkboxa do formularza i skrypt sprawdza(poprawnie) czy "checkbox=checked". W instrukcji warunkowej ma zostać wykonane pomnożenie różnicy czasowej razy 0.7. Niestety nie działa :/. Tutaj kod:

<?php
function OdejCzas($hh1, $mm1, $ss1,$hh2, $mm2, $ss2) {
$hh = $hh2 - $hh1;
$mm = $mm2 - $mm1;
$ss = $ss2 - $ss1;
$wynik = date('H:i:s',mktime($hh,$mm,$ss));

if(isset($_GET['checkbox']))
$wynik = $wynik*0.7;
return $wynik;

}

?>

Proszę o pomoc :slight_smile:


(kalitt) #2

Co do 2 jeśli wysyłasz formulaż to pewno metodą POST a nie GET więc zmień na $_POST[‘chceckbox’]

 

Spróbuj jeszcze samodzielnie utworzyć plik na serwerze gdzie chcesz to zapisywać


(-Puma-) #3

Zamiast 0777 to spróbuj 777.

 

Sprawdź czy to działa:

function OdejCzas($hh1, $mm1, $ss1, $hh2, $mm2, $ss2) {
$hh = $hh2 - $hh1;
$mm = $mm2 - $mm1;
$ss = $ss2 - $ss1;
$wynik = mktime($hh,$mm,$ss);

if(isset($_GET['checkbox']))
$wynik = $wynik*0.7;

$wynik = date('H:i:s', $wynik);
return $wynik;
}

(Matimichalak) #4

Kalitt już wcześniej tego próbowałem, lecz się nie powiodło ;/

-Puma-  zmiana na 777 nie pomogła. Twoja ingerencja w kod poprawiła nieco jego “kondycję” :). Może omówię na przykładzie.

wpisując czas drogi:

0(h),10(min),0(s) 

i wpisując czas dojścia:

00:00:00

wychodzi mi wynik (bez zaznaczonego checkboxa) 23:50:00. I to jest poprawny wynik. Czyli jeżeli po zaznaczeniu checkboxa chcę aby czas został skrócony o 30% powinno wyjść 23:53:00. Wychodzi 04:45:00 :/.

 


(Jim1961) #5

@problem 1:

  • co ta małpa tam robi ??

  • sprawdź co zwraca “is_writable”

  • zainteresuj się funkcją “file_​put_​contents”

  • mień hosting :stuck_out_tongue:


(kalitt) #6

@ jest po to by PHP ignorować ostrzeżenia jak coś


(Matimichalak) #7

Niestety  kalitt  nadal to samo. Funkcja nie skraca czasu o 30% :confused:


(kalitt) #8
function OdejCzas($hh1, $mm1, $ss1, $hh2, $mm2, $ss2) {
$hh = $hh2 - $hh1;
$mm = $mm2 - $mm1;
$ss = $ss2 - $ss1;

if(isset($_GET['checkbox']))
{
$th = $hh * 3600;
$tm = $mm * 60;

$wynik = mktime(0,0,($th + $tm + $ss)) - (($th + $tm + $ss) *0.7);
}
else
$wynik = mktime($hh,$mm,$ss);




$wynik = date('H:i:s', $wynik);
return $wynik;
}

Zobacz to


(Matimichalak) #9

jasny gwint :p… Ten checkbox jest nieugięty. Jak ktoś coś na to poradzi będę winny wielkie podziękowania. 


(-Puma-) #10

Wreszcie chyba się udało :slight_smile:

function OdejCzas($hh1, $mm1, $ss1, $hh2, $mm2, $ss2) {
$czas1 = ($hh1*3600)+($mm1*60)+$ss1; 
$czas2 = ($hh2*3600)+($mm2*60)+$ss2; 
if(isset($_GET['checkbox'])) $sekundy = $czas2-($czas1*0.7); else $sekundy = $czas2-$czas1;
$wynik = date('H:i:s', mktime(0,0,$sekundy));
return $wynik;
}

(Matimichalak) #11

DZIAŁA :)! Błąd był w GET i POST :slight_smile: Zmieniłem raz wartości i potem zapomniałem, a jak już mieliśmy rozwiazanie zostało pozmieniane. Dzięki Puma :slight_smile:


(-Puma-) #12

Zmień w funkcji z GET na POST, gdyż w formularzu masz POST a dopisek przy checkbox $_GET nic nie daje i możesz to wykasować.


(Matimichalak) #13

właśnie to zrobiłem jak napisałem wcześniejszy post :))