GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

PHP não cria sessão

php
Tags: #<Tag:0x00007fbf2303a6f8>

#1

Boa tarde, não sei por qual motivo porém o php não cria uma session na primeira vez que faço o submit.
Tenho um fonte que faz upload de imagem via ajax e em caso de sucesso grava um valor no session para ser utilizado mais tarde, por algum motivo estranho, dá primeira vez que executo submit(estou usando slim, então o submit vai como post) a session não existe só que ao executar pela segunda vez sem fechar o navegador, tudo funciona. Tentei usar um cookie porém só tive problemas então parti para session mesmo.
Fontes:
Upload.pgp

session_start();
if(isset($_FILES['fileImagem'])){
    
    $errors = array();
    $file_name = $_FILES['fileImagem']['name'];
    $file_size = $_FILES['fileImagem']['size'];
    $file_tmp = $_FILES['fileImagem']['tmp_name'];
    $file_type=$_FILES['fileImagem']['type'];
    //$file_ext=strtolower(end(explode('.',$_FILES['fileImagem']['name'])));
    $file_ext=pathinfo($file_name);
    $file_ext = $file_ext['extension'];

    $expensions= array("jpeg","jpg","png");

    if(in_array($file_ext,$expensions)=== false){
        $errors[] = "Extensão não permitida";
    }
    if($file_size > 2097152){
        $errors[]='Tamanho máximo 2 MB';
    }

    if(empty($errors)==true){
        
        $_SESSION["statusUP"] = $file_name;
        move_uploaded_file($file_tmp,"pictures/".$file_name);
        echo "ok";
     }else{
        print_r($errors);
    }
}

Fonte onde pego o valor do session ao salvar o form

<?php
session_start();
require_once 'app\controllers\model\UsersModel.php';
require_once 'app\controllers\DAL\UsersDAL.php';

class UsersController{

    private $usersModel;
    private $usersDAL;

    function __construct(){
    }

    public static function newUser($data){

        $usersModel = new UsersModel();

        $data = json_decode($data);
        $usersModel->setNome($data->txtNome);
        $usersModel->setEmail($data->txtEmail);
        $usersModel->setPassword($data->txtPass);
        $usersModel->setSetor($data->slSetor);
        $usersModel->setRole($data->slPapel);
        //pega o valor na session, só funciona na segunda vez
        if(isset($_SESSION['statusUP'])){
            $usersModel->setPicture($_SESSION['statusUP']);
        }

        if(isset($data->ckAtivo)){
            $usersModel->setActive(1);
        }else{
            $usersModel->setActive(0);
        }

        $usersDAL = new UsersDAL();
        return $usersDAL->Cadastrar($usersModel);
    }

}

Já tentei utilizar session_start em todos os lugares.


#2

tenta
ini_set(‘session.save_path’,realpath(dirname($_SERVER[‘DOCUMENT_ROOT’]) . ‘/…/session’)); session_start();

aconteceu comigo na locaweb a falta de session.save_path não salvava a sessão.