WebPillangó főoldal
Oldalak: 1 ... 25 26 [27] 28 29   Le
  Nyomtatás  
Szerző Téma: PHP  (Megtekintve 202097 alkalommal)
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #520 Dátum: 2011. 02. 08. - 16:05:20 »

Közben mert nem tudtam nyugodni kiderítettem az egyik hiba okát. A logint azért nem végezte el mert nem használom az IE-t és magasabbra vettem egyel a biztonsági szintet így a sessiont nem írta vagy ilyesmi, vissza tettem alapra és így tökéletes. Hogy mik vannak  Mosolyog.

Viszont az IE6-os rewrite_rule még mindig kérdéses, bemásolom alább a kódot illetve kis leírást a folyamatról ha véleményeznéd megköszönném.

Az index.php fájlban ami kapja a request uri-t és tovább adja az osztálynak:
Kód:
/**
 * Retrieve a URI instance
 *
 */
require 'libraries' . DS . 'Uri' . EXT;

$uri = Uri::getInstance();
$uri->fragment(1) ? $request_page = $uri->fragment(1) : $request_page = './';
$uri->fragment(2) ? $request_page = '404' : FALSE;

A hozzá tartozó class a következő ami visszaadja a paramétereket:
Kód:
<?php if (!defined('DIRECT_ACCESS')) die('Restricted access');

class 
Uri
{
/**
 * @var array $fragments
 *
 */
public static $fragments = array();

/**
 * @var object $instance
 *
 */
private static $instance NULL;

/**
 *
 * Return URI instance
 *
 * @access public
 *
 * @return object
 *
 */
public static function getInstance()
{
if(is_null(self::$instance))
{
self::$instance = new Uri;
}
return self::$instance;
}

/**
 *
 * @the constructor is set to private so
 * @so nobody can create a new instance using new
 *
 */
private function __construct()
{
/*** put the string into array ***/
self::$fragments explode('/'$_SERVER['REQUEST_URI']);
}

/**
 * @get uri fragment 
 *
 * @access public
 *
 * @param string $key:The uri key
 *
 * @return string on success
 *
 * @return bool false if key is not found
 *
 */
public function fragment($key)
{
if(array_key_exists($keyself::$fragments))
{
return self::$fragments[$key];
}
return FALSE;
}

/**
 *
 * @__clone
 *
 * @access private
 *
 */
private function __clone() {}
}
// END Uri

/* End of file Uri.php */
/* Location: ./libraries/Uri.php */

A .htaccess fájlom:
Kód:
# Set the default handler #
DirectoryIndex index.php

# Start - Rewrite rules #
<IfModule mod_rewrite.c>

Options +FollowSymLinks
RewriteEngine On

RewriteBase /

# Start - Rewrite rules to block out some common exploits. #
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
# End - Rewrite rules to block out some common exploits. #

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

</IfModule>
# End - Rewrite rules #

<ifModule mod_headers.so>
<FilesMatch "\.(ico|flv|jpg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
</ifModule>

<IfModule mod_deflate.c>
<FilesMatch "\.(js|css)$">
SetOutputFilter DEFLATE
</FilesMatch>
</IfModule>

# Protect files and directories #
<FilesMatch "\.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format)$">
Order allow,deny
</FilesMatch>

# Don't show directory listings for URLs which map to a directory #
Options -Indexes

# Make handle any 404 errors #
ErrorDocument 404 /index.php

# Start - Deny access to htaccess and htpasswd files (Comment out to de-activate.) #
<Files ~ "\.ht$">
order allow,deny
deny from all
Satisfy all
</Files>
# End - Deny access to extension htaccess and htpasswd files #

# End - .htaccess rules #

