Pereiti prie turinio

Puslapių rodymas per index.php


Rekomenduojami pranešimai

Sveiki,

 

niekaip nesugalvoju kaip geriausia būtų sustruktūrizuoti savo php puslapus. Turiu kelis puslapius: index.php, downloads.php, contact.php. Jei reikia įeiti į kurį nors puslapį , tai adresas turi būti toks:

index.php?page=downloads

index.php?page=contact

 

Va kas gavosi:

<html>
<head>
<title>www</title>
<LINK REL=STYLESHEET HREF="style.css" TYPE="text/css">
</head>
<body>

<?php
require("functions.php");
require("sql.php");


$puslapiai["downloads"]="downloads.php";
$puslapiai["contact"]="contact.php";

/// išsiaiškinti kokį puslapį reikia atidaryti
if(!isset($_GET["page"]))
 {
   include("pages/index.php");
 }
else
 {
   if(isset($puslapiai[$_GET["page"]]))
       include("pages/".$puslapiai[$_GET["page"]]);
else 
    include("pages/index.php");

 }


$content= new page(); // kiekvienas puslapis savyje turi 'page' klasę

?>



<!----------- HTML  -------------------->

<div class="content"> 
<div id="antraste"> <?php $content->rodyti_antraste(); ?></div>
<div id="kaire"><?php $content->left_div(); ?></div>
<div id="desine"><?php $content->right_div(); ?></div>

<div id="centravimui">
 <div id="meniu"><?php navigmain_show($content->puslapio_pavadinimas);?></div>
 <div id="pagrindinis"> <?php $content->content(); ?></div>

</div>
<div id="apacia">  </div>
</div> 

</body>
</html>

Taigi esmė ta, kad kiekvienas puslapis turi kitokį turinį, o index.php nurodo kurioje vietoje jis turi atsidurti. Bet man kodas atrodo labai netvarkingas ir pats sprendimas kažkoks nevykęs. Gal žinot paprastesnių būdų tam pačiam rezultatui pasiekti?

 

Tikiuosi viską supratot, nes nuo galvojimo jau galva lagint pradėjo :D

Redagavo rimcx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Siūlyčiau neišradinėti dviračio, o pradėti mokintis kokį PHP frameworką jeigu nori kad viskas tvarkingai būtų.

 

Pvz. daugelis frameworkų leidžia rašyti panašų kodą:

 

class Home extends Controller {

// Cia bus rodomas pirmas puslapis
// pvz. example.com/
function index()
{
	// Rodom pirmo puslapio HTML
	LoadView('home');
}

// Cia bus rodomas kontaktu puslapis
// pvz. ecample.com/kontaktai
function kontaktai()
{
	// Patikrinam forma ir t.t.
	if (!empty($_POST))
	{
		// Procesinam forma
	}

	// Rodom kontaktu puslapio HTML
	LoadView('kontaktai');
}
}

 

Viskas gražu ir tvarkinga :)

Redagavo alter
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na, žmonės jau pasiūlė frameworkus, bet aš tiesiog ateičiai pasakysiu, jog bet kokiu inputu iš vartotojo nėra saugu pasitikėti. Tame tarpe ir:


   if(isset($puslapiai[$_GET["page"]]))
       include("pages/".$puslapiai[$_GET["page"]]);
       else 
           include("pages/index.php");

 }

Žinant puslapio struktūrą, galima paduoti pvz. index.php?page=../sql.php :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na, žmonės jau pasiūlė frameworkus, bet aš tiesiog ateičiai pasakysiu, jog bet kokiu inputu iš vartotojo nėra saugu pasitikėti. Tame tarpe ir:


   if(isset($puslapiai[$_GET["page"]]))
       include("pages/".$puslapiai[$_GET["page"]]);
       else 
           include("pages/index.php");

 }

Žinant puslapio struktūrą, galima paduoti pvz. index.php?page=../sql.php :)

Su mano kodu index.php?page=../sql.php neveiks, nes turiu leistinų puslapių sąrašą

$puslapiai["downloads"]="downloads.php";
$puslapiai["contact"]="contact.php";

Arba aš kažko nesupratau :)

Redagavo rimcx
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jau pradėjau su Codeigniter, nes kol kas nieko sudėtingesnio ir nereikia.. Tik va, dingo entuziazmas (kartais atrodo, kad kalnus galiu nuverst, o dabar tinginys užpuolė :( )

 

Kad nedaryt naujos temos, gal žinot kaip filtruot vartotojo inputą, kad apsisaugot nuo SQL atakų? Užtenka patikrinti ar nėra SQL keywordų inpute ar dar kažką reikia daryti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Codeigniter automatiškai apsaugo nuo SQL atakų jeigu naudoji Active Record. Pvz. stenkis nenaudoti:

 

$this->db->query("INSERT INTO users (vardas, miestas) VALUES ('$vardas', '$miestas')");

 

Naudok:

 

$data = array(
  'vardas' => $vardas,
  'miestas' => $iestas
);
$this->db->insert('users', $data);

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jau pradėjau su Codeigniter, nes kol kas nieko sudėtingesnio ir nereikia.. Tik va, dingo entuziazmas (kartais atrodo, kad kalnus galiu nuverst, o dabar tinginys užpuolė :( )

 

Kad nedaryt naujos temos, gal žinot kaip filtruot vartotojo inputą, kad apsisaugot nuo SQL atakų? Užtenka patikrinti ar nėra SQL keywordų inpute ar dar kažką reikia daryti?

 

O nenaudojant jokio frameworko ar šiaip kokios bibliotekos, kuri pati apsaugo, tai tiesiog bet kokį inputą praleist pro mysql_real_escape_string()

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O nenaudojant jokio frameworko ar šiaip kokios bibliotekos, kuri pati apsaugo, tai tiesiog bet kokį inputą praleist pro mysql_real_escape_string()

 

Siūlau pasižiūrėti šitą video:

http://www.youtube.com/watch?v=o4dJ7hdA8fs

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 1 mėnesio...

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...