Will Up 0 Denunciar post Postado Junho 17, 2010 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
Rodrigo Salles 1 Denunciar post Postado Junho 17, 2010 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
Will Up 0 Denunciar post Postado Junho 17, 2010 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
Rodrigo Salles 1 Denunciar post Postado Junho 17, 2010 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
Will Up 0 Denunciar post Postado Junho 17, 2010 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
Rodrigo Salles 1 Denunciar post Postado Junho 18, 2010 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
Will Up 0 Denunciar post Postado Junho 18, 2010 Fiz vários testes, permanece gravando só o caminho da imagem. Compartilhar este post Link para o post Compartilhar em outros sites
falcao544 11 Denunciar post Postado Junho 18, 2010 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
Will Up 0 Denunciar post Postado Junho 19, 2010 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
falcao544 11 Denunciar post Postado Junho 19, 2010 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
Will Up 0 Denunciar post Postado Junho 19, 2010 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
falcao544 11 Denunciar post Postado Junho 19, 2010 <?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
William Bruno 1501 Denunciar post Postado Junho 19, 2010 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
falcao544 11 Denunciar post Postado Junho 19, 2010 William, explica pra gente ai melhor? Compartilhar este post Link para o post Compartilhar em outros sites
Will Up 0 Denunciar post Postado Junho 19, 2010 Sim, eu já havia dito que poderia ser isso. Tem como resolver? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Junho 19, 2010 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
JuLIOOXX 0 Denunciar post Postado Junho 19, 2010 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
Will Up 0 Denunciar post Postado Junho 19, 2010 Amigos, obrigado à todos. Comecei um sistema do zero :) Compartilhar este post Link para o post Compartilhar em outros sites