Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypt dla adminow malych sieci lan., SQL mi nie odpowiada O.o
Shimada
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 23.05.2005

Ostrzeżenie: (0%)
-----


Pisze skrypt ktory moze pomoc administratorom malych sieci lan, istnieje juz cos takiego tyle ze jest dla duzych sieci i dziala tylko pod linuksem (LMS).

Kod
<?php
require('config.scr.php');

$usr_login = $login;
$usr_pass = $haslo;

$sql_connect = mysql_connect($sql_host, $sql_login, $sql_passwd)
   or die('Wystąpił błąd: ' . mysql_error());
mysql_select_db("lan_info");
$id = mysql_query('SELECT id FROM login WHERE login='.$usr_pass);
$login = mysql_query('SELECT login FROM login WHERE login='.$usr_pass);
$pass = mysql_query('SELECT password FROM login WHERE login='.$usr_pass);
mysql_close($sql_connect);

if($usr_pass == $pass){
echo('Zostałeś zalogowany do systemu!
<br>Twój ID: '.$id.'
<br>Twój Login: '.$login.'
<br>Twoje Hasło: '.$pass);
}
else{
include('error/403.php');
}

?>


Zmienne $login i $haslo są pobierane z formularza, dane serwera z pliku config.scr.php

Kod
<?php
//          LAN Manager
//      ©2005-2007 Shimada
//     Skrypt konfiguracyjny
//
// W tym pliku znajdują się ustawienia całego skryptu.

// Baza danych SQL //
$sql_host = 'localhost'; //Adres Serwera SQL
$sql_login = 'xxx';     //Login Serwera SQL
$sql_passwd = 'xxxxx'; //Haslo Serwera SQL
?>

Zmienne $id $login $pass sa puste po wykonaniu skryptu i niemam pojecia dla czego i co jeszcze nie dziala. (IMG:http://forum.php.pl/style_emoticons/default/ohmy.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tiraeth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Po wykonaniu funkcji mysql_query na zmiennej, powinineś przepisać dane z tymczasowego miejsca w MySQL to tablicy, wykonując funkcję: mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual. Cały Twój kod jest zbędny.. wszystkie dane można pobrać przy użyciu jednego zapytania:
  1. <?php
  2. $sql_connect = mysql_connect($sql_host, $sql_login, $sql_passwd)
  3.  or die('Wystąpił błąd: ' . mysql_error());
  4. mysql_select_db(&#092;"lan_info\");
  5.  
  6. $usr_login = 'Shimada';
  7.  
  8. $sql = &#092;"SELECT id, login, password FROM login WHERE login='\".$usr_login.\"' LIMIT 1\";
  9. $res = mysql_query($sql) or die(mysql_error());
  10. $dane = mysql_fetch_assoc($res);
  11.  
  12. echo '<pre>';
  13. print_r($dane);
  14. echo '</pre>';
  15.  
  16. mysql_close($sql_connect);
  17. ?>


tablica $dane przetrzymuje informacje (id, login i hasło)... co do tego błędu to musisz pamiętać, że wybierając dane z bazy przy sprawdzaniu warunków, wartość danej kolumny dla stringa powinna być umieszczona w pojedyńczych cudzysłowiach. Dodatkowo ustawiaj LIMIT 1 aby przypadkiem nie pobrało kilka danych od użytkowników o tych samych nazwach (jeżeli pole login nie ma atrybutu UNIQUE).

pozdrawiam!
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 00:02