Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] logowanie a sesja i połączenie z mysql
Forum PHP.pl > Forum > Przedszkole
pijanyadmin
Baza

  1. CREATE TABLE IF NOT EXISTS `userdata` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(15) NOT NULL,
  4. `haslo` varchar(32) NOT NULL,
  5. `email` varchar(40) NOT NULL,
  6. `data` varchar(19) NOT NULL,
  7. `adresip` varchar(25) NOT NULL,
  8. KEY `id` (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;


panel logowania
  1. <?php
  2. require_once("functions.php");
  3. require_once("connect.php");
  4. if(logon()) {
  5. movetosite('panel.php');
  6. exit();
  7. }
  8. ?>
  9.  
  10. <form action="panel.php" method="POST">
  11. <fieldset>
  12. <div>
  13. <label for="login">Login:</label>
  14. <input id="login" type="text" class="text" name="user" maxlength="15" />
  15. </div>
  16. <br /><br />
  17. <div>
  18. <label for="haslo">Hasło:</label>
  19. <input id="haslo" type="password" class="text" name="pass" maxlength="15" />
  20. </div>
  21. <br /><br />
  22. <div>
  23. <input id="fSubmit" class="submit" type="submit" name="sprawdz" value='Zaloguj się' />
  24. </div>
  25. </fieldset>
  26. </form>


sesja

  1. <?php
  2. require_once("connect.php");
  3.  
  4.  
  5.  
  6. function logon() {
  7. if(isset($_POST['user']) && isset($_POST['pass'])) {
  8. $_POST['user'] = md5($_POST['user']);
  9. $_POST['pass'] = md5($_POST['pass']);
  10.  
  11. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '".$_POST['user']."' AND haslo = '".$_POST['pass']."' LIMIT 1");
  12. if(!mysql_num_rows($q)) {
  13. echo 'Niepoprawne Login lub Hasło'; exit;
  14. return 0;
  15. }
  16.  
  17. $_SESSION['logon'] = 1;
  18. $_SESSION['login'] = $_POST['user'];
  19. $_SESSION['password'] = $_POST['pass'];
  20. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  21. $_SESSION['idu'] = md5(rand() + rand());
  22.  
  23.  
  24. return 1;
  25. }
  26.  
  27.  
  28.  
  29. if(!isset($_SESSION['logon']) || !isset($_SESSION['login']) || !isset($_SESSION['password']) || !isset($_SESSION['ip']) || !isset($_SESSION['idu'])) {
  30. // echo "3";
  31. return 0;
  32. }
  33. $login = $_SESSION['login'];
  34. $password = $_SESSION['password'];
  35. $idu = $_SESSION['idu'];
  36. $ip = $_SESSION['ip'];
  37.  
  38. if($_SERVER['REMOTE_ADDR'] != $ip) {
  39. // echo "4";
  40. return 0;
  41. }
  42.  
  43.  
  44. if($_GET['idu'] != $_SESSION['idu']) {
  45. return 0;
  46. } else {
  47. return 1;
  48. }
  49.  
  50. }
  51.  
  52.  
  53.  
  54. function movetosite($strona) {
  55. echo "
  56. <script LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\"
  57. window.location.replace(\"$strona\"); 
  58. </SCRIPT>";
  59. }
  60.  
  61. function resetsession() {
  62. $_SESSION['login'] = '';
  63. $_SESSION['password'] = '';
  64. $_SESSION['logon'] = '';
  65.  unset($_SESSION['login']);
  66.  unset($_SESSION['password']);
  67.  unset($_SESSION['logon']);
  68.  unset($_SESSION);
  69. }
  70.  
  71. ?>


problem polega w zalogowaniu sie i otrzymaniu sesji:
  1. <?php
  2. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '".$_POST['user']."' AND haslo = '".$_POST['pass']."' LIMIT 1");
  3. if(!mysql_num_rows($q)) {
  4. echo 'Niepoprawne Login lub Hasło'; exit;
  5. return 0;
  6. }
  7. ?>


tak mogte się zalogować wez problemu pod warunkiem że login jest taki sam jak haslo, niestety jak zmienie
  1. <?php
  2. haslo = '".$_POST['user']."'
  3. ?>

na
  1. <?php
  2. login = '".$_POST['user']."'
  3. ?>


to w ogóle nie moge się zalogować... co jest nie tak [pomijajnac fakt ze troche to chaotyczny kod]
xbigos
nie znalazlem nigdzie session_start();
pijanyadmin
już poprawiłem
xbigos
session_start() dajesz wszędzie gdzie używasz sesji. http://pl.php.net/session_start

  1. <?php
  2. $user = htmlspecialchars($_POST['user']);
  3. $haslo = htmlspecialchars($_POST['pass']);
  4. $q = mysql_query("SELECT * FROM userdata WHERE user = '$user' AND haslo = '$haslo' LIMIT 1");
  5. if(!mysql_num_rows($q)) {
  6. echo 'Niepoprawne Login lub Hasło'; exit;
  7. return 0;
  8. }
  9. ?>

  1. <?php
  2. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '".$_POST['user']."' AND haslo = '".$_POST['pass']."' LIMIT 1");
  3. ?>

poza tym tu masz blad(chyba) bo nie wiem czy miejsce w ktorym trzymasz nick usera to pole haslo
pijanyadmin
ok, tylko sęk w tym iż nadal jest problem z logowaniem
xbigos
nazwe użytkownika też szyfrujesz przez md5?
pokaz mi jak wyglada przykladowy zrzut z tabeli uzytkowników.
Za dużo funkcji niedługo się nie połapiesz. Staraj się ograniczać dane wciskane do sesji.
spróbuj też robić tak:

$_SESSION['username'] = array(
'pole1' => 'wartosc1',
'pole2' => 'wartosc2');
pijanyadmin
a racja, zmieniłem juz to md5 i jest dobrze

tabela:

  1. INSERT INTO `userdata` (`id`, `login`, `haslo`, `email`, `data`, `adresip`) VALUES
  2. (1, 'qqq', '4eae35f1b35977a00ebd8086c259d4c9', 'zxc@wpw.pl', '19:07:21 06-01-2008', '127.0.0.1'),


a w panelu po zalogowaniu jest błąd związany z tym:

  1. <?php
  2. $query = mysql_query(&#092;"SELECT * FROM userdata WHERE haslo = '$haslo'\");
  3.           $login = mysql_result($query,0,2);
  4.           $email = mysql_result($query,0,4);
  5.           $data = mysql_result($query,0,5);
  6. ?>


  1. <?php
  2. Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 17
  3.  
  4. Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 18
  5.  
  6. Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 19
  7. ?>


całość:

panel:

  1. <?php
  2. require_once(&#092;"functions.php\");
  3. require_once(&#092;"connect.php\");
  4.  
  5. if(!logon()) {
  6.     resetsession();
  7.     movetosite('logowanie.php');
  8.     exit();
  9. }
  10. define(&#092;"IDUS\", \"idu=\".$_SESSION['idu']);
  11.  
  12. $haslo = $_SESSION['login'];
  13.  
  14.  
  15.           $query = mysql_query(&#092;"SELECT * FROM userdata WHERE haslo = '$haslo'\");
  16.           $login = mysql_result($query,0,2);
  17.           $email = mysql_result($query,0,4);
  18.           $data = mysql_result($query,0,5);
  19.           
  20.  
  21. ?>
xbigos
Czyli działa czy nie bo nie zrozumiałem:)
pijanyadmin
nie działa, jest zły odczyt z bazy, z tym jest problem:

Kod
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 17

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 18

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /var/www/cc/panel.php on line 19
dadexix
ale po co używasz tak w ogóle mysql_results?

Kod
          $login = mysql_result($query,0,2);
          $email = mysql_result($query,0,4);
          $data = mysql_result($query,0,5);
zamień sobie na:
Kod
          $dane = mysql_fetch_array($query);
$logn = $dane[login];
$email = $dane[email];
$data = $dane[data]

może ktoś powiedzieć że mysql_result jest szybsze... sam manual mówi że wolniejsze... a może nawet jest szybsze - na jednym rekordzie... ale na 3 napewno jest szybsza funkcja która wg. manual jest szybsza co nie? chodzby dla tego że nie trzeba przetważać wyników 3 razy tylko raz:)

Cytat
Zalecane wydajniejsze alternatywy: mysql_fetch_row(), mysql_fetch_array() i mysql_fetch_object().


Twój problem polega na tym że gdy używasz mysql_result to wywali błąd gdy mysql nie zwróci żadnych wierzy... a jak ma zwrócić jeśli:
w bazie masz hasło w md5

Kod
$_SESSION['password'] = $_POST['pass'];
[....]
$haslo = $_SESSION['login'];
          $query = mysql_query("SELECT * FROM userdata WHERE haslo = '$haslo'");
gdzie tu kodujesz hasło przez md5?

Kod
$haslo = $_SESSION['login'];
zmień na:
Kod
$haslo = md5($_SESSION['login']);

smile.gif
pijanyadmin
poprawiłem i teraz mam coś takiego:

Kod
$haslo = $_SESSION['login'];


$query = mysql_query("SELECT * FROM userdata WHERE login = '$haslo'");
$dane = mysql_fetch_array($query);
$login = $dane[login];
$email = $dane[email];
$data = $dane[data]


i działa wszytko dobrze, tylko czy jest dobrze?

jeśli zmienie

Kod
$haslo = $_SESSION['login'];


na

Kod
$haslo = md5($_SESSION['login']);


logowanie w ogóle nie działa, tzn. mogę się zalogować ale nie są pobierane żadne dane
dadexix
no tak jest dobrze....

Przedtem sprawdzałeś hasło z sesji... teraz sprawdzasz login... a loginu nie kodujesz w bazie więc md5() nie potrzebne:)
pijanyadmin
pojawił się jeszcze jeden problem

edycja już wprowadzonych danych, formularz do pobrania i zmiany danych juz zalogowanego uzytkownika.

includowany plik edycja.php:

Kod
<?php
session_start();

$zapytanie = "SELECT * FROM `userdata` WHERE `login`='haslo'";
$idzapytania = mysql_query($zapytanie);

?>
<form action="edi.php" method="POST">
<?php

echo "
  <table border='0' width='100%' id='table1' height='321'>
        <tr>
                <td width='115'><font face='Tahoma'>login:</td>
                <td> <font face='Tahoma'>$login</font></td>
        </tr>
      
        <tr>
                <td width='115'><font face='Tahoma'>email:</font></td>
                <td> <input type='text' name='email'  value='$email'/></td>
        </tr>
        <tr>
                <td width='115' height='44'>&nbsp;</td>
                <td height='44'> <input type='submit' value='zmien dane'>

        </tr>
  </table>";
?>
</form>


edi.php

Kod
<?php
session_start();

$haslo = $_SESSION['login'];

//pobiera dane z formularza
$email = $_POST['email'];

$zapytanie = "UPDATE  userdata SET email WHERE login = $haslo";
$idzapytania = mysql_query($zapytanie);

echo "dane zmieniione";
?>


jeśli usune WHERE to pole email zmienia sie we wszystkich rekordach a ma zmienic sie w tym który jest aktualnie zalogowany
xbigos
@pijanyadmin. Ja czegoś tu nie rozumiem.
  1. <?php
  2. $zapytanie = "SELECT * FROM `userdata` WHERE `login`='haslo'";
  3. ?>

dziwne masz zapytanie. Porównujesz login do hasła?
potem dajesz
  1. <?php
  2. $idzapytania = mysql_query($zapytanie);
  3. ?>

Z tym sie zgodzę. Ale gdzie reszta?
Nie dziwie się, że się gubisz. Skoro twoje zmienne nie mają żadnego odzwierciedlenia w zawartości
  1. <?php
  2.  
  3. $haslo = $_SESSION['login'];
  4.  
  5. //pobiera dane z formularza
  6. $email = $_POST['email'];
  7.  
  8. $zapytanie = "UPDATE userdata SET email WHERE login = $haslo";
  9. $idzapytania = mysql_query($zapytanie);
  10.  
  11. echo "dane zmieniione";
  12. ?>

poczytaj troche o zapytaniach sql
  1. <?php
  2. $zapytanie = "UPDATE userdata SET email WHERE login = $haslo";
  3. ?>

Co chcesz umieścić w polu email? gdzie informujesz zapytanie, że chcesz dodać właśnie zawartość zmiennej $email.
zapytanie powinno wyglądać tak:
  1. <?php
  2. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = $haslo";
  3. ?>


Według mnie cały kod powinien wyglądać tak:
  1. <?php
  2. $login = 'haslo'; //uzyj w tym miejscu htmlspecialchars()
  3. $zapytanie = "SELECT * FROM `userdata` WHERE `login`='$login`";
  4. $idzapytania = mysql_query($zapytanie);
  5. // Tutaj nie wiem co wpisać bo nie wiem co chciałeś tym osiągnąć
  6. ?>
  7. <form action="edi.php" method="POST">
  8. <?php
  9.  
  10. echo "
  11. <table border='0' width='100%' id='table1' height='321'>
  12. <tr>
  13. <td width='115'><font face='Tahoma'>login:</td>
  14. <td> <font face='Tahoma'>$login</font></td>
  15. </tr>
  16.  
  17. <tr>
  18. <td width='115'><font face='Tahoma'>email:</font></td>
  19. <td> <input type='text' name='email' value='$email'/></td>
  20. </tr>
  21. <tr>
  22. <td width='115' height='44'>&nbsp;</td>
  23. <td height='44'> <input type='submit' value='zmien dane'>
  24.  
  25. </tr>
  26. </table>";
  27. ?>


edi.php (dziwna nazwa pliku:D)
  1. <?php
  2.  
  3. $zalogowany = $_SESSION['login'];
  4.  
  5. //pobiera dane z formularza
  6. $email = htmlspecialchars($_POST['email']);
  7.  
  8. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  9. $idzapytania = mysql_query($zapytanie);
  10. if(!$idzapytania){
  11. echo 'blad';
  12. }
  13. else {
  14. echo 'rekord zaktualizowany';
  15. }
  16. ?>

I staraj się nazywać zmienne na tej podstawie co przechowują.
no i przeczytaj jeszcze to Najczęściej popełniane błędy początkujących programistów. nie jest długie.

Według mnie ten skrypt jest napisany nieczytelnie, niedokładnie a co najgorsze. Nieprzemyślany.

Staraj się w php umieszczać jak najmniej znaczników html ponieważ zwalnia to działanie strony. Ponieważ PHP musi przetworzyć wszystko w echo jako string a jesli dasz normalnym sposobem to tym już się zajmie przeglądarka.
dadexix
  1. <?
  2.  
  3.  
  4. $loginaa = $_SESSION['login'];
  5. $zapytanie = "SELECT * FROM `userdata` WHERE `login`='$loginaa'";
  6. $dane = mysql_fetch_array(mysql_query($zapytanie));
  7.  
  8. echo "<form action=\"edi.php\" method=\"POST\">
  9. <table border='0' width='100%' id='table1' height='321'>
  10. <tr>
  11. <td width='115'><font face='Tahoma'>login:</td>
  12. <td> <font face='Tahoma'>".$dane[login]."</font></td>
  13. </tr>
  14.  
  15. <tr>
  16. <td width='115'><font face='Tahoma'>email:</font></td>
  17. <td> <input type='text' name='email' value='".$dane[email]."'/></td>
  18. </tr>
  19. <tr>
  20. <td width='115' height='44'>&nbsp;</td>
  21. <td height='44'> <input type='submit' value='zmien dane'>
  22.  
  23. </tr>
  24. </table></form>";
  25. ?>
  26. edi.php:
  27. <?
  28.  
  29. $zalogowany = $_SESSION['login'];
  30.  
  31. //pobiera dane z formularza
  32. $email = mysql_real_escape_string($_POST[email]);
  33.  
  34. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  35. $idzapytania = mysql_query($zapytanie);
  36. $idzapytania2 = mysql_fetch_array($idzapytania);
  37. if(!$idzapytania2){
  38. echo 'blad';
  39. }
  40. else {
  41. echo 'rekord zaktualizowany';
  42. }
pijanyadmin
po zmianie:

  1. <?php
  2.  
  3. $loginaa = $_SESSION['login'];
  4. $zapytanie = "SELECT * FROM `userdata` WHERE `login`='$loginaa'";
  5. $dane = mysql_fetch_array(mysql_query($zapytanie));
  6.  
  7. echo "<form action=\"npanel.php?id1=edi&".IDUS."\" method=\"POST\">
  8. <table border='0' width='100%' id='table1' height='321'>
  9. <tr>
  10. <td width='115'><font face='Tahoma'>login:</td>
  11. <td> <font face='Tahoma'>".$dane[login]."</font></td>
  12. </tr>
  13.  
  14. <tr>
  15. <td width='115'><font face='Tahoma'>email:</font></td>
  16. <td> <input type='text' name='email' value='".$dane[email]."'/></td>
  17. </tr>
  18. <tr>
  19. <td width='115' height='44'>&nbsp;</td>
  20. <td height='44'> <input type='submit' value='zmien dane'>
  21.  
  22. </tr>
  23. </table></form>";
  24. ?>


przekierowaniu wywala komunikat

Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/alpha/edi.php on line 11


który jest związany z tym:
  1. <?php
  2. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  3. $idzapytania = mysql_query($zapytanie);
  4. $idzapytania2 = mysql_fetch_array($idzapytania);
  5. ?>
Lion_87
to usuń :
Kod
$idzapytania2 = mysql_fetch_array($idzapytania);

if(!$idzapytania2){
echo 'blad';
}
else {
echo 'rekord zaktualizowany';
}


tak może lepiej:
Kod
if(!$_SESSION['login']){
echo 'blad';
}
else {

$zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
$idzapytania = mysql_query($zapytanie);

echo 'rekord zaktualizowany';
}
pijanyadmin
wpadłem na to, ale wtedy i tak nic się nie zmienia w rekordzie
Lion_87
to jeszcze zmien to

Kod
$email = mysql_real_escape_string($_POST[email]);


na:

Kod
$email = stripslashes ($email );
pijanyadmin
  1. <?php
  2.  
  3. $zalogowany = $_SESSION['login'];
  4.  
  5. //pobiera dane z formularza
  6. $email = stripslashes ($email );
  7.  
  8. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  9. $idzapytania = mysql_query($zapytanie);
  10.  
  11. if(!$idzapytania){
  12. echo 'blad';
  13. }
  14. else {
  15. echo 'rekord zaktualizowany';
  16. }
  17.  
  18. ?>


wygląda to tak i nadal nic...
xbigos
zrób var_dump($zalogowany);
i
var_dump($email);
napisz co CI zwróciła przeglądarka,

var_dump-y dodaj na końcu skryptu po else
pijanyadmin
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/alpha/edi.php on line 11
bladstring(3) "sss" string(10) "test@wp.pl"
Lion_87
a czy wyskakuje któryś z warunków "blad" lub"rekord zaktualizowany" ?
pijanyadmin
tak, podawałem wcześniej, wyskakuje "błąd"
xbigos
może po prostu żaden rekord w Twojej bazie nie spełnia tego warunku który dałeś w mysql_fetch_array
pijanyadmin
zabardzo nie rozumiem jak może nie spełniać warunku skoro wszytko się zgadza?
xbigos
Daj zrzut z bazy danych ale wczesniej sprawdz czy w bazie masz uzytkownika o takiej nazwie jaką Ci zwraca sesja. Normalnie może nie spełniać warunku, może nie masz w bazie użytkownika o takim loginie jaki masz zapisany w sesji

  1. <?php
  2.  
  3. $zalogowany = $_SESSION['login'];
  4. echo '<br /><br />'.$_SESSION['login'].'<br /><br />';
  5. //pobiera dane z formularza
  6. $email = stripslashes ($email);
  7.  
  8. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  9. $idzapytania = mysql_query($zapytanie);
  10.  
  11. if(!$idzapytania){
  12. echo 'blad';
  13. }
  14. else {
  15. echo 'rekord zaktualizowany';
  16. }
  17.  
  18. ?>


Na bank masz gdzieś prosty błąd
pijanyadmin
Kod
INSERT INTO `userdata` (`id`, `login`, `haslo`, `email`, `data`, `adresip`) VALUES
(1, 'qqq', '4eae35f1b35977a00ebd8086c259d4c9', 'ccccccccc', '19:07:21 06-01-2008', '127.0.0.1'),
(2, 'eee', 'd2f2297d6e829cd3493aa7de4416a18f', 'ccccccccc', '19:09:29 06-01-2008', '127.0.0.1'),
(3, 'rrr', '9990775155c3518a0d7917f7780b24aa', 'ccccccccc', '19:13:41 06-01-2008', '127.0.0.1'),
(4, 'ttt', '9990775155c3518a0d7917f7780b24aa', 'ccccccccc', '18:16:38 09-01-2008', '127.0.0.1'),
(5, 'test', '9743a66f914cc249efca164485a19c5c', 'ccccccccc', '18:17:27 09-01-2008', '127.0.0.1'),
(6, 'ggg', 'a3aca2964e72000eea4c56cb341002a4', 'ccccccccc', '18:37:43 09-01-2008', '127.0.0.1'),
(7, 'aaa', '47bce5c74f589f4867dbd57e9ca9f808', 'ccccccccc', '18:46:25 09-01-2008', '127.0.0.1'),
(8, 'ddd', '343d9040a671c45832ee5381860e2996', 'ccccccccc', '18:48:10 09-01-2008', '127.0.0.1'),
(9, 'sss', '9f6e6800cfae7749eb6c486619254b9c', 'ccccccccc', '18:51:18 09-01-2008', '127.0.0.1'),
(10, 'ccc', '4786f3282f04de5b5c7317c490c6d922', 'ccccccccc', '19:49:58 09-01-2008', '127.0.0.1'),
(11, 'bbb', 'a1931ec126bbad3fa7a3fc64209fd921', 'ccccccccc', '19:58:39 09-01-2008', '127.0.0.1'),
(12, 'cdf', '7054d276e84e32244c8b19c6c5bd878f', 'ccccccccc', '23:53:56 09-01-2008', '127.0.0.1'),
(13, 'xcv', '098f6bcd4621d373cade4e832627b4f6', 'ccccccccc', '00:11:26 10-01-2008', '127.0.0.1'),
(14, 'hak', '7eee0bfaef1a055e82206127e5b1380a', 'ccccccccc', '01:08:30 10-01-2008', '127.0.0.1'),
(15, 'tutek', 'f5d1278e8109edd94e1e4197e04873b9', 'ccccccccc', '12:32:16 10-01-2008', '127.0.0.1');


czy jak na moje oko to jest ten login w bazie czyli "sss" ale to nie ma znaczenia, blad jest na wszytkich kontach
xbigos
  1. <?php
  2.  
  3. $zalogowany = "sss";
  4. echo '<br /><br />'.$_SESSION['login'].'<br /><br />';
  5. //pobiera dane z formularza
  6. $email = stripslashes ($email);
  7.  
  8. $zapytanie = "UPDATE userdata SET email = `$email` WHERE login = `$zalogowany`";
  9. $idzapytania = mysql_query($zapytanie);
  10.  
  11. if(!$idzapytania){
  12. echo 'blad';
  13. }
  14. else {
  15. echo 'rekord zaktualizowany';
  16. }
  17.  
  18. ?>


Teraz ustawiłem zmienną zalogowany na sztywno. Spróbuj teraz czy Ci sie email uaktualnia i podaj jeszcze plik edi.php
pijanyadmin
i nic... ehhh
xbigos
Podaj cały plik który Ci aktualizuje rekord i plik edi.php zaraz Ci to całe napisze. Bo już powoli tracę cierpliwosć:) Pamiętaj o tagach, żeby mi się lepiej czytało:D błąd masz w pliku edi.php przy mysql_fetch_array
pijanyadmin
Ty tracisz cierpliwość? a co ja mam powiedzieć jak mam oprucz tego jeszcze sporo roboty na wczoraj i w dodatku z gorączką winksmiley.jpg


to jest to co mi podałeś wcześniej
  1. <?php
  2.  
  3.  
  4. $loginaa = $_SESSION['login'];
  5. $zapytanie = "SELECT * FROM `userdata` WHERE `login`='$loginaa'";
  6. $dane = mysql_fetch_array(mysql_query($zapytanie));
  7.  
  8. echo "<form action=\"npanel.php?id1=edi&".IDUS."\" method=\"POST\">
  9. <table border='0' width='100%' id='table1' height='321'>
  10. <tr>
  11. <td width='115'><font face='Tahoma'>login:</td>
  12. <td> <font face='Tahoma'>".$dane[login]."</font></td>
  13. </tr>
  14.  
  15. <tr>
  16. <td width='115'><font face='Tahoma'>email:</font></td>
  17. <td> <input type='text' name='email' value='".$dane[email]."'/></td>
  18. </tr>
  19. <tr>
  20. <td width='115' height='44'>&nbsp;</td>
  21. <td height='44'> <input type='submit' value='zmien dane'>
  22.  
  23. </tr>
  24. </table></form>";
  25. ?>


a tu edi.php

  1. <?php
  2. require_once("connect.php");
  3.  
  4. $zalogowany = $_SESSION['login'];
  5.  
  6. echo "$zalogowany | $email";
  7. //pobiera dane z formularza
  8. $email = mysql_real_escape_string($_POST[email]);
  9.  
  10. $zapytanie = "UPDATE my SET email='$email' WHERE name='$zalogowany'";
  11. $idzapytania = mysql_query($zapytanie);
  12.  
  13. if(!$idzapytania){
  14. echo 'blad';
  15. }
  16. else {
  17. echo 'rekord zaktualizowany';
  18. }
  19.  
  20. ?>
xbigos
  1. <?php
  2. require_once("connect.php");
  3.  
  4. $zalogowany = $_SESSION['login'];
  5.  
  6. echo $zalogowany . $email;
  7. //pobiera dane z formularza
  8. $email = htmlspecialchars($_POST['email']);
  9.  
  10. $zapytanie = "UPDATE my SET email='$email' WHERE name='$zalogowany'";
  11. $idzapytania = mysql_query($zapytanie);
  12.  
  13. if(!$idzapytania){
  14. echo 'blad';
  15. }
  16. else {
  17. echo 'rekord zaktualizowany';
  18. }
  19.  
  20. ?>


i

  1. <?php
  2.  
  3.  
  4. $zalogowany = $_SESSION['login'];
  5. $zapytanie = mysql_query("SELECT * FROM `userdata` WHERE `login`= `$zalogowany`");
  6. $dane = mysql_fetch_array($query){
  7. $email = htmlspecialchars($dane['email']);
  8. }
  9. ?>
  10. <form action=\"npanel.php?id1=edi&".IDUS."\" method=\"POST\">
  11. <table border='0' width='100%' id='table1' height='321'>
  12. <tr>
  13. <td width="115"><font face="Tahoma">login:</td>
  14. <td> <font face="Tahoma"><?php echo $zalogowany; ?></font></td>
  15. </tr>
  16.  
  17. <tr>
  18. <td width="115"><font face="Tahoma">email:</font></td>
  19. <td> <input type="text" name="email" value="<?php echo $email; ?>"></td>
  20. </tr>
  21. <tr>
  22. <td width="115" height="44">&nbsp;</td>
  23. <td height="44"> <input type="submit" value="zmien dane">
  24.  
  25. </tr>
  26. </table>
  27. </form>


Mogłem gdzieś popełnić błąd więc mnie w razie czego zdebuguj bo za długo bym czekał aż by mi sie krasnolud odpalił. Nie zmieniałem nazw z bazy mysql
pijanyadmin
i... nadal nic.. teraz to się nawet nie wczytuje "$email" biggrin.gif
xbigos
Wiesz co dziasiaj już nie mam cierpliwości jutro w pracy coś Ci napisze chyba, że ktoś zdąży Ci pomóc przede mną.
A weź wszystkie dane usera potrzebne Ci do zmiany up[chnij w sesje. Jutro dostaniesz czystą funkcję. Nara.
u mnie add.php
  1. <?php
  2. require("connect.php");
  3. $zalogowany = $_SESSION['user'];
  4. echo $zalogowany . $email;
  5. //pobiera dane z formularza
  6. $email = htmlspecialchars($_POST['email']);
  7. $query = mysql_query("UPDATE userdata SET email = '$email' WHERE login = '$zalogowany'");
  8.  
  9. if(!$query){
  10. echo 'blad';
  11. }
  12. else {
  13. echo 'rekord zaktualizowany';
  14. }
  15.  
  16. ?>

i index.php
  1. <?php
  2. require("connect.php");
  3. $zalogowany = $_SESSION['user'];
  4. $zapytanie = mysql_query("SELECT * FROM userdata WHERE login ='$zalogowany'");
  5. while($dane = mysql_fetch_array($zapytanie)){
  6. $email = htmlspecialchars($dane['email']);
  7. }
  8. ?>
  9. <form action="add.php" method="POST">
  10. <input type="text" name="email" value="<?php echo $email; ?>">
  11. <input type="submit" value="zmien dane">
  12. </form>



LOL musze wiecej spać. Nie aktualizowało bo nie miało połączenia z bazą. Ale się wygłupiłem. Wstyd mi za siebie. Chociaż może usprawiedliwi mnie to, że od rańca jeszcze browara nie piłem. Teraz działa. usunąłem troche tagów html zeby było czytelniej.
Lion_87
no może teraz

i wpisz tak jak napisałem jeśli działa to potem se pozmienaiaj

Kod
<?php

session_start();

  @$polaczenie = mysql_pconnect("===","===","====");
  if (!$polaczenie) {
    echo "Nie udało się nawi±zać poł±czenia z serwerem.";
    exit;
   }
  mysql_select_db("===");
  if(!mysql_select_db("====")) {
   echo "Nie udało się poł±czyć z baz±";
   exit;
  }


$zalogowany = $_SESSION['login'];
$query = mysql_query("SELECT email FROM `===` WHERE `name`=`$zalogowany`");
$result = mysql_query ($query);
$_SESSION['email'] = $login['email'];
$email = $_SESSION['email'];
    
echo"
<form action=indexa.php method=POST>
  <table border='0' width='100%' id='table1' height='321'>
        <tr>
                <td width='115'><font face='Tahoma'>login:</td>
                <td> <font face='Tahoma'>$zalogowany</font></td>
        </tr>
      
        <tr>
                <td width='115'><font face='Tahoma'>email:</font></td>
                <td> <input type='text' name='email' value='$email'></td>
        </tr>
        <tr>
                <td width='115' height='44'>&nbsp;</td>
                <td height='44'> <input type='submit' value='zmien dane'>

        </tr>
  </table>
  </form>";
    
?>


Kod
<?php
session_start();
  @$polaczenie = mysql_pconnect("===","===","===");
  if (!$polaczenie) {
    echo "Nie udało się nawi±zać poł±czenia z serwerem.";
    exit;
   }
  mysql_select_db("===");
  if(!mysql_select_db("===")) {
   echo "Nie udało się poł±czyć z baz±";
   exit;
  }

$zalogowany = $_SESSION['login'];

$emaila=$_POST['email'];

echo "$zalogowany | $email<br />";
//pobiera dane z formularza


$zapytanie = "UPDATE === SET email='$emaila' WHERE name='$zalogowany'";
$idzapytania = mysql_query($zapytanie);

if(!$idzapytania){
echo 'blad';
}
else {
echo 'rekord zaktualizowany';
}

?>
pijanyadmin
u mnie to wygląda tak:

formularz:

  1. <?php
  2. require("connect.php");
  3. $zalogowany = $_SESSION['user'];
  4. $zapytanie = mysql_query("SELECT * FROM userdata WHERE login ='$zalogowany'");
  5. while($dane = mysql_fetch_array($zapytanie)){
  6. $email = htmlspecialchars($dane['email']);
  7. }
  8. ?>
  9. <form action='npanel.php?id1=edi&amp;<?php echo IDUS; ?>' method="POST">
  10. <input type="text" name="email">
  11. <input type="submit" value="zmien dane">
  12. </form>


i edi.php

  1. <?php
  2. require("connect.php");
  3.  
  4. $zalogowany = $_SESSION['user'];
  5.  
  6. //pobiera dane z formularza
  7. $email = htmlspecialchars($_POST['email']);
  8. $query = mysql_query("UPDATE userdata SET email = '$email' WHERE login = '$zalogowany'");
  9.  
  10. if(!$query){
  11. echo 'blad';
  12. }
  13. else {
  14. echo 'rekord zaktualizowany';
  15. }
  16.  
  17. ?>


bajer polega na tym że po wysłaniu zmienionego maila wyświetla się "rekord zaktualizowany" tylko szkoda że w rzeczywistości tego nie robi biggrin.gif rekord pozostaje nietknięty
xbigos
HAHAHAHA A mi zmienia:) weź wypier*** narazie to badziewie z pola action w pormularzu daj bezposredni link.
pijanyadmin
zaskocze Cie... zrobiłem już nawet osobne pliki, baze i... nie zmienia rekordów biggrin.gif nie mam pojęcia gdzie jest błąd, bo wszytko mam tak samo jak tu na forum, a ten badziew o którym wspominasz to myk do sesji, kazdy link na stronie po zalogowaniu go ma... kurde musze przestać pisać po pijaku... tylko że za postanowienie noworoczne nie tykam % i trzymam sie juz 10 dni biggrin.gif ale i tak pisanie skryptu mi nie idzie biggrin.gif
xbigos
To ja Ci już nie pomogę. Mi zmienia. I to jest dziwne:) nara
pijanyadmin
a może jest coś z sesją nie tak:

  1. <?php
  2. require_once("connect.php");
  3.  
  4.  
  5.  
  6. function logon() {
  7. if(isset($_POST['user']) && isset($_POST['pass'])) {
  8. $_POST['user'] = md5($_POST['user']);
  9. $_POST['pass'] = md5($_POST['pass']);
  10.  
  11. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '".$_POST['user']."' AND haslo = '".$_POST['pass']."' LIMIT 1");
  12. if(!mysql_num_rows($q)) {
  13. echo 'Niepoprawne Login lub Hasło'; exit;
  14. return 0;
  15. }
  16.  
  17. $_SESSION['logon'] = 1;
  18. $_SESSION['login'] = $_POST['user'];
  19. $_SESSION['password'] = $_POST['pass'];
  20. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  21. $_SESSION['idu'] = md5(rand() + rand());
  22.  
  23.  
  24. return 1;
  25. }
  26.  
  27.  
  28.  
  29. if(!isset($_SESSION['logon']) || !isset($_SESSION['login']) || !isset($_SESSION['password']) || !isset($_SESSION['ip']) || !isset($_SESSION['idu'])) {
  30. // echo "3";
  31. return 0;
  32. }
  33. $login = $_SESSION['login'];
  34. $password = $_SESSION['password'];
  35. $idu = $_SESSION['idu'];
  36. $ip = $_SESSION['ip'];
  37.  
  38. if($_SERVER['REMOTE_ADDR'] != $ip) {
  39. // echo "4";
  40. return 0;
  41. }
  42.  
  43.  
  44. if($_GET['idu'] != $_SESSION['idu']) {
  45. return 0;
  46. } else {
  47. return 1;
  48. }
  49.  
  50. }
  51.  
  52.  
  53.  
  54. function movetosite($strona) {
  55. echo "
  56. <script LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\"
  57. window.location.replace(\"$strona\"); 
  58. </SCRIPT>";
  59. }
  60.  
  61. function resetsession() {
  62. $_SESSION['login'] = '';
  63. $_SESSION['password'] = '';
  64. $_SESSION['logon'] = '';
  65.  unset($_SESSION['login']);
  66.  unset($_SESSION['password']);
  67.  unset($_SESSION['logon']);
  68.  unset($_SESSION);
  69. }
  70.  
  71. ?>


chociaż jak na to patrze to... tak, coś w tym może być...
xbigos
po co przechowujesz w sesji hasło?
  1. <?php
  2. unction logon() {
  3. if(isset($_POST['user']) && isset($_POST['pass'])) {
  4. $_POST['user'] = md5($_POST['user']);
  5. $_POST['pass'] = md5($_POST['pass']);
  6.  
  7. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '".$_POST['user']."' AND haslo = '".$_POST['pass']."' LIMIT 1");
  8. ?>

Zamień na
  1. <?php
  2. function logon() {
  3. if(isset($_POST['user']) && isset($_POST['pass'])) {
  4. $login = htmlspecialchars($_POST['user']);
  5. //Nie rozumiem po co w md5 dajesz nazwe uzytkownika z forumlarza. 
  6. $haslo = md5(htmlspecialchars($_POST['pass']));
  7.  
  8. $q = mysql_query("SELECT * FROM userdata WHERE haslo = '$haslo' AND login = '$login' LIMIT 1");
  9. ?>
pijanyadmin
wybaczcie za odgrzewanie starego kotleta ale może się to komuś przyda jak będzie kiedyś czegoś szukał dla siebie. Już wiem gdzie był błąd

  1. <?php
  2. $zalogowany = $_SESSION['user'];
  3. ?>


było trzeba zamienić na

  1. <?php
  2. $zalogowany = $_SESSION['login'];
  3. ?>


dziękuje wszystkim za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.