Tehát a class szétbontja a dolgokat, ha nem kap semmit akkor főoldal ha kap akkor pedig az alapján egyeztetve a menüvel lekéri az oldalt.
Úgy csináltam, hogy nem az oldalhoz viszonyít hanem a menühöz és az kéri csak be az oldalt ha a menü és az oldal között talál egyezőséget ez pedig a menu_name sor és a page_name sor összehasonlítása. Ha nincs főoldal ./ ha nem jó akkor 404 ha jó meg tölti az oldalt ahol egyezik a dolog. Mindent az index.php vezérel még arra nem jöttem rá, hogy a hírek kezelést vagy termékek pl azt külön news.php és product.php végezze vagy azt is az index.php valami képen. Ugyebár -
Kód:
$uri->fragment(2) ? $request_page = '404' : FALSE;
- ez a sor adja meg ha többet ír be a drága a per után akkor automatikusan 404. De nem szól bele abba ha csak egyet.
Jobb ötletem nem volt hirtelen ennek kezelésére, de működni jól működik és itt 1 mélységnél többet nem is akarok kezelni lényegében.

Az IE6 meg azt csinálja, hogy a menüben navigálok és először mindig teljesen fehér lapot hoz, ha az frissítem behozza az oldalt de csak akkor! ha nincs benne tartalom, ha van benne szöveg pá sor akkor jó.... hmmm. Akkor ez IE hiba?

Köszönöm a kritikát, egyéb megoldási javaslatokat stb.  Kacsint
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #521 Dátum: 2011. 02. 09. - 21:19:47 »

Lenne még egy egyszerű kérdésem.
A try catch dolgot használhatom úgy pl. egy admin felületnél, hogy - mondjuk az index2.php-nél vagyunk:

