[ webjunior @ 15.05.2012. 09:49 ] @
core.inc.php --->
Code (php):

<?php
ob_start();
session_start();
$current_file = $_SERVER['SCRIPT_NAME'];// or SCRIPT_FILENAME
if (isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER'])) {
     $http_referer = $_SERVER['HTTP_REFERER'];
}

function logovan_da_ne() {
     if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])) {
          return true;
     } else {
          return false;
     }
}

function daj_polja($field) {
$query = "SELECT `$field` FROM `korisnici` WHERE `id`='".$_SESSION['user_id']."'";
     if ($query_run = mysql_query($query)) {
          if ($query_result = mysql_result($query_run, 0, $field)) {
               return $query_result;
          }
     }
}
?>
 


connect.inc.php --->
Code (php):

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = 'lozinka';
$mysql_db = 'flydragon';

if (!mysql_connect($mysql_host, $mysql_user, $mysql_pass) || !mysql_select_db($mysql_db)) {
     die ('Nema konekcije sa serverom/bazom!');
} else {
     return true;
}
?>
 


index.php --->
Code (php):

<?php

require 'core.inc.php';
require 'connect.inc.php';

if (logovan_da_ne()) {
$nadimak = daj_polja('nadimak');
$email = daj_polja('email');
     echo 'Ulogovani ste, vaš nadimak je: '.$nadimak.', a vaš email je: '.$email.'. <a href="logout.php">Odjava</a>';
} else {
     include 'loginform.inc.php';
}
?>
 


loginform.inc.php --->
Code (php):

<?php
if (isset ($_POST['nadimak']) && ($_POST['lozinka'])){
     $nadimak = $_POST['nadimak'];
     $lozinka = $_POST['lozinka'];
     $lozinka_hash = md5($lozinka);    
     if (!empty ($nadimak) && !empty ($lozinka)) {
          $query = "SELECT `id` FROM `korisnici` WHERE `nadimak`='".mysql_real_escape_string($nadimak)."' AND `lozinka`='".mysql_real_escape_string($lozinka_hash)."'";
               if ($query_run = mysql_query($query)) {
                    $query_num_rows = mysql_num_rows($query_run);
                    if ($query_num_rows==0) {
                         echo 'Pogrešna kombinacija nadimak/lozinka';
                    } else if ($query_num_rows==1) {
                         $user_id = mysql_result ($query_run, 0, 'id');
                         $_SESSION['user_id'] = $user_id;
                         header('Location: index.php');
                    }
               }
     } else {
               echo 'Unesite nadimak i lozinku.';
       }
}
?>

<form action="<?php echo $current_file; ?>" method="POST">
Nadimak: <input type="text" name="nadimak"><br>
Lozinka: <input type="password" name="lozinka">
<input type="submit" value="Prijava">
</form>
 



Hocu da loginform.inc.php podelim na dva fajla : tako da kad se poziva iz indexa loginform.inc.php da se ucita samo forma bez php, a da se php skripta poziva kad se submituje forma. Probao sam da odvojim sa include, tako sam promenio imena fajla, ali mi ne radi, prikazuje gresku. Uradio sam to ovako:
u index.php sam promenio:
include 'loginform.tmp.php';

u loginform.tmp.php

sam smestio html formu a kao action sam stavio action="loginform.inc.php"

u loginform.inc.php sam stavio sav kod za akciju formi. Ali negde gresim...





[ webjunior @ 15.05.2012. 13:08 ] @
da, izgleda da ne moze bas totalno da se odvoji php od html. Sa html formom mora da ide i definisanje varijabli:
$nadimak=$_POST['nadimak']..
[ ivan.a @ 15.05.2012. 14:58 ] @
Može skroz da se odvoji php od HTML-a.
Pre bilo kakvog HTML output-a obradiš sve informacije, zahteve, upite i smestiš ih u varijable, nizove itd. a posle ih prikazuješ.
Uglavnom se na taj način i prave template sistemi, framework-ovi itd. jer je takav pristup dosta fleksibilniji i brži.

Da bi napravio neki jednostavan sistem koji razdvaja php od HTML-a, potrebno je da prvo smisliš koncept kako bi to funkcionisalo. Na primer napraviš novi fajl post_zahtevi.php i tu obrađuješ sve $_POST varijable. Zatim upiti.php gde obrađuješ sve upite iz baze i smeštaš ih u niz (i kasnije prikazuješ u okviru HTML-a).
Na taj način se najbolje dinamički generišu php stranice.
To sve znači da pre bilo kakvog HTML koda (uključuje i onaj echo 'neka poruka'; ) napraviš sve obrade i provere, a posle ih prikazuješ u okviru HTML koda.

Recimo tvoja funkcija daj_polja() nije baš najbolje smišljena. Jednim upitom možeš dobiti sve potrebne informacije, a kod tebe se pravi upit za svako polje posebno i to svaki put kada je korisnik prijavljen. Možeš izmeniti skriptu tako da korisničko ime i email (po potrebi i ostale informacije) smeštiš u sesiju, a POST varijable obradiš ako je forma poslata ili ako je korisnik prijavljen/nije prijavljen.

[ plus_minus @ 15.05.2012. 15:09 ] @
A ako krećeš na sesije, juniore, evo ti ovaj sitan pdf, kao podsetnik.
[ webjunior @ 15.05.2012. 17:07 ] @
hvala @plus_minus.

Odvojio sam html forme od php ali ih inkludujem zajedno kad mi treba, za logovanje, registraciju. Medjutim, sad pokusavam da se snadjem kako da mi se echo izlazi iz php skripti prikazuju u template a ne izvan. To je sto se tice mog rada.
A ovo o cemu pricas jos nisam savladao, to verovatno znaci rad sa klasama ili ne?

Evo recimo kako ovo da resim?

} else {
echo 'Poruka';
}

To mi se prikazuje izvan template. Kako poruku da smestim u varijablu?
mozda?


$poruka=' Neka greška';
...

} else{
return $poruka;
}

a u template da stavim na određeno mesto:

<?php if ($poruka !=NULL) echo $poruka; ?>

Moze?
[ plus_minus @ 15.05.2012. 18:47 ] @
Ako $poruka već ima vrednost onda možeš da probaš i samo else {} baš tako, blanko.
Ako imaš jedno striktno if($poruka != "something||anything") nakon $poruka promenjive.
Kasnije tu gde ti je else, između, dodaš šta ti treba, onda kad ti treba.

Reurn bi ja upisivao unutar funkcija...
Rad sa sesijama ne mora da znači i da ćeš odmah morati i Oo da studiraš..
Dakle, samo hrabro.
Mic po mic.
[ webjunior @ 16.05.2012. 07:04 ] @
Code (php):


<?php
if (isset ($_POST['nadimak']) && ($_POST['lozinka'])){
     $nadimak = $_POST['nadimak'];
     $lozinka = $_POST['lozinka'];
     $lozinka_hash = md5($lozinka);    
     if (!empty ($nadimak) && !empty ($lozinka)) {
          $query = "SELECT `id` FROM `korisnici` WHERE `nadimak`='".mysql_real_escape_string($nadimak)."' AND `lozinka`='".mysql_real_escape_string($lozinka_hash)."'";
               if ($query_run = mysql_query($query)) {
                    $query_num_rows = mysql_num_rows($query_run);
                    if ($query_num_rows==0) {
                         echo 'Pogrešna kombinacija nadimak/lozinka';
                    } else if ($query_num_rows==1) {
                         $user_id = mysql_result ($query_run, 0, 'id');
                         $_SESSION['user_id'] = $user_id;
                         header('Location: index.php');
                    }
               }
     } else {
               echo 'Unesite nadimak i lozinku.';
       }
}
?>
 


ovaj kod mi lose radi. Izbacuje mi: echo 'Unesite nadimak i lozinku.'; cim pristupim stranici, a kad je osvezim izgubi se poruka. Zatim mi ne prikazuje 'Pogrešna kombinacija nadimak/lozinka'; za sve slucajeve... a kad probam da se ulogujem sa praznim poljima ne prikazuje mi nikakvu gresku, kao da nisu prazna ???
[ Milos911 @ 16.05.2012. 08:13 ] @
Citat:
webjunior: da, izgleda da ne moze bas totalno da se odvoji php od html.
Pogledaj: http://www.elitesecurity.org/f139-Smarty-template-engine
[ webjunior @ 16.05.2012. 13:50 ] @
evo sad sam skinuo smarty pa da vidim bas o cemu se radi...pojam nemam sta je to, nema ni 1 mb a toliko ga hvale :)