Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 193.84.207.–

peter
CSS › Responzívna stránka - úvodn
Včera   #382305

Neva, no. Stale nechapu, co vlastne presne chces. Zkus obrazky, co to dela ted a co by to delat melo. Pripadne k tomu kod, treba I na jsfiddle.

Mozna, to, co hledas je prave obaleni stranky divem. Nastavis mu margin 0 auto + width.
<div>
<header>...</header>
<footer>...</footer>
</div>

Pokud bys to chtel resit, jak to mas na obrazku, 2 prouzky pres celou sirku stranky, tak bych tam pridal do kazde casti stejny 'container' (0 auto + width) a vnejsi casti nastavil ty prouzky. Tak, jak jsi to psal na zacatku. Slo by to resit I tim prvnim, ale musel bys pouzit obrazek na pozadi a to by vyzadovalo definovat presne vysku header a footer. Ale s obrazkem by slo zase carovat jako base64, nejaky ornament, spesl prechod, spesl okraje a tak.
<header><div>...</div></header>
<footer><div>...</div></footer>

peter
PHP › PHP a pochopení OOP
31. 10. 2018   #382126

#22 šnekr
isset($_SESSION["loginId"]) - a to je co, kdyz ne globalni promenna? :)

peter
JavaScript, AJAX, jQuery › Jak zastavit provádění setin…
31. 10. 2018   #382125

Josef Kulhavý
Jak zastavit setInterval?

this.func.timerStart = function()
	{
//alert('start');
	root.func.timerStop();
	root.vars.timer.counter = 0;
	root.vars.timer.timer = setInterval(root.func.timerRun, root.vars.timer.speed); //  uloz timer do promenne
	}

this.func.timerStop = function()
	{
//alert('stop');
	if (root.vars.timer.timer!=null)
		{
		clearInterval(root.vars.timer.timer); // zastav timer v promenne
		}
	root.vars.timer.timer = null;
	}

this.func.timerRun = this.func.arrowGroupMove;

Tu kaskadu si nevsimej, je to soucasti class. Konkretne (mezera strili, spousti interval):

https://mlich.zam.slu.cz/x/js-tanks.htm

peter
PHP › Dotaz do mysql
27. 9. 2018   #381769

Asi nejlepe pouzitelny by mohl byt ten posl. example
http://php.net/…examples.php
-97 / Anonymous / 4 years ago
Aby bylo jasne, tak to odesial obecnou message. Ta byva typu ping, connect, disconnect, text (handshake, reply-handshake, text). Jako text si pak muzes odesilat zpravicky typu "tonda->all Ahoj". Anebo pouzit json a posilat slozitejsi konstrukce. Neresi to uzivatele, to musis resit dalsim systemem. Tohle prijme obecne zpravu. Neco jako na poste, spadne to do krabicky, tu krabicku si system preda pani postacce (dalsimu programu) a pani postatcka si precte adresy a teprve s tim neco dela. Ale to neni problem, zavolat dalsi sluzbu s logovanim uzivatelu, s databazi jmen a tak. Uzivatel ti jako text posle sve jmeno pri prihlaseni...
 

<?php

class MySocketServer
{
    protected $socket;
    protected $clients = [];
    protected $changed;
   
    function __construct($host = 'localhost', $port = 9000)
    {
        set_time_limit(0);
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        socket_set_option($socket, SOL_SOCKET, SO_REUSEADDR, 1);

        //bind socket to specified host
        socket_bind($socket, 0, $port);
        //listen to port
        socket_listen($socket);
        $this->socket = $socket;
    }
   
    function __destruct()
    {
        foreach($this->clients as $client) {
            socket_close($client);
        }
        socket_close($this->socket);
    }
   
    function run()
    {
        while(true) {
            $this->waitForChange();
            $this->checkNewClients();
            $this->checkMessageRecieved();
            $this->checkDisconnect();
        }
    }
   
