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

Anonymní profil luboš – Programujte.comAnonymní profil luboš – Programujte.com

 

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

PHP › chybně vypsaný formulář MVC
20. 8. 2016   #212394

Mám problém s přesměrováním uživatele na příslušnou stránku, přesněji řečeno mám formulář pro registraci na adrese třeba http|://localhost/registrace , v něm pole pro jméno , email a heslo.

Pokud uživatel při registraci vyplní špatně email tak ho chci přeměrovat na stránku http://localhost/…strace-chyba, to se mi sice povede ale už nevím jak bych při přesměrováni měl zároveň poslat i třeba obsah pole jméno které uživatel zapsal správně aby to nemusel znovu vypoisovat a opravil jen pole s emailem,

spíš mně zajímá jak se to dělá správně v než že bych trval na svém přesměrování pokud se to správně dělá úplně jinak tak chci poprosit o teoretické řešení  a prosil bych to v objektovém MVC řešení tedy jak by teoreticky vypadal model jak controller, a pokud bych přesměrovával tak jestli přesměrování patři do modelu nebo do controlleru-

pro mně je přesměrování spíše záležitost controlleru než modelu protože přesměrování není práce s daty

- zkrátka jak to řešíte Vy ve svém MVC když chcete znovu zobrazit chybně vypsaný formulář s daty Dík

truth
PHP › session handler
17. 3. 2016   #209330

Dá se spolehnout na to že pokud si zavolám session_set_save_handler(),  že mi PHP nebude ukládat session do adresáře TEMP?. Obsluhu session mám ve vlastních metodách , nad každou handler funkcí mám svou vlastní metodu, proto mám všechny handler funkce prázdné a vrací jen true. Jde mi jen o to jestli je nějaká kolizní situace při které by najednou PHP začalo ukládat session do TEMP, místo do mnou zvolené databáze.

session_set_save_handler(
            array($this->dbConn, 'open'),
            array($this->dbConn, 'close'),
            array($this->dbConn, 'read'),
            array($this->dbConn, 'write'),
            array($this->dbConn, 'destroy'),
            array($this->dbConn, 'garbage')
            );
...
 public function open($savePath, $sessionName)
    {
        return true;
    }
    public function close()
    {
        return true;
    }
    public function read($id)
    {
        return true;
    }
    public function write($id, $data)
    {
        return true;
    }
    public function destroy($id)
    {
        return true;
    }
    public function garbageo($maxlifetime)
    {
        return true;
    }
...
/*
 * zde moje vlastní metody pro obsluhu session
 * nevyužívám ani jednu z funkcí handleru proto jsou všechny prázdné, vrací jen true
 * nad každou funkcí mám svou metodu pro její obsluhu
 */
...
truth
PHP › namespace, interface, traits…
26. 2. 2016   #208907

 Dík za názory, jsem docela klidný, vím že o moc nepřicházím

panika
PHP › dicontainer a controller
24. 12. 2015   #207517

#15 Kit
Aha, tvůj přístup mi rozhodně stojí za zamyšlení, hádám že nějaký tutoriál na internetu nenajdu, ale podle tvýho kusu kódu to do kupy dám.

panika
PHP › dicontainer a controller
24. 12. 2015   #207510

#8 Kit
To je trochu neotřelý přístup ale podle tvých argumentů to je určitě anti getsetrický, což je dost čistý přístup, mohl by jsi mi prosím tě ukázat tvůj přístup na něčem krátkým?.

panika
PHP › dicontainer a controller
24. 12. 2015   #207505

#6 ondrej39

Super, dík, to bylo to co jsem potřeboval vědět, že nebudu mít tisíc pravidel ale jen ty opravdu unikátní, jsem holt panikář :-) ,  trochu jsem se toho obával ale máš pravdu, konfigy budou jen u větších projektů trochu ukecaný, ale jinak si myslím že budu potřebovat předávat  hlavně DbConnection apod, a to se dá jednoduše zautomatizovat, takže dík za vyřešení problému

panika
PHP › dicontainer a controller
23. 12. 2015   #207503

#4 ondrej39
dik , zatím jsem pročetl  tu stránku na kterou jsi odkazoval a z ní mi vyplývá že co akce uživatele to nějaké pravidlo, takže nebudu  mít hafo DIC ale hafo pravidel buď v podobě pole nebo v xml dokumentu, možná že trochu přeháním, ono to asi nebude hafo pravidel ale trochu mně děsí to parsování xml dokumentu jen proto abych načetl nějaké pravidlo a co si budeme nalhávat kdybych pravidla načítal z pole, tak to taky není zrovna šlágr, teda jestli jsem to pochopil správně a ty pravidla se načítají z konfiguračních souborů a předávají se do konstruktoru DIC a ten podle těch pravidel vytvoří příslušný objekty atd. Radši si počkám na tvůj příklad možná že jenom zbytečně panikařím :-);

panika
PHP › dicontainer a controller
23. 12. 2015   #207500

#2 ondrej39
aha dík, tak tedy ta magie poskladání závislostí je v konfiguraci, mohl by jsi mi ukázat na nějakým teoretickým přikladu jak takový konfigurátor vypadá. z čeho ten konfigurátor vychází, nebo tak něco?.

panika
PHP › dicontainer a controller
23. 12. 2015   #207498

Ahoj chci se zeptat na dicontainer, na jeho funkci.Dicontainer má za ukol poskládat závislosti a vytvořit objekty contolleru, a tyto objekty udržuje a spravuje (alespoň tak to chápu). Podle této logiky by na každý kliknutí (na každou akci uživatele) musel být jeden Dicontainer, protože každé kliknuti není stejné a potřebuje jiný controller a jiné závislosti ,

Má otázka je tedy : Musím na každý controller  udělat jeden DiContainer?. nebo se to dá nějak zautomatizovat?. 

