Autor Zpráva
david2097
Profil
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
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
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
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
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
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
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
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
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
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
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 &amp 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" /> &nbsp;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">&nbsp;</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">&nbsp;</li>
        </ul> 
    </div> <!-- / top -->
    
</div> <!--panel -->

<div class="pageContent">
    <div id="main">
      <div class="container">
        <h1>bla</h1>
        <h2>&nbsp;PHP &amp; 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
http://cz2.php.net/manual/en/function.empty.php nebo http://cz.php.net/manual/en/function.isset.php

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: