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();
}
?>