Jump to content
rikardinhuh

[problema] login system

Recommended Posts

rikardinhuh

boas, o meu problema é que eu estou a tentar fazer o login mas nao está a funcionar:

<?php
echo $_SERVER['SCRIPT_FILENAME'], "<br>";

header("Expires: Thu, 17 May 2001 10:17:17 GMT");    // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified
header("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header("Pragma: no-cache");                          // HTTP/1.0




session_start();

function session_clear() {
    $_SESSION['MYSQL_PASS1'] = 'testing';
    $_SESSION['MYSQL_DB1'] = 'users';
    $_SESSION['SESSION'] = true;
}




if (!isset($_SESSION['SESSION'])) {session_clear(); }

    $user = "user1";
    $passwd = "Da933226";

    $username = addslashes($_POST['username_field']);
    $password = addslashes(md5($_POST['password_field']));

    $connect = mysql_connect('localhost', $user, $passwd) or die(my_wait(FALSE));
    $db = 'users';
    mysql_select_db($db) or die(my_wait(FALSE));

    $sqlQuery1 = "SELECT * FROM `tbl_users` WHERE 1`username` LIKE ('$username')";
    $sqlQuery2 = "SELECT * FROM `tbl_users` WHERE 1`md5_password` LIKE('$password')";



    $result1 = MYSQL_QUERY($sqlQuery1);
    $result2 = mysql_query($sqlQuery2);

    if ((strcmp($result1, $username)== 0) && (strcmp($result2, $password) == 0)){echo "sucess";}
    echo $result1,"<br>", $result2, "<br>";

    mysql_close($connect);

?>

tou aberto a criticas e formas mais eficazes/robustas de o fazer :)

cumps

Share this post


Link to post
Share on other sites
Cooper41

Tens aqui um tutorial que podes seguir: http://wiki.portugal-a-programar.pt/dev_web:php:criar_login_basico

Sem ter estado a tentar perceber porque é que o teu código não funciona, penso que está um bocado vago e podia estar melhor organizado. Acho que deves pelo menos verificar se foi alguma coisa submetida e depois verificares então se aquilo que foi submetido é válido, até te ajuda para depois retornares mensagens de erro ao utilizador e etc.

Share this post


Link to post
Share on other sites
brunoais

deixa-me adivinhar... "headers already sent by ....". Bem... o:

session_start();

está depois de:

echo $_SERVER['SCRIPT_FILENAME'], "<br>";

que é aonde os headers estão a ser enviados. PARA A PRÓXIMA INDICA QUAL É O ERRO QUE APARECE. Espero ter sido claro.

Outra coisa: Pôe uma identação correcta e que faça sentido. A que tens aí é muito enganosa.

$username = addslashes($_POST['username_field']);

Não é suficientemente bom. Usa a função feita para isso mysql_real_escape_string()

(

$username = mysql_real_escape_string($_POST['username_field']);

)

$connect = mysql_connect('localhost', $user, $passwd) or die(my_wait(FALSE));

O q é q é o:

my_wait()

?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
rikardinhuh

Nao aparece nenhum erro, simplesmente Nao consigo fazer a comparação do que o user meteu com o que esta na dB.. (if (strcmp...)

Podes me explicar mais exactamente para que serve o mysql_real_string que mencionaste? :)

O my_wait é uma função que coloquei numa outra pagina, para caso algo corre-se mal fazer o redirecionamento da pagina.. Ainda nem testei essa parte =S

Qualquer coisa muita naba que diga agradecia compreensão, pois estou a começar =S

Cumps e obrigado

Share this post


Link to post
Share on other sites
brunoais

Nao aparece nenhum erro, simplesmente Nao consigo fazer a comparação do que o user meteu com o que esta na dB.. (if (strcmp...)

Se calhar estás a omitir erros. Experimenta:

error_reporting(0);

logo a seguir do 1º <?php.

Podes me explicar mais exactamente para que serve o mysql_real_string que mencionaste? :)

Carrega nele. É um link. Nada melhor que o próprio manual de instruções para te responder a isso

O my_wait é uma função que coloquei numa outra pagina, para caso algo corre-se mal fazer o redirecionamento da pagina.. Ainda nem testei essa parte =S

É melhor testar. O erro pode ser aí. Eu não sei qual é o "percurso" do programa que estás a ter.

Cumps e obrigado

d nda

ADD:

Com uma pequena analise encontra-se o erro. Só aqui tens 4.

$sqlQuery1 = "SELECT * FROM `tbl_users` WHERE 1`username` LIKE ('$username')";
    $sqlQuery2 = "SELECT * FROM `tbl_users` WHERE 1`md5_password` LIKE('$password')";



    $result1 = MYSQL_QUERY($sqlQuery1);
    $result2 = mysql_query($sqlQuery2);

    if ((strcmp($result1, $username)== 0) && (strcmp($result2, $password) == 0)){echo "sucess";}
    echo $result1,"<br>", $result2, "<br>";

[*]O 1º query, no where, tem aquele 1 n sei a fazer o quê

[*]O 2º query, no where, tem aquele 1 n sei a fazer o quê

[*]Não preparas o código para quando o mysql_query retorna false

[*]Não vais buscar os resultados que a query devolve. Ou seja:

Não usas um destes:

[*]mysql_ fetch_ array

[*]mysql_ fetch_ assoc

[*]mysql_ fetch_ field

[*]mysql_ fetch_ object

[*]mysql_ fetch_ row

(+ info no manual de instruções)


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.