Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Will Up

[Resolvido] SESSION não grava no DB

Recommended Posts

Olá, modifiquei um sistema de múltiplo de imagens, mas tem um problema: O arquivo upload.php, encarregado de mover a imagem, gravar o caminho (da mesma), usuário que fez o upload e email no DB, não está gravando o email nem o usuário.

 

 

Segue o script:

 

<?php
session_start();
ini_set('display_errors', true);
error_reporting(E_ALL);

include 'config.php';

var_dump( $_FILES );

$filename = $_FILES['Filedata']['name'];
$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) 
VALUES ('', '', '', '', '{$filename}', '', 'Yes', '', '{$_SESSION['Username']}', '{$_SESSION['Email_Address']}')";
echo $query,'<br />';
mysql_query($query) or die (mysql_error());

$path     = $_FILES['Filedata']['tmp_name'];
$new_path = 'images_files/'.$_FILES['Filedata']['name'];

echo move_uploaded_file( $path, $new_path );

?>

Como eu já disse acima, a SESSION username e email não estão gravando no DB, somente o caminho da imagem :(

 

Podem me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!

 

Olha, bicho... eu fiz um testezinho aqui e deu tudo certo:

 

session_start();
$_SESSION['nome'] = 'Rodrigo Salles';
$_SESSION['email'] = 'rodrigo.salles@teste.com.br';

$con = mysql_connect('localhost', 'root', '');
$db = mysql_select_db('teste', $con);

$query = "INSERT INTO user (nome, email) VALUES ('{$_SESSION['nome']}', '{$_SESSION['email']}')";
if (mysql_query($query, $con)) {
   echo 'Salvou...';
} else {
   echo mysql_error();
}

Verifique se as sessões foram realmente atribuídas, elas podem estar vazias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, as SESSIONS não funcionam somente quando eu hospedo a imagem. Muito estranho.

 

Essa é a página que tem o formulário:

 

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Upload múltiplo</title>
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
	<script type="text/javascript" src="../../js/multiUpload.js"></script>
	
	<script type="text/javascript">
		var uploader = new multiUpload('uploader', 'uploader_files', {
			swf:            '../../swf/multiUpload.swf',
			script:         'upload.php',
			expressInstall: '../../swf/expressInstall.swf',
			multi:          true
		});
	</script>

	<style type="text/css">
		@import '../../css/style.css';
		@import "../../css/multiUpload.css";
	</style>

</head>
<body>

	<h1>Upload múltiplo</h1>


	<br />

	<div id="uploader"></div>

	<div id="uploader_files"></div>

	<br style="clear:both" />

	<a href="javascript:uploader.startUpload();">Iniciar Upload</a> | <a href="javascript:uploader.clearUploadQueue();">Limpar fila de Upload</a>

	<br /><br />

</body>
</html>

E essa é a upload.php:

 

<?php
session_start();
ini_set('display_errors', true);
error_reporting(E_ALL);

include 'config.php';

var_dump( $_FILES );

$filename = $_FILES['Filedata']['name'];
$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) 
VALUES ('', '', '', '', '{$filename}', '', 'Yes', '', '{$_SESSION['Username']}', '{$_SESSION['Email_Address']}')";
echo $query,'<br />';
mysql_query($query) or die (mysql_error());

$path     = $_FILES['Filedata']['tmp_name'];
$new_path = 'images_files/'.$_FILES['Filedata']['name'];

echo move_uploaded_file( $path, $new_path );

?>

 

Acredito que o erro ocorre ao chamar o upload.php...

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, mas em que momento essas sessões são criadas, em qual script? Dá um dump em $_SESSION pra ver o que tá havendo...

 

Porque na página do form não tem nenhuma rotina PHP, nenhuma sessão é criada, no script upload.php você já coloca elas na brincadeira. De onde elas vêm??

 

Eu fiz mais alguns testes, agora com requisições ajax, e, claro, tudo normal. Eu criei as sessões em uma página e as imprimi em outra, mediante requisição ajax.

 

Cara, eu acho que o problema tá na hora que você cria essas sessões. Posta aí o código de onde você as cria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

As SESSIONS são criadas no script que faz o login (login.php):

 

 

<?
include"config.php";

if (isset($_POST[login]))
{
        $Username = strip_tags($_POST[username]);
        $Password = strip_tags($_POST[password]);

        if(empty($Username) || empty($Password))
        {
                include("header.php");
                echo "<br><center>Todos os campos devem ser preenchidos!</center>";
                require_once("loginform.php");
       		require_once("footer.php");    
        }
        else
        {
		$password11 = $_POST[password];
                $qlogin = "select * from `users` where `Username` = '$Username' and `Password` = '$password11' and `Status` = 'Active'";
                $rlogin = mysql_query($qlogin) or die(mysql_error());

                if(mysql_num_rows($rlogin) == '1')
                {
                        if($alogin = mysql_fetch_array($rlogin))
                        {


                                $_SESSION[Uid] = $alogin[Uid];
                                $_SESSION[Username] = $alogin[Username];
                                $_SESSION[Email_Address] = $alogin[Email_Address];
                                $_SESSION[Name] = $alogin[First_Name];




?>
<HTML>
<HEAD>
<script LANGUAGE="JavaScript">
<!-- Begin
redirTime = "1000";
redirURL = "myimages.php";
function redirTimer() { self.setTimeout("self.location.href = redirURL;",redirTime); }
//  End -->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="style.css">
</HEAD>

<BODY onLoad="redirTimer()">
<?
echo'<br><br><br>
<center><img border="0" src="/imagens/loading.gif"><br><br><b style="color: #FFFFFF; text-shadow: 1px 1px 1px #000000;">Se você não ser redirecionado em cinco segundos <a href="index.php">Clique Aqui</a></b></center>';



                        }
                }
                else
                {

                        echo"<div id='aviso'>";
						echo "<br><br><br><center style='background: #FCC; color: #A00; font-size: 1.3em; padding: 7px;'>Usuário/Senha inválido(a)!</center>";
                        echo"</div>";
						
						require_once("loginform.php");
			require_once("footer.php");
                }

        }
}

else
{
		require_once("header.php");
                require_once("loginform.php");
		require_once("footer.php");
}
?>

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, então lá em cima, no script login.php, você faz assim:

 

<?php

session_start();

// daqui em diante vem o código do sistema de login.

?>

Notei que você atribuía as sessões depois de autenticar o usuário sem antes iniciá-las com a função session_start(). Coloque-a no topo e veja se tudo funciona agora.

 

OBS: Todas as página onde você trabalha com sessões, devem iniciar com a função session_start().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atribua o valor das session à variáveis! Aí você pões elas elas na query!

 

Exemplo:

 

<?php
$nome=$_SESSION["nome"];
mysql_query("INSERT INTO usuarios(nome) VALUES('$nome')");
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atribua o valor das session à variáveis! Aí você pões elas elas na query!

 

Exemplo:

 

<?php
$nome=$_SESSION["nome"];
mysql_query("INSERT INTO usuarios(nome) VALUES('$nome')");
?>

Falcão, eu preciso gravar o nome do usuário logado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tá falando desse aqui?

 

<?
include"config.php";

if (isset($_POST[login]))
{
        $Username = strip_tags($_POST[username]);
        $Password = strip_tags($_POST[password]);

        if(empty($Username) || empty($Password))
        {
                include("header.php");
                echo "<br><center>Todos os campos devem ser preenchidos!</center>";
                require_once("loginform.php");
                require_once("footer.php");    
        }
        else
        {
                $password11 = $_POST[password];
                $qlogin = "select * from `users` where `Username` = '$Username' and `Password` = '$password11' and `Status` = 'Active'";
                $rlogin = mysql_query($qlogin) or die(mysql_error());

                if(mysql_num_rows($rlogin) == '1')
                {
                        if($alogin = mysql_fetch_array($rlogin))
                        {


                                $_SESSION[Uid] = $alogin[Uid];
                                $_SESSION[Username] = $alogin[Username];
                                $_SESSION[Email_Address] = $alogin[Email_Address];
                                $_SESSION[Name] = $alogin[First_Name];




?>
<HTML>
<HEAD>
<script LANGUAGE="Javascript">
<!-- Begin
redirTime = "1000";
redirURL = "myimages.php";
function redirTimer() { self.setTimeout("self.location.href = redirURL;",redirTime); }
//  End -->
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Login</title>
<link rel="stylesheet" type="text/css" href="style.css">
</HEAD>

<BODY onload="redirTimer()">
<?
echo'<br><br><br>
<center><img border="0" src="/imagens/loading.gif"><br><br><b style="color: #FFFFFF; text-shadow: 1px 1px 1px #000000;">Se você não ser redirecionado em cinco segundos <a href="index.php">Clique Aqui</a></b></center>';



                        }
                }
                else
                {

                        echo"<div id='aviso'>";
                                                echo "<br><br><br><center style='background: #FCC; color: #A00; font-size: 1.3em; padding: 7px;'>Usuário/Senha inválido(a)!</center>";
                        echo"</div>";
                                                
                                                require_once("loginform.php");
                        require_once("footer.php");
                }

        }
}

else
{
                require_once("header.php");
                require_once("loginform.php");
                require_once("footer.php");
}
?>

Pra salvar é so usar

mysql_query("INSERT INTO tabela(campo1,cmpo2, etc) VALUES('$username', '$password')");

É isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é esse o problema. É exatamente assim que eu estou fazendo, mas grava no DB somente o caminho da imagem. O usuário e email, não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
session_start();
ini_set('display_errors', true);
error_reporting(E_ALL);

include 'config.php';

var_dump( $_FILES );

$filename = $_FILES['Filedata']['name'];
$user=$_SESSION["Username"];
$mail=$_SESSION["Email_Address"];
$query = "INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) 
VALUES (NULL, NULL, NULL, NULL, '$filename', NULL, 'Yes', NULL, '$user', '$mail')";
echo "$query,<br />";
mysql_query($query) or die (mysql_error());

$path     = $_FILES['Filedata']['tmp_name'];
$new_path = 'images_files/'.$_FILES['Filedata']['name'];

echo move_uploaded_file( $path, $new_path );

?>

Tenta assim! Outra coisa! O seu DB e MySQL msm ou MsSQL? E poste a tabela do MySQL pra gente ver aí por favor!

 

ABrss!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, por esse debug aqui:

http://forum.imasters.com.br/index.php?/topic/398847-transformar-duas-querys-em-uma/page__view__findpost__p__1560273

 

eu já disse: O problema não são as SESSIONs, você está criando o session_start() no config.php.. beleza..

mas o teu problema é o arquivo!

 

a string sql está correta, com os valores das SESSIONs lá:

INSERT INTO images (ImageID, Cid, Sid, Title, Image, Viewed, Published, TimeStamp, Username, Email_Address) VALUES ('', '', '', '', '', '', 'Yes', '', 'williancima', 'contato@linkaki.net')

mas o $_FILES está vazio:

var_dump( $_FILES ); //array(0) { }

isso quer dizer, que o teu multiUpload() está te atrapalhando, e você está confundindo as coisas..

o errado é o arquivo, e não o resto.

 

como você tá enviando assincronamente, você não receberá o $_FILES na hora do submit não, mas ANTES !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, tem como resolver.

 

a forma simples ? desiste de usar esse multiUpload() e faz com um <input type="file" /> comum

 

a outra forma, estuda a documentação dele, se é que existe.. ou procura outro uploader.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamento isso que o William Bruno falou, o problema é esse multiUpload().

procura saber como ele funciona melhor.

 

$password11 = $_POST[password];
                $qlogin = "select * from `users` where `Username` = '$Username' and `Password` = '$password11' and `Status` = 'Active'";

Cuidado com as SQL Injections tambem.

da uma lida nessa função aqui: http://www.php.net/manual/pt_BR/function.mysql-real-escape-string.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.