Kód:
if (isset($_SESSION['notification'])
{
    echo $_SESSION['notification'];
    unset($_SESSION['notification']);
}

try
{
    php kód ami lefut (ha lefut rendben)

    $_SESSION['notification'] = 'A kód lefutott!';
    header("Location: index2.php");
}
catch (Exception $e)
{
    $_SESSION['notification'] = 'A kód nem futott le!';
    header("Location: index2.php");
}

Ez így szokványos vagy működik egyáltalán?
Csak azért kérdezem mert nem jutott eszembe olyan kód amit meg tudok "hiúsítani" a kipróbáláshoz.  Mosolyog
« Utoljára szerkesztve: 2011. 02. 09. - 21:22:43 írta spier » Naplózva
Tas
Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 35


« Válasz #522 Dátum: 2011. 02. 10. - 21:34:27 »

A mod_rewrite  dolgokhoz nem nagyon értek, ezért nem tudom, hogy abban lehet-e a hiba. Nem tudtam összerakni a kódot kipróbálni  Zavart. Nem tiszta az, hogy a $request_page változóval mi lesz, miután értéket kapott. Átirányítod az oldalt annak megfelelően? Nincs feltöltve valahova, hogy meg lehessen nézni?
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 966


WWW
« Válasz #523 Dátum: 2011. 02. 10. - 23:00:58 »

A header("Location: cim"); fejlecet ugyelj mikor kuldod ki. Elotte semmi egyeb adat nem hagyhatja el a szervert. Tovabba, vannak kiegeszito fejlecei az ujrairanyitasnak: sajnos, mint minden, ez is bongeszo fuggo. Van aminek az kell, hogy "Status: 404", van aminek "Status: 404 Not Found", de van aminek "HTTP 1/1 404 Not Found" stb.

Keress ra Google-be, hogy alljon ossze a kep, majd probald ujra Mosolyog

Sok sikert!
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #524 Dátum: 2011. 02. 11. - 01:55:32 »

@Tas
A $request_page kapja meg az Uri class által levágott részt, pl. ha a www.valami.hu/kapcsolat/ oldalt kéri be akkor a $request_page = 'kapcsolat'; stb. stb. és ezt adom át a Page class-nak ami megnézi, hogy a menüben van-e ilyen menu_name, hogy kapcsolat, ha van akkor összehasonlít a pages táblában lévő page_name-al, ha van egyezés akkor betölti az oldalt és ami benne van természetesen, minden egyéb esetben ha hoszabb az url vagy nem talál menüt vagy talál de nincs lap hozzá akkor 404 oldal.

Csinálok egy egyszerűbb kivonatot a dolgokról és tömörítve küldöm vagy linkelem, hogy csak fel kelljen másolni és adatbázist importálni.
Köszönöm!  Kacsint

@Tupacko
Értem, köszönöm. megnézem amit javasolsz/írsz. Amúgy ez a try catch használható ilyen formában? Vagy ezzel kapcsolatos, hogy nézzem át mi merre mert gubanc lehet? Mosolyog

Üdv.
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 966


WWW
« Válasz #525 Dátum: 2011. 02. 20. - 11:13:43 »

A try catch-csel nincs baj. Az ujrairanyitassal/atiranyitassal van (miert mukodik nehany bongeszoben es masokban miert nem).
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #526 Dátum: 2011. 03. 11. - 19:07:58 »

Üdv.

Hogy tudnám azt megcsinálni, hogy pl. egy webshopban egy adott termékhez több mondjuk kiegészítő is tartozik. A termekek táblában létrehozok olyan mezőt, hogy "kiegeszitok" a többi adat mellé - id, név, leírás, kép... stb. Ezek a "kiegeszitok" amiket terméktől függően szeretnék hozzáadni mondjuk a "termekek_kiegeszitok" nevű táblában vannak, van neki id, név... stb. felsorolva ami választható.
És ha adminban felsorolom a termék létrehozásakor a meglévő kiegészítőket mondjuk lehet pipálni ezekből hogy mi kerüljön az adott termékhez. Na most ugyebár nem egy kerül be hanem bekerülhet egy termékhez 10 vagy 15 ugyebár maximum annyi amennyi amenniy a "termekek_kiegeszitok" táblában fel van sorolva hogy hozzáadható egy adott termékhez.

És itt akadtam el hogy miként oldjam meg. Ugyebár csak egy mező van amibe fel kellene sorolnom mi tartozik az adott termékhez.
A felsorolás id alapján jónak tűnik például, és mondjuk ez kerülne a mezőbe, hogy 1|2|10|33|32.
Itt elakadtam mert nem jövök rá, hogy kellene megoldani ezt a fajta felvitelt.
A frontend féle megjelenítés már talán menne, arra gondoltam, hogy explode-al szétszedem a mező tartalmát ás beteszem egy tömbbe amit utána megjelenítek, és ugyebár az explode a | jel lesz, így csak a szám kerül be és már id alapján nyomathatom is ki a felsorolást mert csak az lesz tömbben.

Nem tudom valakinek esetleg ötlet, megoldás? Vagy mennyire jó úton járok esetleg rossz úton?

Köszi.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #527 Dátum: 2011. 03. 13. - 16:55:44 »

Olyan kérdésem lenne még, hogy .htaccess és mod_rewrite-al, hogy tudok átvenni $_POST adatokat? A $_GET szépen működik kezdem elsajátítani a dolgot viszont most $_POST adatok kellenének valami úton módon.

Üdv.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #528 Dátum: 2011. 03. 16. - 15:04:14 »

Nos a fent említetteket megoldottam, az elsőnél explode és implode lett a barátom, tökéletes a dolgo csak tömbbe beteszem kiveszem és végigjáratom, hibátlan.

A másodiknál simán megy a post, úgy hogy nem állítottam a htaccess-en így jónak tűnik a dolog egy QUERY-t a végére szúrok azért de anélkül is ment.

Viszont most megint van egy amit nem tudok megoldani. AJAX, PHP
Egy árat szeretnék változtatni az oldal újratöltése nélkül select mezővel vezérelve a value alapján, esett a választás AJAX-ra. Csak a value értéket a selectben 1,2,3,4 stb. szeretném változónak átadni hogy milyen árat töltsön. Sajnos az egész oldalt betölti mindig nem csak az adott value értéket adja át. Egyáltalán nem értek AJAX-hoz Szomorú, de itt a kód.

Kód:
<script type="text/javascript">
function priceChange(str) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("changed_price").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET", "cart.php?change_price="+str, true);
xmlhttp.send();
}
</script>

Kód:
<select name="product_accessories" id="product_accessories" onchange="priceChange(this.value)">
<option value="1" selected="selected">1</option>
<option value="2" selected="selected">2</option>
.......

Kód:
$changed_price = $_GET['change_price'];

Elvileg a $_GET['change_price']-ba a select value értéke menne de nem működik az egész oldalt betölti a megadott helyre.
Ötlet esetleg?
Naplózva
Tas
Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 35


« Válasz #529 Dátum: 2011. 03. 20. - 18:24:13 »

Nálam jól működik.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #530 Dátum: 2011. 03. 21. - 19:40:40 »