luboš
Offtopic › Web app vs desktop app
6. 10. 2015   #205451

#5 peter
přesně takhle jsem začínal taky s Cpp s QT  a udělal jsem si v něm generator čísel do sportky ale to bylo vše, pro mně prostě porod jako pro začátečníka, takže jsem utekl k PHP a ten generator jse si přepsal do PHP a dokonce se mi i daří vyhrávat :-) , myslím že to byla dobrá volba, nevím čím to je ale přijde mi že to je takový lidštější jazyk pro pochopení, akorát má ten jazyk pořád nějaký nový vychytávky pořád se něco přidává (namespace apod.),  něco ubírá, kompatibilita se  staršími scripty- nic moc,

ale na druhou stranu se o ten jazyk alespoň někdo stará, a jde kupředu, hlavně objektově, to je to co mně teď uchvacuje, slíbil jsem si že už nikdy nenapíšu nic ve špagetách a s PHP se mi to začíná dařit, nepočítám že až se vrátím k cpp tak mi pujdou snadneji vytvářet okna ale rozhodně budu snadněji programovat cpp oop ostatni už pujde samo, ovšem musím přiznat že se mi zatím k cpp vracet nechce.

jinak k dotazu ,- když to vezmu dle selského rozumu tak popularnejší jsou webowé jazyky, pokud budu počítat,- co webowka, to aplikace,- tak webowek je na světě přes miliardu za 25 let http://e-svet.e15.cz/…ardu-1119340 a desktopů možná stejně (můj odhad)  ovšem desktopy se vyvýjejí nejvíce od roku 1970 kdy se narodil jazyk C později Cpp, tedy 45let ale i kdyby bylo desktopů víc tak teď je web prostě trend , na web se stěhují cloudy a jiné systémy, pokud si chceš vybrat jazyk tak jakýkoliv který ti sedne ,mně třeba PHP tobě třeba NET, sto lidí si vybere stokrát jinak tady jsou starší průzkumy http://www.cnews.cz/…u-firmy-prat a tady máš pro orientaci jiný zdroj http://githut.info/

lubos
Offtopic › Web app vs desktop app
4. 10. 2015   #205397

Ber to jako názor úplného laika:

já si osobně teď razím tuto cestu

1) PHP SQL HTML - tam se naučím základní konstrukce i pokročilé oop (objektově orientované programování) myšlení ovšem skýtá to některá negativa jako ne zrovna propracovaný oop ale pro začátek dobrý. webowý jazyk takže budoucnost má zajištěnou

2) JAVA - tam už je to plně oop jazyk, se základy z PHP se mi už bude trochu líp uvažovat objektově, je to multiplatformní jazyk takže budoucnost má zajišzěnou

3) C++ - to už je vyvrcholením celého mého programátorského snažení, je to jazyk ze kterého se narodily PHP a JAVA takže učení půjde už skoro samo, je to nejpoužívanější jazyk pro tvorbu her a desktop aplikiací je to extrémně objektový jazyk, to proč se ho všichni bojí (je to můj pocit) je že v něm jdou hůř udělat okna pro aplikaci než v HTML, to byl důvod proč jsem přešel nejdřív na HTML SQL AŽ POTOM SE VRÁTÍM K Cpp

v každém z těchto jazyků je velká konkurence takže budeš muset být opravdu dobrý.

Ještě podotknu že jsou další možná ještě populárnější jazyky jakoC# NET atd.

ale to už budeš řešit až po PHP a JAVĚ jestli C# nebo Cpp a další

osobně si myslím že budoucnost je na webu ale dobré webowé aplikace se bez desktopu neobejdou, např CMR CMS  a jiné systémy to vyžadují komunikovat mezi desktopy a weby

jak říkám je to jen názor laika, ještě jsem nic pořádnýho nenapsal, ale to co píšu pro mně má velikou logiku

lubos
PHP › kopie globalniho pole POST
4. 10. 2015   #205395

#7 Kit
Čemu ty říkáš kritika tomu já říkám velice vzácná rada, Líbí se mi tvůj styl psaní kódu bez setterů a getterů. a taky se mi líbí tvůj "jen private" přístup. Dokonce se mi líbí jakým zpusobem jsi si svůj styl obhájil před pár dny s ondřejem v tomto vlákně http://programujte.com/…zvu-getteru/ .

Když jsem dopsal svůj předchozí příspěvek, řekl jsem si že si svůj projekt dokončím  přestože bude napsaný neobratně, to co jsi mi potom napsal o tvých prvotinách ve firmě, mně jen přesvědčilo že to má smysl, nepřestávat  a naučit se programovat z vlastních chyb, já si svých chyb cením, protože pokud ty chyby sám napravím tak je to pro mně ta největší škola kterou můžu dostat ale pokud už nevím kudy kam a pomůže mi někdo jako ty tak je to pro mně ještě cennější ,obdržet zkušenost někoho kdo je o několik řádů dál než já, toho je schopno jen málo lidí ,proto ne kritika ale velice vzácná rada a je pravda že tvoje rady mně vždycky posunuly dost dopředu.

Tvých rad si cením už jen proto že nepřemýšlýš uniformně, jako celé stádo jiných programátorů, moje zkušenost ukázala že jen ten kdo jde proti proudu dojde dál než ten kdo plave s proudem.

Neber můj příspěvek jako VDP "VlezDoPrdelení", ale jen jako poděkování za to co jsi mně naučil, a doufám že na tomhle fóru ještě pár let zůstaneš,mám takový pocit že tě budu brzy potřebovat :  

lubos
PHP › kopie globalniho pole POST
4. 10. 2015   #205392

#5 Kit
já osobně taky považuju php.net za velmi poučný manuál ale moderní programovací praktiky tam jsou v nějakém tutoriálu  k pohledání. Na internetu jsem našel dvě knihy , http://knihy.cpress.cz/…aly-kod.html a http://knihy.cpress.cz/cisty-kod.html. Já jsem programátor CNC strojů a s tímhle druhem programování nemá moje práce ani zdánlivě nic společného, takže jsem vždy rád za každou dobrou radu . Já potřebuju super knihu ze které se naučím ty nejmodernější praktiky, protože když napíšu kus kódu a narazím na nějaký problém a zeptám se tady na fóru tak mi většinou zrovna Ty odpovíš, že je to či ono špatně, takže se zase vracím na začátek. PHP je můj koníček a mám na něj jen něco přes hodinu denně, tak se mi nechce se pořád vracet na začátek, když udělám někde v kódu chybu tak mi nevadí se vrátit  a opravit to ale když je celý kód jedna velká chyba tak to už naštve.

lubos
PHP › kopie globalniho pole POST
3. 10. 2015   #205386

#3 Kit
dík za odpověď ještě mám dvě otázky

1) když používáš jen private tak to znamená že v tvých projektech nepoužíváš dědičnost (potected)

2) kde mám sehnat nějaký tutoriál kde se dozvím co má dělat funkce a nebo procedura , myslím to samozřejmě obecně, spíš mi jde o nějaký PHP ALMANACH.  Z čeho jsi se Ty např. učil tyhle a další jiná pravidla ?.

lubos
PHP › kopie globalniho pole POST
3. 10. 2015   #205377

Zajimá mně jakým způsobem pracujete Vy s globálním polem. Jde mi o to že někdo tvrdí že s polem $_POST["cisloZvenku"], se má pracovat v nezměněné podobě, tedy určitě ne takto - $cisloZvenku = $_POST["cisloZvenku"] protože jinak je to nebezpečné s tím souhlasím . V knize PHP6 programujeme profesionalně zase používají kopii pole, ta kopie je privátní takže si myslím že to je bezpečné = že se k ní nedá jen tak přistoupit, tak mně zajímá jak je to vlastně správně, nahodím sem ilustrační ukázku.

//takto to řeší v knize PHP6 programujeme profesionalne
Class Pocitej
{
    $private $_mojeCislo = 1;
    $private $_ciziCislo; // kopie pole
    $private $_vysledek; 
    
    public function __construct()
    {
        $this->_ciziCislo = $_POST["cisloZvenku"];
    }

    public function secti()
    {
        $this->_vysledek = $this->_mojeCislo + $this->_ciziCislo;
        return $this->_vysledek;
    }
}

a v případě nezměněné podoby by kód vypadalo takto

// nezměněná podoba
Class Pocitej
{
    $private $_mojeCislo = 1;
    $private $_vysledek; 

    public function secti()
    {
        $this->_vysledek = $this->_mojeCislo + $_POST["cisloZvenku"];
        return $this->_vysledek;
    }
}

Ta podtržítková notace u private vlastností je již pravděpodobně přežitek, dávám je tam jen pro ilustraci,  s příchodem PSR-1 je doporučováno $StudlyCaps, $under_score, $camelCase, ovšem mně osobně to podtržítko jasně dává najevo co je privátní . Připomínám že kniha je z roku 2010 ale pořád si myslím že tam je pár užitečných kusů kódu který se daj ještě dnes dobře použít. Zajímá mně jak se to dělá profesionálně. Předem dík za odpovědi.

luboš
PHP › oop mvc extends
1. 9. 2015   #204691

#25 KIIV
takže  šance tu je to jsem rád. Dík za odpovědi.

luboš
PHP › oop mvc extends
1. 9. 2015   #204689

#22 KIIV
samozřejmně že tým jen jestli se dá na tom našem malým rybníčku takový tým dát do kupy?? toť otázka

luboš
PHP › oop mvc extends
1. 9. 2015   #204685

#19 KIIV
kolik myslíš že je u nás v republice takových programátorů kteří jsou na takové úrovni že by byli schopni takový system postavit????,

luboš
PHP › oop mvc extends
1. 9. 2015   #204681

#15 Kit
já jsem to poznal že to je tvoje předelaný dílo, už jsem se s tvojí prací na netu setkal a nesedí mi k tvým znalostem

luboš
PHP › oop mvc extends
1. 9. 2015   #204680

#12 ondrej39
otázka mimo, můžu na Cpp jazyku postavit kompletní řídící systém pro elektroautomobil?? pokud se mně zeptáš co včechno má systém umět tak odpověď je uplně všechno :-)např:  zvednout podvozek , sám zaparkovat, zjistit polohu, apod, dík za odpověď.

luboš
PHP › oop mvc extends
1. 9. 2015   #204678

#13 Kit
to je dost drsný na to že autor má pod každým svým tutoriálem text : Autor je C# a PHP programátor, dále se věnuje webovým technologiím a redaktorské činnosti na ITnetwork. Rád své znalosti sdílí s komunitou a tak je rozšiřuje, věří, že smysl života je poznání. :-(

luboš
PHP › oop mvc extends
31. 8. 2015   #204648

#5 Kit
nevím jak to myslíš ? vždyť to mám přesně jak to píšeš, ty předešlý kódy jsou jen vytržený z kontextu.

kontroler:

//blah
//blah
public function process()
{
 if($_POST["name"] !=="" and empty($this->error["nameBlankSpace"]) and empty($this->errorRegistruj["nameSemicolons"]))
		{		          
 $this->query[1] = $this->objRegistration->searchUser();//tady rozkazuju databazi pres model
 $this->resultName = parent::dbCon()->query($this->query[1],$_POST["name"]) ;//vysledek
// tady jen kontroluju jestli ano nebo nebo ne
 if($this->resultName !== false)
{
$this->errorRegistruj["nameExist"] = '<span class="red"> ' .$this->objReadFile->fileRead($this->globalPathToErrorText.'error-name-exist-1.txt') . $_POST["name"] . $this->objReadFile->fileRead($this->globalPathToErrorText.'error-name-exist-2.txt'). ' </span>';
}
//blah
//blah
}

model:

// Třída poskytuje metody pro controller 
class Registration
{	
	// Vrátí rozkaz pro vytvoreni databaze
	public function searchUser()
	{
	     //select
          return "SELECT jmeno FROM admin WHERE jmeno = ?";
	}	
}

model:

<?php
//DB.class.php

class Db 
{ 
  private $conn;
  private $host, $user, $pass, $name;
  function __construct()
  {
	 $this->host = "blah";
	 $this->user = "blahh"; 
	 $this->pass = "blahhh";
	 $this->name = "blahhhh";
      $options=array(
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
		 PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
      );
     $this->conn= @new PDO("mysql:host=".$this->host.";dbname=".$this->name."",$this->user, $this->pass, $this->options);
    //$this->spojeni= @new PDO("mysql:host=$host",$user,$pass,$options);
  } 
function query($query, $value= array()){
      $navrat=$this->conn->prepare($query);
      $navrat->execute(array($value));
     return $navrat->fetch();
  }

nechci se s tebou dohadovat o tom jestli se kontroler dotazuje nebo rozkazuje , do databaze se zasilaji dotazy

luboš
PHP › oop mvc extends
31. 8. 2015   #204645

#2 ondrej39

Já samozřejmně mám modely a v nich pripojeni k db a dalsi veci , ta metoda dbcon()  v abstract defaultcontrolleru jen vytvori objekt a pres nej si do controleru taham data např, v registruj controller potřebuji

overit jestli je již jmeno v databazi, tak to udelam takto


$this->objRegistration = new Registruj;//jen objekt pro nacteni prikazu do db
$this->query[1] = $this->objRegistration->searchUser();//dotaz pro db v metode searchuser()
$this->resultName = parent::dbCon()->query($this->query[1],$_POST["name"]) ;//vysledek

pres objRegistration v registrujController nactu prikaz pro wraper, ten prikaz je ulozen v navratovy hodnote metody searchUser() a v resultName mam jiz natazena data z modelu,

ve zkratce je to tak že v registruj kontroluju data od uzivatele které třeba porovnávám v db a v protectoru už data neřeším ale zjištuji třeba jestli nepřišel příkaz ze sítě TOR nebo jestli mi někdo nepodstrkuje přes adresu nejaky hnůj nebo jestli nejde již o 3 pokus  odeslani formuláře a to si ukládám do databáze takze v protectoru taky potrebuju využít metodu dbcon() z té abstraktni třídy, teď mně tak napadá že ta metoda by měla mít spíš název objDB než dbCon, tak se omlouvám za matení.

Mně teď spíš nejvíc zajímá jestli si každý objekt který přistupuje k Db nevytvoří svoje vlastní spojení , to by třeba při deseti objektech došlo k vytvoření deseti spojení? to by pak bylo dost náročný na výkon.

luboš
PHP › oop mvc extends
31. 8. 2015   #204637

Ahoj potřebuju osvětlit problém s přístupem do cizí třídy k private metodě,
 vlastně se to týká vícenásobné dědičnosti, mám hlavní abstraktní třídu ze které dědí ostatní třídy, v této třídě je třeba mtoda pro připojení k DataBázi apod. pokud nějaký kontroler potřebuje připojení tak si z abstraktní třídy podědí a jeto jenže ten kontroler potřebuje zároveň dědit z kontroleru ve kterém jsou metody zajišťující bezpečnost aplikace např. generování tokenů pro heslo nebo pro formuláře - vícenásobná dedičnost v php není tak jsem to vyřešil tak že jsem vytvořil vstupní metodu public která potom volá metody které jsou private.

i když ne přímo ale asi porušuju zapouzdření


 
//soubor DefaultController.php
<?php
abstract class DefaultController
{
abstract function process(//blah){//blah;}
	
	 //pripojeni k db
	 protected function dbCon()
	{
	 return $this->objDb = new Db;//pripojeni k db	 
	}
}

//soubor RouterController.php
<?php
final class RouterController extends DefaultController 
{
//blah
//blah
public function process(//blah)
{
$objRegistruj = new RegistrujController;
$objRegistruj->process(//blah);
}
//blah
//blah
//blah
}

//soubor RegistrujController.php
<?php
final class RegistrujController extends DefaultController
{
//blah
//blah
// generovani tokenu pro pwd
public function process(//blah)
{
$this->objProtector = new ProtectorController;
$this->token = $this->objProtector->process("tokenizer");
}
}

//soubor ProtectorController.php
<?php
final class ProtectorController extends DefaultController 
{
//blah
//blah
  public function process($protectorMethodName)
         {
         return $this->protectorMethod = $this->$protectorMethodName();
	 }
  private function tokenizer()
	{
	$this->tokenRandNum = mt_rand(1, 1000000).chr(rand(97,122));	
        }
}

důležitý je přístup z registruj do protector přes metodu process k privatni metode tokenizer.

Sice to funguje ale nevím jestl ito je dobrý přístup a pokud špatný tak jaký je ten dobrý?? předem dík za rady

lubos
MySQL › vytvoření db scriptem
15. 7. 2015   #203619

#7 Kit
dík za odpovědi ale asi neprozradis kde? vid? :-)

lubos
MySQL › vytvoření db scriptem
14. 7. 2015   #203611

#4 lubos
jinak , zkoušel jsem tvoje řešení a všechny vytvorily DB bez apostrofu , ale já bych to přeci jen chtěl s využitím PDO prepare() .

lubos
MySQL › vytvoření db scriptem
14. 7. 2015   #203610

#3 Kit
Dík za odpověď , jsem rád že mi odpovídáš zrovna ty ,já se totiž snažím vytvořit DB pomocí PDO prepare() z tvého návodu na itnetwork - http://www.itnetwork.cz/…-a-modularne, a právě protože to chci zkusit pomocí prepare() tak tam mám ten otazník za který chci dosadit název DB lubos. Jak by to vypadal kód pro vytvoření DB v tvém PDO tutoriálu předem dík.

lubos
MySQL › vytvoření db scriptem
13. 7. 2015   #203597

#1 lubos
ještě doplním mysql ver. 5.5

pripojovaci kod

class Install 
{
  private $spojeni;
  public $obsah;
  function __construct($host,$user,$pass,$name){
    $options=array(
     PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
      );
    $this->spojeni= @new PDO("mysql:host=$host;dbname=$name",$user,$pass,$options);
...
...
...
lubos
MySQL › vytvoření db scriptem
13. 7. 2015   #203596

Ahoj , když vytvořím databázi v admineru ručně tak se k ní scriptem vpohodě připojím ,ale když ji vytvořím scriptem tu DB tak se nepřipojím - chyba unknown database-, všiml jsem si rozdílu , když ji tvořím ručně tak se DB jmenuje lubos ale když ji vytvořím scriptem tak se jmenuje 'lubos' jde o ty apostrofy zde přikládám kod:

$query = "CREATE DATABASE `?` CHARACTER SET `utf8` COLLATE `utf8_czech_ci`"; 
$value ="lubos";
...

popis chyby :

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1049] Unknown database 'lubos'' in C:\Complex-Web-Server\www\model\,...

Také jsem si všiml že pokud mám databazi 'lubos' s apostrofama tak mužu ručně vytvořit databazi lubos bez uvozovek a nehodí to žádnou chybu , jde o různé databaze - má otázka je jak zabráním tomu aby se mi při vytváření DB scriptem nevnucovaly ty apostrofy, předem dík

luboš
PHP › smerovani z index do slozek
18. 6. 2015   #203085

#17 peter

to jak bych to osetril mi nedělá takový starosti jako to, že nikdo z vás mi nedokáže odpovědět na to jak se řeší situace když se nemůžeš spolehnout na htaccess, session a javascript, buď na to kašlete nebo to taky neumíte :-),

já jsem kolem toho strávil dohromady 7 poctivychích dní a na něco málo jsem přišel ale jsou to řešení tak nějak přes ruku , zatím jsem rozumný řešení od nikoho nečetl takže se domnívám že se to rozumně prostě vyřešit nedá?.

luboš
PHP › smerovani z index do slozek
17. 6. 2015   #203037

tak jsem vyřešil ten problém s odchycením toho na který odkaz uzivatel kliknul a jakou stránku chce navštívit

if (isset($_GET["kontakty"])){
	  include_once('kontakty');
  }
<a href="index.php?kontakty=kontakty">kontakty</a><br>

ovšem přijde mi to dost náchylný na podvrhnutí cizího obsahu když zadám adresu zároveň s hodnotou?.

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202999

jak už psal Yuhů, Dušan Janovský "je to jev řídký ale je"

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202998

je to jen teoretická situace kdyby zamnou přišel někdo a řek chci stránky na svůj server kde mám apache a nechci mít zapnutý modrewrite nechci spolehat na session ani na JS, ajk se taková situace řeší když za mnou někdo přijde a chce jen kódy a ne hosting??

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202997

moc nettovskýmu routování nerozumím nejsem profík :-(

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202995

jak jsem psal již přdedtím nette prý něco takovýho má ,že i když není povolený mod rewrite tak i tak funguje routování aspoň to tak psal Jakub Vrána někde na svých stránkách.

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202994

já se tomu htaccess vůbec nebráním ba naopak, jen chci vyřešit situaci kdy nemám htaccess ani session ani JS ,chci přijít nato jaký jsou jiný možnosti jak přenášet a uchovávat data a jak bez htaccess udržet cool url.

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202990

To je docela vychytralý zkusím nad tím ještě pouvažovat, to co píšeš bude asi jediná cesta, jen mně zaráží jak je programátor bez htaccess, session, a JS úplně bezradnej, zbydou mu jen POSTy a GETy,

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202987

#5 luboš
pardon měl jsem ty tagy vložit jako kód. 

<a href="kontakty.php">kontakty</a>
luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202986

mně teď napadlo jedině odchitit alespoň submit a form podle nich nasměrovat na případný script/email něco jako:

<form name="email-kontakty" method="post" action="index.php">
<input type="text" name="jmeno" maxlenght="30">Jméno <br>
<input type="submit" name="odeslat" value="Odešli">
</form>

<?php
if(isset($_POST['odeslat'], $_POST['email-kontakty'])  ) {
include_once("script/email.php")
}
?>

ale zase nevim jak bych vyřešil  kdyby uživatel kliknul přímo na odkaz <a rel="nofollow" href="kontakty.php">kontakty</a>  v tomhle případě submit ani form neodchitim??

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202980

#2 PiranhaGreg
tak na javascript jsem uplne zapomněl ale to je to samý jako session , to si uzivatel taky může vypnout stejně tak na každým hostingu taky není vždy povolen htaccess proto potřebuju zjistit jaký je jiný řešení když se nedá na to základní spolehnout ,ale přece jen to nějak musí jít abych uživateli pustil vstup jen na ROOT do indexu a hloběji do složek by už nesměl?

luboš
PHP › smerovani z index do slozek
16. 6. 2015   #202969

Mám dotaz, jak směrovat všechny dotazy na index.php a odtamtud teprve do příslušných adresářů bez použití htaccess?. Chtěl bych používat jen index.php a ten index.php plnit sadou různých obsahů, např třeba by uživatel chtěl vidět aktuality tak by na indexu klik na odkaz aktuality.php a v indexu by se mu zobrazila sada textů pro aktuality nebo na indexu by klikl uživatel na odkaz kontakty.php a v index.php by se mu objevila celá sada určená pro zobrazení kontaktů když na něm bude formulář na odeslání emailu tak po vyplnění a odeslání na server by požadavek přišel do index.php ,

ten index.php by nějak poznal že uživatel chce odeslat email a že je aktuálně na stránce kontaky.php poté by nasměroval dotaz do složky scripty/email.php a pak by po odeslání emailu vrátilna index.php  nějakou hlášku že je vše v pořádku .ten index by se naplnil opět obsahem kontaktů a tou hláškou a bylo by to.

Nneí mi jasný jak by to měl index.php poznat že má uživatel aktualně zobrazenou sadu pro kontakty a že v tý sadě pro kontakty vyplnil a odeslal formulář , a kevšemu aby index poznal že to odeslal Karel  a ne Standa . Jde mi o to aby když z indexu přijde jakýkoliv požadavek aby index rozpoznal kdo to poslal na jaké je stránce(jaký je aktuální obsah) co chce provést a když tohle vše zvládne tak aby poslal správný obsah správnému uživateli zkusím ukázat na příkladu

 toto je index.php

<?php session_start; ?>
<html lang="cs">
<head>
 <meta charset="utf-8">
 <link rel='stylesheet' href='style-email.css'>
 <link rel='stylesheet' href='style.css'> 
</head>


 <h1>email</h1>
<form  action="scripty/email.php" method="post"> 
<input type="text" name="to" placeholder="email příjemce" required value="whiterabbit1@seznam.cz"><br>
<input type="text" name="from" placeholder="email odesílatele" required value="aionff@seznam.cz"><br>
<input type="text" name="subject" placeholder="předmět emailu" value="nadpis emailu"><br>
<textarea name="message" id="example-one" cols="30" rows="5" placeholder="text emailu" required>nejaky text emailu</textarea><br>
<input type="submit" value="odeslat">
</form>   
</html>

z index.php jde požadavek na odeslání emailu do scripty/email.php. Všechny scripty chci mít bokem od indexu ve složce scripty proto ten action míří do scripty/email.php

zde je kód ve scripty/email.php

$_POST['message'] = wordwrap($_POST['message'], 70, "<br>\r\n");
          $_POST['message'] ='<b><i><span style="color: green">'.$_POST['message'].'</span></i></b>'; 
      
    mail($_POST['to'], $_POST['subject'], $_POST['message']);

tady se odešle email a teď potřebuji Karlovi poslat na index.php zpět původní sadu obsahu pro kontakty

a ještě hlášku -

Karle je to dobrý odeslalo se to,

Přesměroval bych ho asi takto  header(location:../index.php),

Podle přihlášení a ip adresy a user agenta zjistím že se jedná o Karla, to bych věděl, ale nevím, že karel poslal email ze sady pro kontakty protože nevím jak tuto informaci zachitit od uživatele, tak nevím  který obsah mu mám vrátit a nevím jak ten obsah naplnit.

Protože takových formulářů na odeslání emailu můžu mít víc v různých sadách třeba kromě kontaktů i v sadě objednat.php ,kde se objednávka také posílá na email ,tak je jasné  že podle typu formuláře nelze zjistit ze které sady dotaz přišel .Napad mně nápad, že bych ty informace zapsal do databáze a index by si vždy načítal informace z databáze z jednoho místa

ale problém je vtom že pokud Karel udělá nějakou akci na serveru tak se uloží do DB a zobrazí se Karlovi jenže když hned po karlovi přijde na stránky cizí uživatel tak se mu zobrazí Karlovo data protože index čerpá obsah ze stejného úložiště ,

pak je tedy nejrozumnější informovat index.php aby načítal informace pokaždé pro jednoho určitého uživatele tedy buď pro neznámého návštěvníka a nebo pro konkrétního uživatele ale nevím jak po odeslání emailu a po přesměrování pomocí header(location"../index.php) to tomu indexu sdělit, mohl bych muto poslat třeba v url pomocí header(location:../index.php?a= $id-uzivatele) ale to url už nebude cool a na session se taky nechci  spoléhat jediná cesta je přes uloženi do DB ale to zas nevím jak to indexu oznámit.
Zkrátka přes htaccess , session ani přes url to nechci posílat chci to zajistit přes databázi. Potřebuji

říct indexu- zjisti kdo  poslal pozadavek ,z jaké sady obsahů to přišlo,jakou akci chce provést , tu akci proveď ,zajdi do DB pro správnou sadu toho tazatele tu sadu mu vypiš i s hláškou jestli se akce povedla.

já si stím lámu hlavu už dva dny a nvím co s tím , jak udělat web jen na index.php a na databázi . V nette to prý jde i bez htaccess ale když jsem na to koukal tak jsem z toho nebyl dvakrát moudrej tak prosím o vaše rady

luboš
PHP › oop post od uzivatele
13. 6. 2015   #202901

ok dík za vysvětlení

luboš
PHP › oop post od uzivatele
13. 6. 2015   #202898

$data jsem pouzil jen jako příklad , a email jsem dal do třídy jen proto aby jsem se vyhnul špagetám, ovšem nerozumím tomu proč to není OOP, je to ve třídě a vytvořil jsem objekt třídy tak si myslím že to je OOP ??.

luboš
PHP › oop post od uzivatele
13. 6. 2015   #202896

Ctěl bych vědět jak správně posílat data od uživatele do třídy. Zajímá mě jak se pracuje ve třídě s $_POST["data"]. Někde jsem četl že se na tyto data nemá sahat mají se  nechat jak jsou ,tedy neprovádět s nimi akci jako : $data = $_POST["data"] ale pracovat s nimi všude v kódu jako s  $_POST["data"].

Ovšem narazil jsem na problém když jsem zkusil odeslt email s hlavčkou do které jsem zadal tyto data jako $_POST["data"] email se odeslal ale s varovaním že hlavička emailu nemohla být sestavena a když jsem to zkusil s $data tak už vše bylo v pořádku a hlavička byla odeslána.

toto je kód s $data ten funkční:

Class EmailHtml{
private $headers;
 
   public function __construct(){     
 } 
 
   public function extra_mail($to, $subject, $message, $from){
  
          $message = wordwrap($message, 70, "<br>\r\n");
          $message ='<b><i><span style="color: green">'.$message.'</span></i></b>'; 
      
          $this->headers = "From:$from.\r\n";
          $this->headers .= "Reply-To:$from\r\n";
          $this->headers .= "CC: nekdo@example.com\r\n";
          $this->headers .= "MIME-Version: 1.0\r\n";
          $this->headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
       return mail($to, $subject, $message, $this->headers);
    }    
}
    $to = $_POST['to'];
    $from = $_POST['from'];             
    $subject =$_POST['subject']; 
    $message = $_POST['message']; 
     
   $objEmail = new EmailHtml ();  
   $objEmail->extra_mail($to, $subject, $message, $from);
   
   exit;

prosím o radu jak to udělat abych nemusel používat $data a ukázku jak by to na mé=m příkladu vypadalo v praxi jak to předat do třídy a jak by to vypadalo uvnitř třídy. dík

luboš
PHP › session start
12. 6. 2015   #202893

#4 luboš
potvrzeno byl to BOM  dík

luboš
PHP › session start
12. 6. 2015   #202892

#3 Kit
tohle je script jak ho mám bezezměny

<?php session_start();
if (!isset($_COOKIE['PHPSESSID'])){
    $vysledek='session nebylo nastartovany';
    }
  if (isset($_GET["a"])){
  echo htmlspecialchars($_GET["a"]).'<br>';
  }
?> 

<html lang="cs">
<head>
 <meta charset="utf-8">
 <link rel='stylesheet' href='style-email.css'>
 <link rel='stylesheet' href='style.css'> 
</head>


 <h1>email obyč</h1>
<form  action="control/email.php" method="post"> 
<input type="text" name="to" placeholder="email příjemce" required value="whiterabbit1@seznam.cz"><br>
<input type="text" name="from" placeholder="email odesílatele" required value="aionff@seznam.cz"><br>
<input type="text" name="subject" placeholder="předmět emailu" value="nadpis emailu"><br>
<textarea name="message" id="example-one" cols="30" rows="5" placeholder="text emailu" required>nejaky text emailu</textarea><br>
<input type="submit" value="odeslat">
</form>   
</html>

je vidět že tam nemám žádný výstup ale přesto to hlásí pořád chybu takže zbývá jedině ten BOM ,používám PSpad a zjistil jsem že na to pspad má vliv http://www.linuxsoft.cz/article.php?… takže dík za nakopnutí

luboš
PHP › session start
12. 6. 2015   #202890

#1 luboš
oprava -" vytvořit " je správně

luboš
PHP › session start
12. 6. 2015   #202889

Mám problém s nastartováním session.Chci aby kazdý kdo přijde na jakoukoli mou stránku měl svoje session.

Ovšem nefunguje to pokud na stránku prijde někdo úplně nový kterému se má session teprve vitvořit. Dělám to tak že na každé stránce ověřím jestli už existuje $_COOKIE['PHPSESSID'] a pokud ne tak nastartuju session.

<?php if (!isset($_COOKIE['PHPSESSID'])){
         session_start();
         $vysledek='session nebylo nastartovany';
      }
       else{
       $vysledek='session uz bezelo';
       }
      //zachyceni chyby z jine stranky
      if (isset($_GET["a"])){
        echo htmlspecialchars($_GET["a"]).'<br> <br>';
      }
?> 

chybová hláška je zde:

Warning: session_start() [function.session-start.html]: Cannot send session cookie - headers already sent by (output started at C:\Complex-Web-Server-2\www\index.php:1) in C:\Complex-Web-Server-2\www\index.php on line 1

Píše to že nelze odeslat cookie - hlavičky už byly odeslány....

ty hlavičky nechápu kde se vzaly , měl jsem za to že při návštěvě stránky se odešlou $_SERVER a ne header() ledaže bych ty header() přímo zadal do skriptu já sám např header('location: index.php')???.

Vím že session_start má být hned na začátku před jakýmkoli výstupem ale ja v mém kódu žádný výstup nevidím. Předem dík za rady.

PHP › php router
2. 6. 2015   #202624

#9 Kit
dík tomuhle výkladu jsem porozumněl dobře

#5 Kit

PHP › php router
2. 6. 2015   #202620
PHP › php router
2. 6. 2015   #202619

#5 Kit
no vidíš a přesně toho se měl týkat můj druhý dotaz na to jestli je běžné mít jen index.php a nic jiného a odkazovat jen na něj ,mám takový pocit že takhle to má netteframevork, že používá jen index ale nestudoval jsem ho, a taky jsem se chtěl zeptat když posílám z formuláře vše METODOU POST tak URL vypadá hezky , tak si myslím že je lepší používat jen METHOD POST a url bude friendly a nemusím řešit hezký url přes router?.Jinak jsem měl namysli tento router http://www.itnetwork.cz/…merovac.Mohl by jsi mi prosím tě popsat tvůj postup přeměrováni na index ?

#5 Kit

PHP › php router
30. 5. 2015   #202574

Moje otázka je, k čemu je dobrý PHP Router?. Chtěl bych podrobný popis toho, jak funguje a jakou má zodpovědnost?. Je to jen rozparsování URI  pro zjištění kde se má dotaz od uživatele zpracovat? nebo to má hlubší význam?. Jsou nějaké postupy které je dobré dodržovat při programování Routeru, co v něm nesmí chybět?.Předem dík za odpovědi.

Lubošek
PHP › oop vlastnosti promenne
8. 5. 2015   #202032

#10 Kit
dík moc za rady

Lubošek
PHP › oop vlastnosti promenne
8. 5. 2015   #202027

#8 Kit
díky moc tvoje  ukázka je mi jasná a funguje už jsem rozchodil i tu svoji ukázku .

Teď mám ještě poslední , spíše teoretický dotaz : co se správně má v konstruktoru odehrávat z příkladu je jasné že z venku přijde číslo 42 a tím číslem se naplní vlastnost $this->vevnitr a pak se s ní pracuje dál v metodě přičti, tzn. že se inicializovala vlastnost třídy což je účelem konstruktoru, ale když si psal že v konstruktoru slušný programátor inicializuje max 4 vlastnosti tak jak se pak postupuje dál když potřebuji inicializovat více vlastností , např. odeslání emailu - z venku přijde - from , to , subject, message, attachment,.... jak se má pak postupovat? předem dík

Lubošek
PHP › oop vlastnosti promenne
8. 5. 2015   #202016

nepomůže ani když pošlu proměnnou do třídy takto:

$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ($zvenku);  
echo $objScitani->secti()


mám verzi PHP 5.4.5 jestli to pomůže?.

Lubošek
PHP › oop vlastnosti promenne
8. 5. 2015   #202015

#5 Kit
mohl by jsi mi  prosím tě ukázat nebo jen napsat jak správně zacházet s vlastnostma třídy a jak s proměnnýma ?

jak posílat proměnné do třídy jak zacházet s konstruktorem?

tato verze mi nefunguje sice nehlásí chybu ale taky mi nic nepřičte (nic se nezobrazí)?.

Nejde mi o to rozběhnout tenhle kód ale o to abych to pochopil jak to dělat správně .předem dík 

Class Scitani{

private $vevnitr;
private $secteno;

 
   public function __construct($zvenku){    
          $this->zvenku = $zvenku;
          
 } 
 
   public function secti(){
          $this->vevnitr = 1;
          $this->secteno = $this->vevnitr + $this->zvenku;
          
          return $this->secteno;
    }    
}
$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ();  
echo $objScitani->secti($zvenku);
Lubošek
PHP › oop vlastnosti promenne
8. 5. 2015   #202008

 

dík za ten __construct ale proč nemůžu v konstruktoru nastavit třeba 20 vlastností nebo 20 promenných???

 

Lubošek
PHP › oop vlastnosti promenne
7. 5. 2015   #202006

pardon za ten druhý kód tady je ještě jednou čitelnější

<?php 

Class Scitani{

private $vevnitr;
private $secteno;

 
   public function construct__($vevnitr, $secteno){    
          $this->vevnitr = $vevnitr;
          $this->secteno = $secteno;
 } 
 
   public function secti($zvenku){
          $this->vevnitr = 1;
          $this->secteno = $this->vevnitr + $zvenku;
          
          return $this->secteno;
    }    
}
$zvenku = $_POST['zvenku'];
//neco co zvenku poslu dovnitr do tridy
$objScitani = new Scitani ();  
echo $objScitani->secti($zvenku);
?>

taky pardon za ten neukončený příkaz v prvním nefunkčním kódu v metodě secti()

Lubošek
PHP › oop vlastnosti promenne
7. 5. 2015   #202005

Zdravím všechny, mám dotaz na posílání promenných do třídy. já bych chtěl poslat promennou $zvenku do třídy do konstruktoru , tam ji nastavit na this->zvenku a pak ji sečíst v metodě secti() s vlastností $vevnitr

Class Scitani{

private $vevnitr;
private $secteno;
public  $zvenku;
 
   public function construct__($zvenku, $vevnitr, $secteno){  
          $this->zvenku = $zvenku;
          $this->vevnitr = $vevnitr;
          $this->secteno = $secteno;
 } 
 
   public function secti(){
          $this->vevnitr = 1
          $this->secteno = $this->vevnitr + $this->zvenku;
          
          return $this->secteno;
    }    
}

//neco co zvenku poslu dovnitr do tridy
$zvenku = $_POST['zvenku'];
$objScitani = new Scitani ($zvenku);  
echo $objScitani->secti();


ale zkrátka pokud do třídy pošlu něco zvenku tak to vyhodí chybu

Parse error: syntax error, unexpected '$this' (T_VARIABLE) in C:.........

neočekávaný $this na radku 16.

proč mi ta třída nebere data zvenku který pošlu přes objekt?

Mám zato že je slušnost všechny data co jdou do třídy nastavit v konstruktoru a pak s nima dál pracovat

v metodách?.

funguje to jen  takto:

Class Scitani{

private $vevnitr; private $secteno;

     public function construct__($vevnitr, $secteno){               $this->vevnitr = $vevnitr;           $this->secteno = $secteno;  }      public function secti($zvenku){           $this->vevnitr = 1;           $this->secteno = $this->vevnitr + $zvenku;                      return $this->secteno;     }     } $zvenku = $_POST['zvenku']; //neco co zvenku poslu dovnitr do tridy $objScitani = new Scitani ();   echo $objScitani->secti($zvenku);

Já bych si to představoval tak že , vlastnosti (vevnitř třídy) i proměnné (zvenku od uzivatele) inicializuji v

konstruktoru a pak s nimi už pracuju dál v metodách jako s $this->vlastnost a $this->promenna  a taky bych do třídy posílal proměnné jako $objScitani = new Scitani ($zvenku);  a ne $objScitani->secti($zvenku);.

 nevím jak to mám dělat správně? prosím o radu .Předem děkuji

 

 

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