    function checkDisconnect()
    {
        foreach ($this->changed as $changed_socket) {
            $buf = @socket_read($changed_socket, 1024, PHP_NORMAL_READ);
            if ($buf !== false) { // check disconnected client
                continue;
            }
            // remove client for $clients array
            $found_socket = array_search($changed_socket, $this->clients);
            socket_getpeername($changed_socket, $ip);
            unset($this->clients[$found_socket]);
            $response = 'client ' . $ip . ' has disconnected';
            $this->sendMessage($response);
        }
    }
   
    function checkMessageRecieved()
    {
        foreach ($this->changed as $key => $socket) {
            $buffer = null;
            while(socket_recv($socket, $buffer, 1024, 0) >= 1) {
                $this->sendMessage(trim($buffer) . PHP_EOL);
                unset($this->changed[$key]);
                break;
            }
        }
    }
   
    function waitForChange()
    {
        //reset changed
        $this->changed = array_merge([$this->socket], $this->clients);
        //variable call time pass by reference req of socket_select
        $null = null;
        //this next part is blocking so that we dont run away with cpu
        socket_select($this->changed, $null, $null, null);
    }
   
    function checkNewClients()
    {
        if (!in_array($this->socket, $this->changed)) {
            return; //no new clients
        }
        $socket_new = socket_accept($this->socket); //accept new socket
        $first_line = socket_read($socket_new, 1024);
        $this->sendMessage('a new client has connected' . PHP_EOL);
        $this->sendMessage('the new client says ' . trim($first_line) . PHP_EOL);
        $this->clients[] = $socket_new;
        unset($this->changed[0]);
    }
   
   
    function sendMessage($msg)
    {
        foreach($this->clients as $client)
        {
            @socket_write($client,$msg,strlen($msg));
        }
        return true;
    }
}

(new MySocketServer())->run();
?>
peter
PHP › Dotaz do mysql
27. 9. 2018   #381768

Je to trochu veda. Bohuzel nemam nikde jednoduchy kod. Mam uz do nej primichane vselijake slozitosti pro lepsi ovladani, ukoncovani serveru a tak.

peter
PHP › Dotaz do mysql
27. 9. 2018   #381767

http://php.net/manual/en/sockets.examples.php

Server pro socket funguje tak,
- nastavis si php ne konenecny time_limit
- vytvoris si server (pripojis ho na port a tak) a pripojis na nej socket (jakoze hlavni socket - server pro uzivatele)
- vytvoris si nekonecnou smycku, ve ktere poslouchas, co se deje na socketech, a) hlavnim (1), b) ostatnich (0)
- pokud prijde neco na hlavni, zjistis, co to je. Pokud je to zadost o pripojeni, ta spustis vyvoreni dalsiho socket a odesles na novy socket handshake. Pokud to druha strana potvrdi, tak nechas socket otevreny. Pokud nee, socket odpojis a smazes ze seznamu ostatnich )
- a pak proveris vsechny otevrene sockety, zda jeste reaguji (druha strana je drzi otevrene) a kdyz ne, zavres je.
- a nebo z nich prectes message

Pri testovani si nastav limit jen tak na 5s.
Pokud server neukoncis, je nutne pak uplne vypnout php. Jinak ti bude blokovat na pc port, na kterem jsi server spustil. Je to takove hodne neprijemne, kdyz nevis, proc ti php odmita spustit stejny program, ktery jeste pred chvili bez problem spustil :)

peter
Návrhy na vylepšení › Obrázková Captcha je hrozná
30. 8. 2018   #381408

Zvlastni, na vsech mych webech, kde jsem to pouzil, tak neviditelny input funguje. Asi to mas spatne udelane.
Staci treba 10x odeslat formular, kde vyplnim 25 a vzdycky to aspon 1x projde.
Spravne bys to mel mit tak, ze php generujes prazdny input. K nemu otazku. Odpoved nesmi byt 0 ani 1 a nebo se opakovat treba po 25 pokusech.

