A minha primeira dúvida é sobre um código de login, que ao meu ver está corretissímo, mas não dá o resultado esperado:
<?php function Login($nick, $password_pass) { $password = md5($password_pass); $connect = mysql_connect("localhost", "user", "senha"); mysql_select_db("tabela", $connect); $query = "SELECT * FROM users WHERE user_password= $password AND username = $nick"; $sql = mysql_query($query); $contagem = mysql_num_rows($sql); //linha 12 if($contagem == 1) { echo "Logado"; } else { echo "Não Logado"; } } Login("usuário", "senha"); //linha de teste! ?>
Por meio de um formulário ele pega o username e o password digitado pelo usuário (com o password usa-se md5, já que a senha está codificada no bd) e verifica no bd se isso está correto. Com mysql_num_rows ele verifica as linhas modificadas. Se houver uma, aparece na tela um "Logado" (no código original eu setava uns cookies, mas tirei porque nessa parte está tudo ok), se não, um "Não Logado". Porém, usando o Apache, só dá "Não Logado", independente do user e/ou a senha existirem ou não. Eu já tentei de tudo e não entendo o que possa estar errado. Alguém saberia resolver esse problema?
PS: É interresante notar que usando um compilador PHP ele dá o seguinte erro:
"Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Arquivos de Programas\Easy PHP1-7\home\login_Temp.php in line 12"
Mais interresante: eu fiz um or die() com mysql_error e vejam o que apareceu:
"ErroColuna 'd9ddb6de1f448cd7ed484a9c09569106' desconhecida em 'where clause'"
Eu NUNCA vi esse erro. Alguém sabe me explicar? O d9ddb... é a senha do user decodificada com md5().
==
A minha segunda dúvida é sobre sessions. Eu NÃO consigo usá-las de jeito nenhum!
Vejam o código retirado da documentação do php:
<?php if (!session_is_registered('count')) { session_register('count'); $count = 1; } else { $count++; } ?> Hello visitor, you have seen this page <?php echo $count; ?> times.<p>; To continue, <A HREF="nextpage.php?<?php echo SID?>">click here</A>
Agora vejam a penca de erros:
Warning: session_register(): open(C:\PHP\sessiondata\sess_04aecd754fa7faf28f25f15f748671d4, O_RDWR) failed: No such file or directory (2) in C:\Arquivos de Programas\Easy PHP1-7\home\session_Temp.php on line 3
Warning: session_register(): Cannot send session cookie - headers already sent by (output started at C:\Arquivos de Programas\Easy PHP1-7\home\session_Temp.php:3) in C:\Arquivos de Programas\Easy PHP1-7\home\session_Temp.php on line 3
Warning: session_register(): Cannot send session cache limiter - headers already sent (output started at C:\Arquivos de Programas\Easy PHP1-7\home\session_Temp.php:3) in C:\Arquivos de Programas\Easy PHP1-7\home\session_Temp.php on line 3
Warning: Unknown(): open(C:\PHP\sessiondata\sess_04aecd754fa7faf28f25f15f748671d4, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\PHP\sessiondata) in Unknown on line 0
Eu verifiquei no php.in e o session.save_path está na pasta "C:\Arquivos de programas\EasyPHP1-7\home\Sessions", que eu mesmo criei. Diabos, qual é o problema para os sessions não funcionarem?
PS: Eu não sei se é necessário (acredito que sim, pois sessions trabalham com cookies), mas por via das dúvidas, executo o código com o apache ligado.