Kezdőoldal » Számítástechnika » Weblapkészítés » PHP: Menüben? Oldal=forum és...

PHP: Menüben? Oldal=forum és más menüpontokban?

Figyelt kérdés

A PHP-t most kezdtem tanulni, és az oktató anyagban nem volt teljesen érthető ez a rész...

Ha jól értelmeztem tömböknél lett példának hozva...


jelenleg így néz ki:

<?php

session_start()


$oldal = $_GET['oldal']

if (!$oldal){

header('Location: ?oldal=kezdolap');

header('Location: ?oldal=kapcsolat')

}


itt következnek a html részek

<html>

...

<?

if ($oldal==kezdolap){

?>

...főoldal forráskódja

<?

if ($oldal==kapcsolat){


?>

...kapcsolat oldal forráskódja

</html>


szóval valamilyen szinten jó kell hogy legyen mert 2 fájl van... a menü fájlja és az index. Az indexen belül pedig a menüt változtatja az url-linkeket.


Nos a probléma az hogy:


Ugye mivel egy index fájlban írtam mindent így azt akarom hogy ha a ?oldal=kapcsolat rész kezdődik akkor csak az a tartalom jelenjen meg.

Jelen állás szerint hiába a


<?

if ($oldal==kapcsolat){

?>


rész után van a kapcsolat forráskódja mert a $oldal==kezdolap résznél is megjelenik ez ami már nem ahhoz a tartalomrészhez kapcsolódik.



#php;
2017. máj. 28. 23:23
 1/5 anonim ***** válasza:
48%

Ez lényegében maszatolás.


Routing-olj. Például: http://{valami}/{controller}/{action} felbontással

Ahol a:

* {valami} egy domain vagy IP pl.: 192.168.0.100, localhost, stb.

* {controller} a routing első eleme, ami ha nem létezik, alapértelmezetten az index értéket veszi fel.

* {action} szintúgy nem kötelező elem, de ha van, akkor controller is legyen.


például:

[link]

$_SERVER['REQUEST_URI'], ami egy http://localhost/ esetén egy '/'-fog tárolni.

http://localhost/ alma => /alma

http://localhost/ alma/korte => /alma/korte


Nemes egyszerűséggel feldarabolod ezt a tömböt az alábbi függvénnyel, és vizsgálod a létezését egyes elemeknek.

[link]

A visszaadott tömb [0] indexe egy "" fog tárolni, mert az első karakter egy /. Tehát a controller [1]-nél kell lennie, amit vizsgálsz.

Paraszt megoldás egy file_exist() futtatása, mikor a .php neve megegyezik a controller nevével. Majd ha van ilyen include-olod.


- Persze van ennél jobb megoldás is

- Egyes .php-k külön vannak szeparálva, és nem egyben

2017. máj. 29. 08:24
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Jézusom! Hogy Mucsi szavaival éljek: "Ezt a trágya gány melót!"


Nem tudom, milyen oktatóanyagot használsz, de iszonyatosan gagyi és elavult lehet.


1. Azt, hogy a kódot és a megjelenést egy fileba teszed, sürgősen felejtsd el. A PHP kódot és a megjelenítést külön kell választani, különben rövid úton belezavarodsz.

2. Sosem teszünk két különböző aloldalt így egy fileba. Átlathatatlan vacak lesz az egész. Tessék szépen kiszervezni külön fileba a főoldat, kapcsolatot, stb. Egy index.php kiszolgálhat mindent, de szigorúan csak más fájlokat include-olva.

3. Amit bemásoltál kódot, több helyen is hiányzik belőle a pontosvessző és a blokkokat lezáró } Ha feltennéd valahova a teljes kódot, jobban tudnánk segíteni.

4. Ez a kód itt több sebből vérzik:

$oldal = $_GET['oldal']

if (!$oldal){

header('Location: ?oldal=kezdolap');

header('Location: ?oldal=kapcsolat')

}

Először is, hibát fog adni, ha a get paraméter üres. Másodszor user inputot MINDIG, ismétlem MINDIG validálni kell, különben 2 perc alatt feltörik a programodat. Harmadszor pedig mi értelme a második header funkciónak, mikor az első már úgyis elküldi a kezdőlapra?

2017. máj. 29. 09:57
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

#1: Köszönöm a válaszod, lehet menni fog ha nem akkor privátban írok.

#2: Az általam készített nem az oktatóanyag alapján készítettem hanem felhasználtam(vagyis próbáltam) az ott tanultakat. Majd ahogy nézegettem a oldalakat, ott találtam ezt a megoldást(és ott így volt, mivel 2015-ben készült így nem olyan elavult), ami számomra egyszerűbben nézett ki. - Tudom nem a bevált darabolt technika. 2. Így include lehet tényleg jobb lenne, de ahol néztem ott egy indexbe volt az egész, igaz én lehet azért nem tudtam eligazodni rajta mert nem én írtam. 3. Ha nem megy az #1 kommentelő segítsége akkor sort kerítek rá. Mivel egy index-ben van így automatikusan a "?oldal=kezdolap" nyílik meg. - Vagyis egy egész éjszakás rajtaülés után átraktam pár dolgot mert az utolsó futott le("?oldal=kapcsolat") és így ezért ment a kapcsolatra. Nem figyeltél szerintem, mivel az indexben az több oldalak forráskódjai vannak így mind megjelenik már a "?oldal=kezdolap" -oldalon, én csak azt szeretném hogy ha a "?oldal=kezdolap" részen van csak kezdőlap tartalma ha a kapcsolat oldalon akkor csak a kapcsolat tartalma jelenjen meg. - Itt pl. arra gondoltam lehet valami függvénnyel kéne ezt orvosolni hogy a kezdolap tartalmát mondjuk a 100. sorig olvassa be ha viszont a kapcsolatmenüt választja akkor átugorja a 30. és 100. sor közötti tartalmat és a 101. sortól fut le. Ez mennyire járható út lenne? (Bár ilyet még nem tanultam.)

2017. máj. 29. 23:44
 4/5 anonim ***** válasza:

Azért fut le mindkét kód, mert rossz helyre tetted a kapcsos zárójeleket.

Egyébként meg az include-okkal ezt is lehet orvosolni.

2017. máj. 30. 08:25
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

Egyre rosszabbak az elképzelések.

Elő kéne venni valami oktatóanyagot és 0-ról elkezdeni, mert ebből így csak gányolás lesz.


Én mondjuk elengedném a PHP-t is, minek szívassa magát az ember, ha nem muszáj?

2017. máj. 30. 08:39
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!