Pagina 1 din 2

Inregistrare resurse utilizator joc php

Scris: Sâm Iun 30, 2012
de Komfort
Buna ziua.
Cum as putea sa stochez in baza de date ultima accesare a utilizatorului si resursele pe care le are la momentul x
Apoi, la urmatoarea accesare citeste cate secunde s-au scurz de la momentul x si inmultesti cu rata de crestere, apoi adaugi la ce exista in baza de date.
Un exemplu mi-ar fi de mare ajutor.

Edit;

Cod: Selectaţi tot

//login.php
if(isset($_POST['password'])){
$nickname=$_POST['nickname'];
$password=$_POST['password'];
if(!isset($_SESSION['nickname'])) $_SESSION['nickname']=$_POST['nickname'];
$timp = time();
$sql3="UPDATE `users` SET `timp`='$timp' WHERE `nickname`='".$_POST['nickname']."'"; 
$result3=mysql_query($sql3);
echo $result3;

$cerereSQL3="SELECT * FROM users WHERE nickname='{$_SESSION['nickname']}'   ";
   $rezultat3 = mysql_query($cerereSQL3);
   while($rand = mysql_fetch_array($rezultat3)){ $rand['timp']=$timp3;}

$data_actuala = time(); 
 $diferenta = intval(($data_actuala-$timp3)/86400); 
$sql34="UPDATE `users` SET `timp`='$diferenta' WHERE `nickname`='".$_POST['nickname']."'"; 
$result4=mysql_query($sql4);
echo $result4;
 
Nu stiu unde nu e bine..eu as vrea sa salvez numarul de secunde de la ultimul login si de la cel precedent ..apoi le scad sa aflu cate secunde sunt de la ultimul login? Multumesc
As vrea sa aflu ultimele secunde de la ultimul login ca apoi sa cresc resursele ? Un ajutor

Inregistrare resurse utilizator joc php

Scris: Dum Iul 01, 2012
de MarPlo
Salut
Cand utilizatorul se logheaza, cred ca trebuie sa faci intai SELECT-ul in tabelul "users" ca sa preiei timpul precedentei logari. Retii acel timp intr-o variabila si-l scazi din timpul curent, time(), ca sa ai numarul de secunde de la logarea anterioara pana la cea actuala. Acest numar il poti retine intr-o sesiune, daca mai ai nevoie de el.
Apoi faci UPDATE in tabelul "users" cu timpul actualei logari.
La urmatoarea autentificare, la fel, intai SELECT, preiei timpul inregistrat ultima data, se scade din timpul curent, apoi UPDATE ca sa inlocuiesti timpul precedent (deja preluat) cu cel curent.

Inregistrare resurse utilizator joc php

Scris: Dum Iul 01, 2012
de Komfort
time() imi da un numar din 10 cifre:| nu prea inteleg.

Cod: Selectaţi tot

if(isset($_POST['password'])){
$nickname=$_POST['nickname'];
$password=$_POST['password'];
if(!isset($_SESSION['nickname'])) $_SESSION['nickname']=$_POST['nickname'];

$cerereSQL3="SELECT * FROM users WHERE nickname='{$_SESSION['nickname']}'   ";
   $rezultat3 = mysql_query($cerereSQL3);
   while($rand = mysql_fetch_array($rezultat3)){ $rand['timp']=$timp3;}

$data_actuala = time(); 
 $diferenta = intval(($data_actuala-$timp3)/86400); 
$sql34="UPDATE `users` SET `timp`='$diferenta' WHERE `nickname`='".$_SESSION['nickname']."'"; 
$result4=mysql_query($sql4);
echo $result4;
 
Asa e bine?

Inregistrare resurse utilizator joc php

Scris: Dum Iul 01, 2012
de MarPlo
time() returneaza numarul de secunde de la 1 Ianuarie 1970 pana in prezent. Poti verifica si in manualul PHP ( php.net ), cand nu stii ceva legat de vreo functie.
Nu stiu daca e bine, nu am cum sa testez si nici nu ma bag sa fac scriptul. Experienta mea in script-uri de jocuri e zero, dar ca idee, am cum este explicat mai sus.

Incearca sa adaugi la UPDATE $data_actuala in loc de $diferenta, cam asa:

Cod: Selectaţi tot

$sql4 = "UPDATE `users` SET `timp`=$data_actuala WHERE `nickname`='".$_SESSION['nickname']."'"; 
$result4 = mysql_query($sql4);
echo diferenta;
  
Si cred ca trebuie inlocuit:

Cod: Selectaţi tot

$rand['timp']=$timp3;
Cu

Cod: Selectaţi tot

$timp3 = $rand['timp'];
  
Ca sa retina data din $rand['timp'] (din mysql) in $timp3 .
- Si poate nu e nevoie sa imparti la /86400 ; tu stii.

Inregistrare resurse utilizator joc php

Scris: Lun Iul 02, 2012
de Komfort
Multumesc!!!:) merge
si daca as vrea minutele:utiliztorul x are y min de la ultimul login
cum as putea face?
Multumesc

Inregistrare resurse utilizator joc php

Scris: Lun Iul 02, 2012
de MarPlo
Incearca sa aplici codul din acest exemplu:

Cod: Selectaţi tot

$diferenta = 1212;    // secunde
$minute = floor($diferenta / 60);
$secunde = $diferenta % 60;
echo $minute. ' minute si '. $secunde. ' secunde';      // 20 minute si 12 secunde
 

Inregistrare resurse utilizator joc php

Scris: Lun Iul 02, 2012
de Komfort
merge...si inca o intrebare..

Cod: Selectaţi tot

$sql5 = "UPDATE `users` SET `porumb`='$diferenta'  WHERE `nickname`='".$_SESSION['nickname']."'"; 
$result5 = mysql_query($sql5);
echo $result5;
am acest cod care face urmatorea retine nr de sec de la ultmiul login....dar as vrea sa se adune secundele...adica de ex:de la ultmiul login am 18 sec ..si cand mai ma loghez inca odata sa nu imi apara to 18 sec ci 36 de secunde
o idee? eu am gandeam la insert into da nu stiu cum:(

Inregistrare resurse utilizator joc php

Scris: Lun Iul 02, 2012
de MarPlo
Daca am inteles bine, vrei sa aduni $diferenta actuala la valoarea deja existenta in mysql.
Incearca asa instructiunea UPDATE:

Cod: Selectaţi tot

$sql5 = "UPDATE `users` SET `porumb`=`porumb` + $diferenta  WHERE `nickname`='".$_SESSION['nickname']."'";

Re: Inregistrare resurse utilizator joc php

Scris: Mar Iul 03, 2012
de Komfort
Chiar nu stiu unde e greseala, de ce nici sa ma loghez nu mai merge, si pt la porumb nu se mai adauga.

Cod: Selectaţi tot

<?php
session_start();
include 'cfg.php';
include 'css.php';
if(!$_SESSION['logat']) $_SESSION['logat']='';

if(!$_SESSION['nickname']) $_SESSION['nickname']='';

if(isset($_POST['password'],$_POST['nickname'])) {
$nickname=$_POST['nickname'];
$password=$_POST['password'];

$sql="SELECT nickname,password FROM users WHERE nickname='".$nickname."' AND password='".$password."'  ";
$result=mysql_query($sql);

if(mysql_num_rows($result) == 1){
 $_SESSION['nickname']=$nickname;
 $_SESSION['logat']='Da';

$cerereSQL3="SELECT * FROM users WHERE nickname='".$nickname."'   ";
   $rezultat3 = mysql_query($cerereSQL3);
   while($rand = mysql_fetch_array($rezultat3)) {
$timp3=$rand['timp'];
$porumb=$rand['porumb'];
$wood=$rand['wood'];
$wool=$rand['wool'];
$milk=$rand['milk'];

$data_actuala=time();
$diferenta =$data_actuala-$timp3;

$query5 = mysql_query("UPDATE users SET timp='".$data_actuala."', porumb ='".$porumb+$diferenta."'  WHERE nickname='".
$nickname."'");

if(!$query5){
echo "Eroare la update";
die();
}}}}
if($_SESSION['logat'] != 'Da'){
 $_SESSION['logat']='Nu';
echo '<div style="position:absolute;top:540px;left:380px"><font size=3 color=red face="Poor Richard">Failed! <Br>
      Press <a class=failed href="?sheepfarm=Register"><b>here</b></a> for going to previous page.</font></div>';
}

if($_SESSION['logat']=='Da'){
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL=?sheepfarm=Myaccount">';
}
?>

Inregistrare resurse utilizator joc php

Scris: Mar Iul 03, 2012
de MarPlo
In loc de:

Cod: Selectaţi tot

if(isset($_POST['password'],$_POST['nickname']))
Ar trebui:

Cod: Selectaţi tot

if(isset($_POST['password']) && isset($_POST['nickname']))
Iar in loc de:

Cod: Selectaţi tot

$query5 = mysql_query("UPDATE users SET timp='".$data_actuala."', porumb ='".$porumb+$diferenta."'  WHERE nickname='".$nickname."'");
Cred ca merge asa (valorile numerice si calculele se scriu fara ghilimele):

Cod: Selectaţi tot

$query5 = mysql_query("UPDATE `users` SET `timp`=$data_actuala, `porumb`=(`porumb`+$diferenta)  WHERE `nickname`='$nickname'");
- Daca or mai f8i si alte greseli, nu stiu.

Inregistrare resurse utilizator joc php

Scris: Mar Iul 03, 2012
de Komfort

Cod: Selectaţi tot

$data_actuala=time();
$diferenta =$data_actuala-$timp3;
$xz = $porumb+$diferenta;
$query5 = mysql_query("UPDATE `users` SET `timp`=$data_actuala, porumb ='".$xz."'  WHERE `nickname`='".$nickname."'");
 
Chestai asat imi da de cap.....can ma loghez incepe la porumb cu 134356 si adauga bine , adica daca dau logout si ma loghez peste 10 sec va fi 134356 +10 si e f bine...nuami ca eu vreau sa inceapa cu 100, ca asa am adaugta eu la register.php si sa adauag de la 100 nu de la 13143354 care habar nu am de unde apare.
mUTLUMESC

URL: vocab.comuf.com : user = admin , parola = admin . Inregistrati-va din nou.

Inregistrare resurse utilizator joc php

Scris: Mar Iul 03, 2012
de MarPlo
Daca vrei sa inceapa de la 100, cred ca in codul SQL de creare a tabelului in MySQL trebuie sa adaugi la coloana "porumb" optiunea: NOT NULL DEFAULT 100 .
Sau acel numar e adaugat prin codul de inregistrare, ori poate a ramas de la teste anterioare.