| Autor | Zpráva | ||
|---|---|---|---|
| david2097 Profil |
#1 · Zasláno: 22. 5. 2012, 17:56:45 · Upravil/a: david2097
nazdar jsem tu zas David2097
Takže minule jsem nevěděl vůbec nic ani jak se dělá registrace ale teď mám slibnou registraci a vcelku dobrou grafiku hry ale ( zase nějaký to ale ) stále nevím jak zajistit stavbu budov !!!! vím že se to bude ukládat do databáze a nějaký script to na tu databázi odešle. teď ještě odpočet a po skončení odpočtu se zobrazí budova s číslem 1 ( nebo 2,3,4,5,6 no atd... ) Zkuste napsat jak byste to vy vyřešili (slovně) a po té uvedli příklad jsem zvědav kolik verzí existuje a které jsou nejspolehlivější (spokojím se s jedinou možností :( ) předem mnohokrát děkuji za správnou odpověd příklad špatné odpovědi: Ty si nějakej ...... vždit si stačí udělat tabulku a do toho to tam ukládat !!! ha a je to tak tohle doopravdy nechci s pozdravem David Vlasák ne nejsem sin Tomáše Vlasáka (plzeňský hokejista pro ty kteří neví) |
||
| Sir Tom Profil |
david2097:
Také nazdar, stavbu budov bych dělal takto: Při založení budovy se do databáze uloží čas, kdy byly položeny základy budovy a čas, kdy daná budova bude postavena. Dynamický odpočet bych řešil ve formě JavaScriptu (který bude pracovat právě s časy z db), kdy se zjistí rozdíl obou časů (nebo aktuálního času a času postavení budovy) a tento rozdíl se bude zmenšovat. Jakmile dosáhne nuly v JS se zavolá funkce, která zobrazí budovu (změna CSS stylu) s daným číslem. Příklad uvádět nebudu. Myslím, že slovního popisu jsem napsal až-až. Napiš mi, jestli tato odpověď je ta správná !!! :D :D |
||
| david2097 Profil |
#3 · Zasláno: 22. 5. 2012, 18:08:55 · Upravil/a: david2097
ano je správná ale potřeboval bych ten JS
prosím pochopil jsem to ale JS příliš neovládám jen tak zhruba něco málo a základní syntaxe |
||
| Sir Tom Profil |
#4 · Zasláno: 22. 5. 2012, 18:18:55
david2097:
var startCas = 10000000; //čas zahájení
var konecCas = 90000000; //čas konce - postavení budovy - oba casy se budou tahat z db
var rozdil = konecCas - startCas;
function odpocitavani(){
rozdil--;
if(rozdil==0){
necoSeStane(); //tady bude kód, který se má stát až rozdíl časů bude roven nule
}else{
setTimeout("odpocitavani()", 1000); // pokud rozdíl není nulový, tak za 1 sekundu se rozdíl opět sníží
}
}
odpocitavani();No - aktuální zobrazení rozdílu si jistě nastuduješ sám. Velmi vhodné je přečíst si základy o JS na www.jakpsatweb.cz. To, co se má stát, jakmile bude rozdíl nulový, také nechám na tobě. Snad jsem tě již trošku naťuknul. Celý 100% kód ti zde asi nikdo nevytvoří. Na to slouží sekce Práce a zakázky. |
||
| david2097 Profil |
#5 · Zasláno: 22. 5. 2012, 18:49:24
Dík moc ( to je ta správná odpověd )
|
||
| 1Pupik1989 Profil |
Stačí do db uložit jen čas konec stavby, momentální čas zjistíš v javascriptu. A pokud budeš mít stavební frontu, tak tím spíš budeš zjišťovat momentální čas pomocí Date().
timer = function(timeS){
timeE = new Date().getTime();
if(timeS>timeE){
//čas je větší než čas v DB
setTimeout(function(){timer(timeS);},1000);
}else{
//hotovo
}
} |
||
| Ugo Profil |
#7 · Zasláno: 23. 5. 2012, 08:20:05
opravdu zjistíš správný momentální čas v javascriptu který nemá přístup k tobě na server? to by byl asi trochu lehkej cheating kdybych dal stavět, přenastavil si hodiny a měl hotovo, konkrétně čas je věc která musí bejt sjednocená, je jedno na jakej čas protože v celý hře použiješ jen rozdíly timestampu, ale musí bejt stejnej a spolehlivej (ještě dotaz po ránu, když při každém volání timeru o sekundu později porovnám nový datum, skonči cyklus někdy?)
co můžeš dělej na serveru, čili jak píše Tom, sebrat ze serveru čas a ten odpočítat, pokud bys pak volal serverový script který uloží dokončení, tak musí mít samozřejmě kontrolu |
||
| greeny Profil |
#8 · Zasláno: 23. 5. 2012, 08:44:47
Nebo můžeš po tom co uživatel postaví budovu jen zobrazovat čas, kdy se to dokončí... A ten je statický, takže ti ho vyhodí PHPko ;)
|
||
| 1Pupik1989 Profil |
#9 · Zasláno: 23. 5. 2012, 10:16:30
Ugo:
Ano, opravdu zjistíš správný momentální čas v javascriptu. Javascript je jen na odečítání, nikoliv zapisování do DB. To samé se musí kontrolovat i v PHP :) Cyklus skončí ve chvíli, kdy momentální čas je větší než čas v DB. |
||
| Joker Profil |
#10 · Zasláno: 23. 5. 2012, 10:35:27
Ugo:
„opravdu zjistíš správný momentální čas v javascriptu který nemá přístup k tobě na server?“ To už se tu řešilo, nenašel jsem kde, takže napíšu běžný postup: 1. PHP předá Javascriptu aktuální serverový čas (klidně může nagenerovat JS proměnnou do stránky) 2. JS si podle toho spočítá rozdíl mezi klientským a serverovým časem 3. Serverový čas je klientský čas mínus rozdíl. „to by byl asi trochu lehkej cheating kdybych dal stavět, přenastavil si hodiny a měl hotovo“ Neměl hotovo, jen by odpočet byl na nule, ale třeba po obnovení stránky by se zase objevil. Jinak i přenastavení hodin by technicky šlo kontrolovat, například časovač může porovnat starou a novou hodnotu odpočtu a když je rozdíl větší než 2 sekundy*, může třeba obnovit stránku, nebo znovu zjistit serverový čas a spočítat rozdíl. *Časovač v JS má omezenou přesnost a samotný skript nějakou dobu trvá, proto při volání každou sekundu může rozdíl být i 2 sekundy |
||
| david2097 Profil |
#11 · Zasláno: 23. 5. 2012, 17:43:12
Notice: Undefined index: id in C:\Program Files\EasyPHP\www\reg2\demo.php on line 208
Co to je? prosím můžete mi to vysvětlit myslím že chybí Index? |
||
| Nox Profil |
#12 · Zasláno: 23. 5. 2012, 18:08:36
No...ano, přistupuješ k indexu v poli, který není definován (což by sis během chvilky našel sám na Googlu). Bez kódu toho víc neřeknem
|
||
| david2097 Profil |
#13 · Zasláno: 23. 5. 2012, 20:11:10 · Upravil/a: david2097
jj
<?php
define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
// Those two files can be included only if INCLUDE_CHECK is defined
session_name('tzLogin');
// Starting the session
session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks
session_start();
if($_SESSION['id'] && !isset($_COOKIE['tzRemember']) && !$_SESSION['rememberMe'])
{
// If you are logged in, but you don't have the tzRemember cookie (browser restart)
// and you have not checked the rememberMe checkbox:
$_SESSION = array();
session_destroy();
// Destroy the session
}
if(isset($_GET['logoff']))
{
$_SESSION = array();
session_destroy();
header("Location: demo.php");
exit;
}
if($_POST['submit']=='Login')
{
// Checking whether the Login form has been submitted
$err = array();
// Will hold our errors
if(!$_POST['username'] || !$_POST['password'])
$err[] = 'All the fields must be filled in!';
if(!count($err))
{
$_POST['username'] = mysql_real_escape_string($_POST['username']);
$_POST['password'] = mysql_real_escape_string($_POST['password']);
$_POST['rememberMe'] = (int)$_POST['rememberMe'];
// Escaping all input data
$row = mysql_fetch_assoc(mysql_query("SELECT id,usr FROM tz_members WHERE usr='{$_POST['username']}' AND pass='".md5($_POST['password'])."'"));
if($row['usr'])
{
// If everything is OK login
$_SESSION['usr']=$row['usr'];
$_SESSION['id'] = $row['id'];
$_SESSION['rememberMe'] = $_POST['rememberMe'];
// Store some data in the session
setcookie('tzRemember',$_POST['rememberMe']);
}
else $err[]='Wrong username and/or password!';
}
if($err)
$_SESSION['msg']['login-err'] = implode('<br />',$err);
// Save the error messages in the session
header("Location: demo.php");
exit;
}
else if($_POST['submit']=='Register')
{
// If the Register form has been submitted
$err = array();
if(strlen($_POST['username'])<4 || strlen($_POST['username'])>32)
{
$err[]='Your username must be between 3 and 32 characters!';
}
if(preg_match('/[^a-z0-9\-\_\.]+/i',$_POST['username']))
{
$err[]='Your username contains invalid characters!';
}
if(!checkEmail($_POST['email']))
{
$err[]='Your email is not valid!';
}
if(!count($err))
{
// If there are no errors
$pass = substr(md5($_SERVER['REMOTE_ADDR'].microtime().rand(1,100000)),0,6);
// Generate a random password
$_POST['email'] = mysql_real_escape_string($_POST['email']);
$_POST['username'] = mysql_real_escape_string($_POST['username']);
// Escape the input data
mysql_query(" INSERT INTO tz_members(usr,pass,email,regIP,dt)
VALUES(
'".$_POST['username']."',
'".md5($pass)."',
'".$_POST['email']."',
'".$_SERVER['REMOTE_ADDR']."',
NOW()
)");
if(mysql_affected_rows($link)==1)
{
send_mail( 'demo-test@tutorialzine.com',
$_POST['email'],
'Registration System Demo - Your New Password',
'Your password is: '.$pass);
$_SESSION['msg']['reg-success']='We sent you an email with your new password!';
}
else $err[]='This username is already taken!';
}
if(count($err))
{
$_SESSION['msg']['reg-err'] = implode('<br />',$err);
}
header("Location: demo.php");
exit;
}
$script = '';
if($_SESSION['msg'])
{
// The script below shows the sliding panel on page load
$script = '
<script type="text/javascript">
$(function(){
$("div#panel").show();
$("#toggle a").toggle();
});
</script>';
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>A Cool Login System With PHP MySQL & jQuery | Tutorialzine demo</title>
<link rel="stylesheet" type="text/css" href="demo.css" media="screen" />
<link rel="stylesheet" type="text/css" href="login_panel/css/slide.css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<!-- PNG FIX for IE6 -->
<!-- http://24ways.org/2007/supersleight-transparent-png-in-ie6 -->
<!--[if lte IE 6]>
<script type="text/javascript" src="login_panel/js/pngfix/supersleight-min.js"></script>
<![endif]-->
<script src="login_panel/js/slide.js" type="text/javascript"></script>
<?php echo $script; ?>
</head>
<body>
<!-- Panel -->
<div id="toppanel">
<div id="panel">
<div class="content clearfix">
<div class="left">
<h1>The Sliding jQuery Panel</h1>
<h2>A register/login solution</h2>
<p class="grey">You are free to use this login and registration system in you sites!</p>
<h2>A Big Thanks</h2>
<p class="grey">This tutorial was built on top of <a href="http://web-kreation.com/index.php/tutorials/nice-clean-sliding-login-panel-built-with-jquery" title="Go to site">Web-Kreation</a>'s amazing sliding panel.</p>
</div>
<?php
if(!$_SESSION['id']):
?>
<div class="left">
<!-- Login Form -->
<form class="clearfix" action="" method="post">
<h1>Member Login</h1>
<?php
if($_SESSION['msg']['login-err'])
{
echo '<div class="err">'.$_SESSION['msg']['login-err'].'</div>';
unset($_SESSION['msg']['login-err']);
}
?>
<label class="grey" for="username">Username:</label>
<input class="field" type="text" name="username" id="username" value="" size="23" />
<label class="grey" for="password">Password:</label>
<input class="field" type="password" name="password" id="password" size="23" />
<label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> Remember me</label>
<div class="clear"></div>
<input type="submit" name="submit" value="Login" class="bt_login" />
</form>
</div>
<div class="left right">
<!-- Register Form -->
<form action="" method="post">
<h1>Not a member yet? Sign Up!</h1>
<?php
if($_SESSION['msg']['reg-err'])
{
echo '<div class="err">'.$_SESSION['msg']['reg-err'].'</div>';
unset($_SESSION['msg']['reg-err']);
}
if($_SESSION['msg']['reg-success'])
{
echo '<div class="success">'.$_SESSION['msg']['reg-success'].'</div>';
unset($_SESSION['msg']['reg-success']);
}
?>
<label class="grey" for="username">Username:</label>
<input class="field" type="text" name="username" id="username" value="" size="23" />
<label class="grey" for="email">Email:</label>
<input class="field" type="text" name="email" id="email" size="23" />
<label>A password will be e-mailed to you.</label>
<input type="submit" name="submit" value="Register" class="bt_register" />
</form>
</div>
<?php
else:
?>
<div class="left">
<h1>Members panel</h1>
<p>You can put member-only data here</p>
<a href="registered.php">View a special member page</a>
<p>- or -</p>
<a href="?logoff">Log off</a>
</div>
<div class="left right">
</div>
<?php
endif;
?>
</div>
</div> <!-- /login -->
<!-- The tab on top -->
<div class="tab">
<ul class="login">
<li class="left"> </li>
<li>Hello <?php echo $_SESSION['usr'] ? $_SESSION['usr'] : 'Guest';?>!</li>
<li class="sep">|</li>
<li id="toggle">
<a id="open" class="open" href="#"><?php echo $_SESSION['id']?'Open Panel':'Log In | Register';?></a>
<a id="close" style="display: none;" class="close" href="#">Close Panel</a>
</li>
<li class="right"> </li>
</ul>
</div> <!-- / top -->
</div> <!--panel -->
<div class="pageContent">
<div id="main">
<div class="container">
<h1>bla</h1>
<h2> PHP & jQuery</h2>
</div>
<div class="container">
<p>blabalbla</p>
<p>blabalbla
</p>
<p>blabalbla
</p>
<div class="clear"></div>
</div>
</div>
</div>
</body>
</html> |
||
| Nox Profil |
#14 · Zasláno: 23. 5. 2012, 20:17:36
|
||
|
Časová prodleva: 14 let
|
|||
0