Puedo usar session_start() en los constructores de varias clases ?

Tengo una duda grande en cuanto a seguridad, estoy utilizando session_start() de la siguiente manera

public function validar(){
session_start();
if(@$_POST){
foreach($_POST as $campo => $valor){
$asig = "$" . $campo . "='" . Htmlspecialchars($valor,ENT_QUOTES) . "';";
eval($asig);
}
$user=addslashes($username);
$psw=addslashes($password);
$usu=$this->user->validateUser($user,$psw);
if ($usu!=NULL) {

$_SESSION['use_mail']=$usu->getUse_mail();

$_SESSION['use_username']=$usu->getUse_username();

$_SESSION['use_psw']=$usu->getUse_psw();
$_SESSION['status_id']=$usu->getStatus_id();
$_SESSION['loggedin']=true;
echo 1;
}
}else {
//redirrecciona error 404
echo 0;
}

en el modelo tengo lo siguiente

public function validateUser($username,$password){
$sql = "SELECT * from users WHERE use_username='".$username."' AND use_psw='". $password ."' AND status_id='1'";
$datos=$this->con->consultaRetorno($sql);
if($datos->num_rows == 1){
$user_temp=new Users();
$row = $datos->fetch_array(MYSQLI_ASSOC);
$user_temp->setUse_mail($row['use_mail']);
$user_temp->setUse_username($row['use_username']);
$user_temp->setUse_psw($row['use_psw']);
$user_temp->setStatus_id($row['status_id']);
return $user_temp;
}

Todo funciona bien pero mi pregunta es si puedo usar session_start en los constructores una vez la session se crea ejem:

class ProductController{
public function __construct(){
session_start();
$this->vehicle=new Vehicles();
$this->category=new Categories();
$this->type=new Types()
}

public function index(){
View::render('driver/list');
}

}

en todas la vistas tengo lo siguiente 

<?
//Inicio la sesión
if(!isset($_SESSION))
{
session_start();
}
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["loggedin"] != true) {
//si no existe, envio a la página de autentificacion
header("Location: http://miapp/public/login");
//ademas salgo de este script
exit();
}
?>

Añade tu respuesta

Haz clic para o