Zkoukni ulozto Maji 4 mistny pismenkovy captcha kod pro pomale stahovani. Zatim se mi nestalo, z 500 pokusu za posl. 5 let, ze bych videl stejny kod 2x. Je mozne, ze to nastalo, ze si to jen nepamatuji. Ale vetsinou si jejich kody podvedomne pamatuji, cili takovych min 30 urcite. Kdybych psal ten samy, urcite mozek rekne blik, to uz jsi psal.
Normalne bych to generoval hash z casoveho razitka kombinovaneho s ip, rekneme 5-10 min interval. Plus, ukladal bych do session pocet odeslanych zprav, ktery bych take zamontoval do toho hash. Aby po odeslani zpravy mel vzdy unikatni hash a nemohl odesilat na jeden a ten samy celych 10 minut. Jestli chces, muzu zkusit tu funkci vytvorit. Sice jsem hash takhle jeste nedelal, ale vsechno je jednou poprv

peter
PHP › procisteni HTML tagu
11. 9. 2017   #217803

Jo, jenze strtolower se neda pouzit na utf, tam je mb_strtolower.

peter
PHP › Nasepkavanie pri vyhladavani…
11. 9. 2017   #217802

Jo, hele, mozna se vyplati resit naseptavani spis pomoci js a json kodu. Json tusim dela to, ze stejna slova koduje jako odkaz na text zpet. Cili, klidne stahnout celou db slov, seradis, a pak jen odkazujes zpetne na stejne useky. Nebo vlastni kod. Pr 

vitejte
vitek
viteslav

vitejte
4k
4slav
peter
PHP › Minimalizacia poctu include…
11. 9. 2017   #217798

Ono zalezi na tom, jak je to delane. Cim vic radku, tim vic jich musi php prelozit do kodu procesoru. Kdyz to jde, snazim se rozdelit program na logicke celky, ktere vyuziji ve vice souborech.

Jeste jsem neincludaval vic nez 10 souboru, ani kaskadne. Takze nemuzu rici, jaky to ma vliv. Obecne je dobre, kdyz ma disk soubory pohromade, ze je nenacita z ruznych mist. Ale u ssd je to asi fuk :) Obri soubory jsou obvykle pomale, si myslim. Ale zas treba, kdyz kopiruji na flashku, tak, kdyz se to presouva jako velky balik, je to vyrazne rychlejsi nez kdyz tam vytvari soubor po souboru do souboroveho systemu.

peter
PHP › Class active na aktuálnej st…
11. 9. 2017   #217797

kes, ampersand, samozrejme, kdyz je to dalsi parametr :)
odkaz.php?data=456&odkaz=1

peter
PHP › Class active na aktuálnej st…
11. 9. 2017   #217796

Nebo by slo pouzit primo v hrefu, ale pak je trosku slozitejsi to z tama vydolovat. Nebo aspon driv byvalo, mozna ted je na to funkce.
odkaz.php?data=456?odkaz=1
 

peter
PHP › Class active na aktuálnej st…
11. 9. 2017   #217795

Muzes pouzit i javascript. Mas treba 

<script>
odkaz = 'webapp.php';
items = document.getElementById('menu');
items = items.getElementsByTagName('A');
for (i=0; i<items.length; i++) {item = items[i]; if (item.href==odkaz) {item.className='active';}}
</script>

Nebo muzes jit treba podle poradoveho cisla 

<a href="odkaz.php?data=123#0">...</a>
<a href="odkaz.php?data=456#1">...</a>
<script>
odkaz = location.hash; //1 mozna #1
items = document.getElementById('menu');
items = items.getElementsByTagName('A');
for (i=0; i<items.length; i++) {item = items[i]; if (i==odkaz) {item.className='active';}}
</script>
peter
PHP › Riešenie pre otvorenie txt s…
11. 9. 2017   #217794

Jeste mozna jine cteni souboru
$data = file_get_content('soubor.txti');
 

Jinak, samozrejme pri vice zapisech je dobre pouzit flock, pro uzamceni souboru, pokud do nej zapisuje prave jiny prikaz.

peter
PHP › Riešenie pre otvorenie txt s…
11. 9. 2017   #217793

Ja bych to resil pres databazi. Souborove to muzes resit stejne.

zapis.php?data='rozsvit'
precti.php - ktere soucasne smaze z db ten text
zp.php?akce=zapis&data='rozsvit'
zp.php?akce=precti

Na serveru se da php spoustet tusim pres 'php precti.php' (nebo 'http precti.php' nebo tak nejak se to tam dela).

Ale slo by to delat tak, ze ke kazdemu pozadavku pridas casove razitko. Funkce si pak precte jen radky v urcitem intervalu, ostatni ignoruje. A pak ti bezi na serveru jeste proces, ktery smaze radky se starsim razitkem. Ale prijde mi to na houbec, kdyz to muze delat zrovna ten php program.

No, a pak muzes v tom php predat data primo tomu dalsimu programu, neni treba to zapisovat. Nejdriv si overis, zda je to platny prikaz, ale.
 

<?php
$data = 'rozni';
shell_exec('jinyprogram.exe -data='.$data); // tady existuje asi 5 prikazu pro spousteni z command-line, google
//http://php.net/manual/en/function.exec.php
//exec();
//system() - Execute an external program and display the output
//passthru() - Execute an external program and display raw output
//escapeshellcmd() - Escape shell metacharacters
//pcntl_exec() 
?>
peter
PHP › Nasepkavanie pri vyhladavani…
11. 9. 2017   #217792

Php generuje soubor. Soubor (data) muze byt obrazek, video, html, js, css, text, mp3, ... nebo jiny kod. 

Pr. takovy jednoduchy ajax bez pouziti js httprequestu.

--- x.php ---
<?php
echo 'var a,b,c;';
echo 'a=3;';
echo 'alert(a);';
?>

--- y.htm ---
<script src="x.php"></script>

--- y2.htm ---
<script id='aaa'></script>
<script>document.getElementById('aaa').src='x.php';</script>

Js ajax dela to, ze stahne ze serveru soubor (anicka.jpg nebo soubor.php?name=anicka.jpg). Totez dela treba tag iframe src=..., img src=..., script src=..., link. Cili, ajax dela neco podobne jako v php file_get_contents. Jenom obvykle byva nastaveny asynchronne, jakoze stahuje napozadi a proto je treba k nemu pridat navratovou funkci. Priklad zapisu 

function stahuj(soubor, cb) {...}
function stahuj_cb(data) {alert(data);}
stahuj('soubor.php?name=anicka.jpg', stahuj_cb);
stahuj('soubor.php?name=anicka.jpg', window.stahuj_cb); // nebo
stahuj('soubor.php?name=anicka.jpg', window['stahuj_cb']); // nebo
stahuj('soubor.php?name=anicka.jpg', top.window['stahuj_cb']); // pro subframe
stahuj('soubor.php?name=anicka.jpg', top.stahuj_cb); // pro subframe

x = new mujAjax();
x.file = 'soubor.php?name=anicka.jpg';
x.callback = window.stahuj_cb;
x.zacniStahovat();

To je jen priklad, jak to asi funguje. Jak je udelany ten objekt mujAjakx ve tvem programu vubec netusim.

Kdyz chces stahovat treba 10 souboru naraz, tak bys mel nekde promennou, kde bys ukladal, zda je to completed a kdyz jse vsech 10, tak zavolas treba dalsi funkci. Nebo to muzes stahovat postupne, nastavis prenos na synchronni. A nebo muzes pouzit i asynchronni, ale pak to ale budes mit kaskadne.
stahuj('soubor1', stahuj2);
stahuj2('soubor2', stahuj3);...
Nevyhoda synchronniho je, ze program ceka, az se js vykona, dostahuji data. Takze se to moc nepouziva.

peter
PHP › Linux screen output pomocí PHP
11. 9. 2017   #217791

Ano, jsou programy a hostingy, ktere maji nainstalovany prohlizec a dovedou vykreslit vystup do obrazku.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý