Jump to content
GSForum - Segélyvonal

PHP kérdésem van


Recommended Posts

Posted

Az admin felületen pont így csinálom. Le van rakva egy táblába, hogy az egyes admin oldalakhoz milyen szintű admin csókák férhetnek hozzá, az oldal töltésénél azzal kezdem, hogy ellenőrzöm, megnézheti-e ez az admin az oldalt, ha igen, hajrá, ha nem, akkor index.php.

 

 

 

Illetve felvetném még azt a költői kérdést, hogy egy kezdő PHP-snak miért kell szakdolgozatot írnia? Rosszul gondolom, hogy szakdolgozatot annak kéne írnia, aki már túl van több év tanuláson, gyakorlatot szerzett stb.?

 

A fenti kód láttán többször sírva fakadtam. Ha én lennék tanár, rossz világ volna. :hááát:

 

Egyébként a fenti kódban semmi nem utal arra, hogy bárki meghívná az indexet id paraméterrel, úgyhogy a fentiekből nehéz kideríteni, hogy mitől hasal el pont ott. Illetve ott biztos nem hasal el, lévén az id paraméter alapján akarja behívni az oldalrészt, és nem is a 40. sora a PHP fájlnak, egyébként minden stimmel. :) A lapozás a page paramétert használja.

 

else{echo "<a href=\"$_SERVER[SCRIPT_NAME]?page=$i\">".($i+1)."</a>\n";}

  • 3 weeks later...
Posted

Mi a megoldás a többnyelvûsítésre? A lehetõ legjobb megoldás kellene, ami elég korszerû meg idõtálló kódfejleszthetõség és nyelvbõvítés szempontjából.

Posted

A zen cart boltmotorban úgy van megoldva, hogy nyelvenként külön könyvtárban minden oldalnak van egy nyelvi fájlja, amiben

 

define('BUTTON_TEXT_FINALIZE_ORDER', 'Nyomd meg a gombot');

rendszerben vannak a fordítások, a template fájlokban pedig a konstansok (BUTTON_TEXT_FINALIZE_ORDER) szerepelnek. Az oldal betöltõdéskor megállapítja, hogy melyik nyelven kell megjelennie és abból a könyvtárból olvassa be a konstansokat definiáló nyelvi file-t.

 

 

Posted

Ez define()-os dolog nem lenne lassú? :bizonytalan: Bár kb. gyorsabb, mint pl. XML-bõl parse-olni. :) És az is biztos, hogy ehhez lenne kódkiegészítés-támogatás.

 

SQL-lel hogy menne ez? Lekérem a "feliratokat" az adott nyelvhez, aztán pedig ugyanúgy define()? Vagy más? Kelleni fog SQL-es dolog is egy másik projecthez, azért is kérdezem (olyasmi helyzetbe, mint egy webshop terméktulajdonságai + a hozzájuk tartozó magyarázószöveg).

Posted

MySQL-ben így megy:

 

Van egy nyelvtábla (id, nyelv neve, stb.), illetve vannak az olyan fő táblák, mint termékek, kategóriák stb. Utóbbiakban nincs olyan szöveges adat egyáltalán, amely a különböző nyelveken eltérő lehet, hanem ezek külön táblába vannak száműzve (products_description, categories_description). Például:

 

CREATE TABLE IF NOT EXISTS `categories_description` (
  `categories_id` int(11) NOT NULL default '0',
  `language_id` int(11) NOT NULL default '1',
  `categories_name` varchar(32) collate latin2_hungarian_ci NOT NULL default '',
  `categories_description` text collate latin2_hungarian_ci NOT NULL,
  PRIMARY KEY  (`categories_id`,`language_id`),
  KEY `idx_categories_name_zen` (`categories_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin2 COLLATE=latin2_hungarian_ci;

categories_id azonosítja a kategóriát, language_id azonosítja a nyelvet, így a kategóriákat többféle nyelven is felviheted.

 

A bolt első alkalommal kitalálja, hogy a delikvens milyen néven szeretné látni az oldalt, berakja a $_SESSION-be az id-t, és aztán a lekérdezésekben azt pakolja a language_id feltételeként. Ok ez így?

 

A define-nal nem a sebesség a gond, hanem hogy nehézkessé teszi a fejlesztést, illetve nehéz karbantartani. Szerintem a nyelvi fájljaink konstansainak kb. felét nem használjuk, feleslegesen töltődnek be, feleslegesen foglalják a memóriát. Ezt csodálatosan ki lehetne szűrni az xdebuggal, ha rá tudnám venni a kecsege szolgáltatót, hogy tegye fel a szerverre. :-P Majd egyszer lokálban megcsinálom...

Posted

Világos. :istenvagy:

 

Azt hiszem, a 2 megoldás keverése lesz az igazi megoldás. :)

Posted

Végül is a Zen Cartban is keverve van. :) Válaszoltam a PÜ-re is.

Posted

Én személy szerint globális változókba írom azt, amit fentebb említettek define()-al, utána pedig egy egyszerû függvénnyel lehet az indexet megadva "lekérni". Nem igen szerkesztõbarát, bár rajtam kívül még nem használták :D

Posted

Nemcsak hogy nem szerkesztõbarát, de erre vannak a konstansok a programnyelvekben. ;)

[OP]Destroy-man
Posted
Az utobbi egy hónap bejegyzéseit visszaolvasva megnyugodtam, hogy én az asp.net-et választottam a php helyett. Ott mindent sokkal egyszerübben lehet megvalósítani, mint PHP-ben, mivel ezek már mind ki vannak dolgozva benne, csak használni kell. Nem kell foglalkozni a felhasználók kezelésésével, a hozzátartozó jogaival (csak be kell állítani őket), több nyelvű oldal esetén pedig van lehetőség nyelvi fájlokat létrehoznia, amit akár magátol is kezel a gép.
Posted

@Balázs: Ez igaz, viszont nekem egyszerûbb, és kézreesõbb kiírni azt, hogy l(80), mint hogy BUTTON_TEXT_FINALIZE_ORDER :P

Posted

Gyanítom nem használsz, olyan szerkesztõt, amiben lenne kódkiegészítõ. Neked csak el kell kezdened gépelned, hogy BUTTON_ --> ki is választhatod. :)

Posted
Destroy-man' date='2011. április 20. 0:16' post='435442']Ott mindent sokkal egyszerübben lehet megvalósítani, mint PHP-ben, mivel ezek már mind ki vannak dolgozva benne, csak használni kell.

Bocs, de ez így, ebben a formában nettó hülyeség. Almát hasonlítasz a körtével. Egyik programozási nyelvben sincs felhasználók kezelése vagy többnyelvûség, nem erre való, hanem programozásra. Amirõl te beszélsz, az már az adott programnyelvben vagy programnyelvhez megírt framework. PHP-hez készült frameworkökbõl Dunát lehet rekeszteni, annyi van.

Posted

Én most tanulok ASP-t, és nem sokkal jobb, mint a natív PHP. Ha ezek után szembeállítom egy PHP-s keretrendszerrel, mondjuk a CodeIgniter-rel, ami még nem is egy csúcs darab, akkor elbújhat. :hááát:

Posted

Oké, ne robbantsunk ki PHP kontra ASP / .NET véleményháborút, mert idejönnek a Ruby on Railsesek és körberöhögnek minket. ;)

Posted

Megjegyezném, hog én használtam olyan többnyelvűsítőt, hogy egy php-ban volt minden fordítás.

 

<?php

$lang = array (

'fooldal' => "Főoldal",
'belepes' => "Belépés",
'kilepes' => "Kilépés",
'regisztracio' => "Regisztráció",
'jelszoemlekezteto' => "Elfelejtett jelszó",

'vege' => "Vége"
);
?>

És ezt így írtam ki:

<?php
  if(isset($_GET['lang'])){
      $_SESSION['lang'] = $_GET['lang'];
    }
  
  if(!isset($_SESSION['lang'])){
      $_SESSION['lang'] = "hun";
    
  }
  
  include ('lang/'.$_SESSION['lang'].'.php');
  
  echo $lang['fooldal'];
?>

[OP]Destroy-man
Posted

@KGigi: ASP-t avagy ASP.NET-et (szokták még ASPX-nek is hívni) tanulsz? Mert a kettõ nem ugyanaz. Én az összehasonlítást úgy értettem, hogy feltelepíted a gépedre az ASP.NET-hez és a PHP-hez való való fordítókat, és fejlesztõeszközöket (mindenféle keretrendszer nélkül), és így hasonlítod össze a kettõ tudását. Vagy az ASP.NET-ben lévõ dolgokat már keretrendszernek kéne venni? Szerintem az még nem az. És most nem az MVC-rõl, vagy hasonló dolgokról beszélek, hanem egy alap (üres) projectrõl. A másik jó tulajdonsága számomra, hogy a kód és a "html" két külön fájlban van (beállítás kérdése), így átláthatóbb lesz a kód is.

Posted

Egy alap, üres projektbe hogyan kerülnek felhasználók? :)

 

@Kiskalóz:

 

if(isset($_GET['lang'])){
      $_SESSION['lang'] = $_GET['lang'];
}
  
if(!isset($_SESSION['lang'])){
      $_SESSION['lang'] = "hun";
}

Önmagában nincs vele gond, de azért ne menjünk el amellett, hogy a PHP-ban létezik az if-else szerkezet, amit épp az ilyen esetekre találtak ki. Tehát a fenti kód mondjuk nézhetne ki így:

 

if(isset($_GET['lang'])) {
      $_SESSION['lang'] = $_GET['lang'];
} else {
      $_SESSION['lang'] = "hun";
}

Vagy else nélkül akár így:

 

$_SESSION['lang'] = "hun";
if(isset($_GET['lang'])){
      $_SESSION['lang'] = $_GET['lang'];
}

Vagy if nélkül így:

 

$_SESSION['lang'] = isset($_GET['lang']) ? $_GET['lang'] : 'hun';

 

Mindegyik jobb, mint megvizsgálni egy feltételt, majd megvizsgálni annak ellentettjét is. ;)

[OP]Destroy-man
Posted

Az <asp:Login>, illetve az <asp:CreateUserWizard> controllerek segítségével jönnek létre a legkönnyebben. Ha nem tetszik az elrenrendézese a formoknak, akkor módosíthatod a formot. Ez a két kontroller egyébként nem más, mint egy sima ASP-s form. Deha szeretnéd kikerülni a controllerek használatát, akkor ASP-s TextBoxokbol magad is felépíthetsz egy bejelentkezési vagy regisztrációs formot, aminek a mûködését CodeBehindba megírt kóddal tudod megoldani, de sessionokkal itt sem kell foglalkoznod, mert a felhasználok kezeléséért szolgáló függvény ezt is tartalmazza (magátol végzi). Utobbi esetben az adatbázist (ha még nem lenne), az elsõ felhasználó létrehozásakkor hozza létre a server, és állítja be a hozzá való kapcsolódási adatokat is, amit egyébként a web.config fájlban fogsz megtalálni. Jogosultságokat egy elõre megírt webes felületen tudod létrehozni/hozzáadni az egyes felhasználokhoz. Természetessen ezt is meg lehet valósítani saját erõforrásbol is, nem muszály használni a gyári rendszert.

Posted

Igen, de én továbbra is azt mondom, hogy ez nem a programozási nyelv része. Ez egy komponens, amit kifejlesztettek hozzá.

 

Ott a PHPClasses.org, kismillió megírt, szabadon felhasználható komponens. De ugyanígy mondhatom megint a Frameworköket. Nem okvetlenül kell rögtön egy komplett MVC-s webalkalmazásra gondolni, egyes részüket (például egy felhasználókezelő modult) is lehet önállóan használni.

 

Annyi a különbség, hogy a te esetedben ezt alád tolja a Microsoft a fejlesztőkörnyezettel együtt. A PHP esetében meg -- mivel nem egy cég áll mögötte -- hanem egy közösség, a közösség tolja ki magából a tartalmat, amit jobbára szabadon felhasználhatsz. De ha nagyon akarom, mondhatom azt, hogy a PHP készítő leteszik az asztalra a Zend frameworköt és a Zend Studiót, a kettő együtt pedig már egy elég jó nagy tudású csomag kismillió komponenssel.

 

Tehát ilyen jellegű különbség nincs a kettő között. Ha már mindenáron különbséget akarunk keresni, akkor felhozhatjuk példának, hogy a Visual Studio, mint IDE, nagyon jó, ráadásul, ha jól tudom, a Microsoft most ingyen tolja mindenki alá. Hasonló jó IDE-k vagy nincsenek PHP-hez, vagy súlyosan fizetősek. (Az Eclipse talán kivétel, a fene tudja. Minden, ami Javában van írva, arra ferdén nézek.)

Posted

@[OP]Destroy-man

ASP.NET-et tanulok. Amiket mondasz, az a .NET keretrendszer része. Erre épül az egész ASP, arra lett kitalálva, hogy webes felület mögött is lehessen C#/F#/VB kód.

[OP]Destroy-man
Posted

Viszont .NET nélkül nincs ASP.NET sem. ;) Én ezért is vettem szerves részének.

 

Igen, az MS most tényleg ingyen adja az összes fejleszetõ eszközét, sõt még a Win Server 2008 és 2008 R2-t, és az SQL Server 2008-at is ingyen adják. Ráadásul mennyiségi licencben. Ki is használtam. :)

 

Posted

3 évre, ezt azért tegyük hozzá.

Posted

PHP-ra Eclipse-t használok, nem rossz, de vannak hülyeségei. A mai mutatványai között van, hogy a $this-t nem színezte, illetve nem ismerte fel az implode(), explode() (és még más) függvényeket. :hááát:

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...