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: 12 let
|
0