Már nálam is  Kacsint
Persze, hogy a mod_rewrite volt a gond megint  Hááát
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 966


WWW
« Válasz #531 Dátum: 2011. 03. 21. - 22:05:47 »

spier! Mosolyog Az jo Istenre kerkel, nem kell komplikalni, azt ami egyszeru Mosolyog

Az, hogy egy mezoben mentesz ID-kat, '|'-val osszerakva egy kolbaszba, majd szetszeded majd osszerakod PHP-val ... nagyon rossz:

1) nem hasznalod a relacionalis adatbazist, csak arra, hogy adatot taroljon: nem erre volt kitalalva.
2) sokkal tobb SQL lekerest kell vegrehajts, hogy a kiegeszitoket kibanyaszd az ID-k alapjan explode utan
3) nem tudsz megoldani olyan kereseseket vagy csak nagyon eroforrasigenyesen (es lassan!), hogy pl. listazd az osszes termeket, az X, Y es Z kiegeszitokkel

Ajanlom, olvass el egy SQL/adatbazis kezeles/tervezes konyevet, tutorialok, kurzust: valamit Mosolyog Sokat fog segiteni, ha megerted, hogy milyen koncepciok vannak es mi miert jobb, miert gyorsabb es miert lesz majd neked is logikusabb.

Ez a tipikus "van ket entitasom, amit n-az-m ossze kell kotni". Magyaran, van az egyik entitas: termek. A masik a: kiegeszito. Minden termekhez lehet tobb kiegeszito. Eddig szep es jo. Remelem ertheto is Mosolyog

Na mar most, hogy kotom ossze egyszeruen, ugy hogy egyik sem kell a masikrol tudjon, hiszen kulonallo dolgok: kell egy harmadik osszekoto tabla, ami segit ebben, pl.: termekKiegeszitok. Ennek ket oszlopa van: termekId, kiegeszitoId.

Most szepen ebben a tablaban tarolod, hogy az autonak (id: 123) lehet xenon fenyszoroja (id: 46) es DVD Navigacios Rendszere (id: 23): kell ket sor: 123, 46 adatokkal illetve 123, 23 adatokkal.

Ezzel megoldva az 1) -pont gondja (es a tobbi is).

2) Egyetlen egy selecttel letudod kerni, amire szukseged van:

Kód:
select t.*, k.* from termek t inner join termekKiegeszitok tk on t.id = tk.termekId inner join kiegeszito k on k.id = tk.kiegeszitoId

3) Szurni is nagyon egyszeru, fogod az elobbi SQL lekerest es kicsit kiegeszited:

Kód:
select
t.*, k.*
from
termek t
inner join termekKiegeszito tk
on t.id = tk.termekId
inner join kiegeszito k
on k.id = tk.kiegeszitoId
where
2 = ( select
count(tkIn.kiegeszitoId)
from
termekKiegeszito tkIn
where
tkIn.termekId = t.id
and tkIn.kiegeszitoId in (46, 23)
)

Ez visszateriti az autot, de nem a villanylampat ... annak nincs 23-as kiegeszitoje (a kettos onnan jon, hogy ket talalo extra kell legyen egyidoben, ha harom extra kell legyen a termekhez a szures szerint, akkor az az ertek harmas; termeszetesen lehet 5-6 extraja is, de minket ebbol ketto erdekel, hogy mindenkeppen legyen, xenon es DVD Nav.).

Remelem segitettem Mosolyog

U.i.: konyvet ragadni nem szegyen! Mosolyog Mindenki tanul valamilyen formaban, csak nem mindenki mondja.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #532 Dátum: 2011. 04. 07. - 17:23:48 »

Mosolyog átnézem ezeket. Van egy tucat pdf-es könyvem csak sajnos egy dolog olvasni és egy dolog ténylegesen használva alkalmazni vagy érteni mi mire jó. Ugyebár senki nem magyarázza el magamtól kell rájönni, ami időm engedi foglalkozom vele folyamatosan.  Kacsint
Naplózva
Tupacko
WebPillangó

Adminisztrátor
Törzstag
*****
Nem elérhető Nem elérhető

Hozzászólások: 966


WWW
« Válasz #533 Dátum: 2011. 04. 16. - 12:44:15 »

Termszetesen. Viszont vannak olyan konyevek, amelyek magyaraznak is. Azok igazan "A" konyvek. Jo tanulast!
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #534 Dátum: 2011. 05. 15. - 08:22:11 »

Üdv.

Nem találom egy jelzésnek a jelentését, ha valaki tudja és megosztja megköszönném. Mosolyog
Tehát pl. a codeigniterben vannak ilyen sorok illetve funkciók:
Kód:
$CFG =& load_class('Config', 'core');
function &load_class($class, $directory = 'libraries', $prefix = 'CI_')

Mindkét esetben van egy "&" jel.
Tudja esetleg valaki mi célt szolgál?
Köszi.  Kacsint
Naplózva
Tas
Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 35


« Válasz #535 Dátum: 2011. 05. 15. - 15:16:08 »

Bár én még nem használtam, de úgy tudom, hogy egy függvény paramétere nem érték hanem hivatkozás szerint lesz átadva. Tehát ha a függvényen belül megváltoztatod a paraméterben kapott változó értékét, akkor az az eredeti változó értékét is módosítja, de azért nézz utána.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #536 Dátum: 2011. 05. 22. - 11:25:49 »

Köszi  Kacsint
Talán így már menni fog, vagyis tudom értelmezni a dolgot.
Naplózva
spier
Tag
**
Nem elérhető Nem elérhető

Hozzászólások: 125


« Válasz #537 Dátum: 2011. 05. 23. - 08:50:16 »

Szükséges az összes elkészített osztályba beletenni a singletont vagy factoryt? Például egy nyelv osztályba... minek?  Mosolyog Van valami elv, hogy mi alapján kell ezeket példányosítani egyre?

A másik kérdésem ha van egy osztályom ami azért felel, hogy beállítsa az adatbázist, oldalakat stb. és ez singleton akkor azokba az osztályokba amit ezzel példányosítok kell, hogy azok is singleton-ok legyenek?

Még van egy kérdésem, ha kihagyom az osztályból a konstruktort, klónozást, destruktort akkor ezek automatikusan publikusak lesznek, vagy mi hívódik meg ha példányosítok egyet? Ha jól tudom akkor a konstruktor egy osztály előtöltő, lefut mikor példányosítás történik, nem biztos jól fogalmazom meg, ha kihagyom akkor csak lesz egy osztály példányom amiben használhatom a benne lévő funkciókat. Sok helyen láttam pl. validációs osztályokat ahol semmi konstruktor vagy egyéb csak egybe vannak fogva a funkciók.

Ahány könyv annyiféle megoldás, nehéz eldönteni mi az ami már jó vagy teljesen rossz megoldás, még ha van is egy nagyon kezdő rálátás.
Persze a legegyszerűbb ha minden védett és 10szer ellenőrzött de szükséges ez mindig?
 Kacsint
Naplózva
Odin

Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 27


WWW
« Válasz #538 Dátum: 2011. 05. 28. - 14:51:14 »

Üdv! Lenne egy kérdésem: Hogyan lehetne minimális php ismerettel elkészíteni egy hírbeküldőt? Az oldal, ahol a hírek írhatók/szerkeszthetők jelszó védi és könnyen beilleszthető egy meglévő oldalba. Mosolyog
Naplózva

"A harcos nem attól harcos, hogy feladja amit szeret, hanem, hogy szereti amit csinál. Egy jó harcos nem tökéletes, nem győz mindig, nem sérthetetlen... A jó harcos nagyon is sebezhető.. Ez teszi igazán bátorrá!"
pepe0521
Új tag
*
Nem elérhető Nem elérhető

Hozzászólások: 19


« Válasz #539 Dátum: 2011. 05. 30. - 12:11:17 »

Üdv! Lenne egy kérdésem: Hogyan lehetne minimális php ismerettel elkészíteni egy hírbeküldőt? Az oldal, ahol a hírek írhatók/szerkeszthetők jelszó védi és könnyen beilleszthető egy meglévő oldalba. Mosolyog

http://www.tutorial.hu/hirkuldo-script/

Naplózva
Oldalak: 1 ... 25 26 [27] 28 29   Fel
  Nyomtatás  
 
Ugrás: