Warning: PHP Startup: Access denied for user 'serwer1918646'@'localhost' (using password: NO) in /funkcje_bazy.php on line 15

0

Szanowni Państwo, Co to oznacza ?

Warning: PHP Startup: Access denied for user 'serwer1918646'@'localhost' (using password: NO) in /funkcje_bazy.php on line 15
Ksi��korama	Ilo�� produkt�w = 0	
Widok koszyka na zakupy
Warto�� = PLN 0.00
Problem:
Zalogowanie niemo�liwe.Nale�y by� zalogowanym, aby przegl�da� t� stron�.
Logowanie

Nie chce się zalogować przez skrypt PHP, pomimo, że połączenie z serwerem istnieje. Jak rozwiązać ten problem. Dziękuję za szczegółowy opis.

2

Upewnij się, że przy łączeniu z bazą danych podajesz poprawny host, login i hasło. Powyższy komunikat wskazuje na to, że przy łączeniu z użytkownikiem serwer1918646 nie podajesz hasła. Jak coś to podeślij kod odpowiadający za połączenie.

0
**Sprawdzałem, jest połączenie z bazą danych mysql kodem**

if( $wynik )
     {
     	echo "Jest połączenie.<br />";
     }
     else
     {
          echo "Brak połączenia.<br />";
     }

**I komputer wyświetlił komunikat  "Jest połączenie". **

**Całość kodu to:**

<?php

$uzytkownik = ......
$haslo = ..........
$db_name = ........
$adres = ............


$wynik = mysql_connect ("$adres", "$uzytkownik", "$haslo");



function lacz_bd()
{
   $wynik = mysql_connect ("$adres", "$uzytkownik", "$haslo");
   if (!$wynik)
      return false;
   $wynik->autocommit(TRUE);
   return $wynik;
}

function wynik_bd_do_tablicy($wynik)
{
   $tablica_wyn = array();

   for ($licznik=0; $rzad = $wynik->fetch_assoc(); $licznik++)
     $tablica_wyn[$licznik] = $rzad;

   return $tablica_wyn;
}

?>
 
**Plik, który uwierzytelnia nam logowanie i wykorzystuje powyższe funkcje to:
**
<?php

require_once('funkcje_bazy.php');

function loguj($nazwa_uz, $haslo)
// sprawdzenie nazwy użytkownika i hasła w bazie danych
// jeżeli tak, zwraca true
// w przeciwnym wypadku false
{
  // łączenie z bazą danych
  $lacz = lacz_bd();
  if (!$lacz)
    return 0;

  // sprawdzenie unikatowości nazwy użytkownika
  $wynik = $lacz->query("select * from admin 
                         where nazwa_uz='$nazwa_uz'
                         and haslo = sha1('$haslo')");
  if (!$wynik)
     return 0;
  
  if ($wynik->num_rows>0)
     return 1;
  else 
     return 0;
}

function sprawdz_uzyt_admin()
// sprawdzenie zalogowanie i powiadomienie, jeżeli nie
{
  global $_SESSION;
  if (isset($_SESSION['uzyt_admin']))
    return true;
  else
    return false;
}

function zmien_haslo($nazwa_uz, $stare_haslo, $nowe_haslo)
// zmiana hasła użytkownika
// zwraca true lub false
{
  // jeżeli stare hasło prawidłowe
  // zmiana hasła na nowe_haslo i zwraca true
  // w przeciwnym wypadku false
  if (loguj($nazwa_uz, $stare_haslo))
  {
    if (!($lacz = lacz_bd()))
      return false;
    $wynik = $lacz->query( "update admin 
                            set haslo = sha1('$nowe_haslo')
                            where nazwa_uz = '$nazwa_uz'");
    if (!$wynik)
      return false;  // brak zmian
    else
      return true;  // zmiana pomyślna
  }
  else
    return false; // nieprawidłowe stare hasło
}


?>

Dziękuję za pomoc

0

To co ja mam zrobić ? Jak wpisuję polecenie mysql -p to wybija mi błąd

0

Ustal jaki host, użytkownik i hasło są poprawne do połączenia z wybraną bazą danych mysql. Domyślnie w xamppie masz "localhost", użytkownik "root" bez hasła. Wyglądałoby to tak:

mysql_connect('localhost', 'root', '');
0

Mam w home.pl serwer

0

Problem polega na tym, że ja mam połączenie. Sprawdzałem komendą:
if( $wynik )
{
echo "Jest połączenie.
";
}
else
{
echo "Brak połączenia.
";
}

0

Która to linia 15 w funkcje_bazy.php?

0

$wynik = mysql_connect ("$adres", "$uzytkownik", "$haslo");

1

Przecież nic nie przekazujesz do tej funkcji, to skąd ma ona wiedzieć, jakie dane ma przyjąć...

I czemu masz łączenie z bazą raz poza funkcją, a raz w funkcji?

1

A tak już zupełnie BTW. to jaką masz wersję PHP na nazwie ustawioną? Nie wiem jakie tam teraz można ustawiać ale raczej poniżej 5.6 to wątpliwe.
Zobacz tu https://www.php.net/manual/en/function.mysql-connect.php i zwróć uwagę na:
5.5.0 This function will generate an E_DEPRECATED error.
A najlepiej zobacz dokładnie co zwraca Ci to połączenie dając zamiast ifa blok try-catch.

0

Jak nie przekazuję. Proszę spojrzeć na plik pierwszy. Jest tam $uzytkownik = ......
$haslo = ..........
$db_name = ........
$adres = ............

Tam gdzie kropki to są wpisane informacje. Nie podawałem, aby haker nie miał dostępu do moich danych na serwerze.

0

To tak nie działa. Musisz poczytać o zasięgu zmiennych. To, że gdzieś w kodzie je umieściłeś to nie znaczy, że one są widoczne dla każdej funkcji.

0
jurek1980 napisał(a):

A tak już zupełnie BTW. to jaką masz wersję PHP na nazwie ustawioną? Nie wiem jakie tam teraz można ustawiać ale raczej poniżej 5.6 to wątpliwe.
Zobacz tu https://www.php.net/manual/en/function.mysql-connect.php i zwróć uwagę na:
5.5.0 This function will generate an E_DEPRECATED error.
A najlepiej zobacz dokładnie co zwraca Ci to połączenie dając zamiast ifa blok try-catch.
**
To co mam zrobić ? Zmienić PHP na starszą wersję ? **

0
jurek1980 napisał(a):

To tak nie działa. Musisz poczytać o zasięgu zmiennych. To, że gdzieś w kodzie je umieściłeś to nie znaczy, że one są widoczne dla każdej funkcji.

**To jak to rozwiązać ? Umieścić jeszcze raz połączenie w funkcji ? **

0

Zacznij od sprawdzenia czy ten kod ma prawo działać, czy nie musisz korzystać z mysqli. Od tego trzeba zacząć. Polecenia mysql() zostały wycofane z nowszych PHP. A najlepiej od razu próbuj to przepisać:
https://www.w3schools.com/php/func_mysqli_connect.asp

0
Po nawiązaniu połączenia i stworzenia połączenia w funkcji function lacz_bd()
{
   $wynik = mysql_connect ("$adres", "$uzytkownik", "$haslo");
   if (!$wynik)
      return false;
   $wynik->autocommit(TRUE);
   return $wynik;
}

I uruchomienia pliku w php otrzymałem: Fatal error: Call to a member function autocommit() on resource in /funkcje_bazy.php on line 18
0

Jak mam to zlikwidować ?

0

Zacznij od tego, żeby uporządkować ten swój kod.

Po pierwsze, używasz mysql_connect a następnie traktujesz to jako OOP :/

Po drugie, nie, nie zmieniaj na niższą wersję PHP. Zmień ją raczej na najnowszą i wtedy automatycznie hosting odrzuci Ci te Twoje funkcje i krzyknie, że mysql się nie używa a lepiej użyć mysqli lub jeszcze lepiej PDO

Po trzecie, zasięg zmiennych to jest to na co powinieneś zwrócić uwagę. Przykładowo:

<?php
  $varA = 'some text';

  function show($someVariable)
  {
    echo $varA.'<br />';
    echo $someVariable.'<br />';
  }

  echo $varA.'<br />';
  echo show('other text<br />');

  /*
  This output:
  some text

  Notice: Undefined variable: varA in D:\www\temp\index.php on line 6

  other text
  */
?>

A jeżeli już chcesz KONIECZNIE mysql używać obiektowo to napisz sobie do tego klasę (lub skorzystaj z jakiejś istniejącej) chociaż po tym kodzie co pokazałeś to raczej niezbyt mi się by chciało coś takiego tworzyć.

0

Stąd wie. Celowo nie podawałem, bo bym upublicznił dostęp do serwera. Tam gdzie są kropki tam są te dane. Co mam zrobić dalej ?

$uzytkownik = ......
$haslo = ..........
$db_name = ........
$adres = ............

1

Zobacz sobie jakiś najprostszy tutorial o logowaniu z użyciem funkcji mysqli czy PDO i dostosuj go do siebie.
Kiedyś kolega @czysteskarpety gdzieś wrzucał chyba gotowca ale za piorun nie mogę go znaleźć. Możesz poszukać sam jak chcesz.
Jakiś przykład pierwszy lepszy z googla: http://softaox.info/how-to-create-a-simple-login-form-in-php-mysqli-tutorial/
Jeśli nie będziesz w stanie tego dopasować do swoich potrzeb, to albo musisz ogarnąć jakieś podstawy pisania kodu albo rozważyć ogłoszenie zlecenia na wykonanie kodu w odpowiednim dziale.

0

**To co ja mam zrobić ? **

0

No przecież @jurek1980 podał Ci przykład jak robić logowanie (patrz jego link). W tym przykładzie jest naprawdę ładnie pokazane co powinieneś zrobić. Tak naprawdę tylko swoje dane musiałbyś podstawić :D

0

Tu brakuje następującej komendy. Piszę: mysqli_select_db("$result", '30877542_baza'); i wyrzuca mi
Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /funkcje_bazy.php on line 11

Co dalej ? Jak to należy wpisać poprawnie składniowo ?

0
//$result umieściłeś w cudzysłowach, czyli tak jak byś wpisywał napis/literał(string). Skasuj cudzysłów.
 mysqli_select_db("$result", '30877542_baza')
0

**Teraz jest: mysqli_select_db($result, '30877542_baza');

Po uruchomieniu dostaję komunikat:
Warning: mysqli_select_db() expects parameter 1 to be mysqli, resource given in /funkcje_bazy.php on line 11

Co dalej ? **

0

Ok od podstaw.
Jak masz jakąś funkcję, to ona może być bezparametrowa np.

function sayHello(){
    echo 'Hello';
}

W nawiasach nie masz żadnego parametru do podania sayHello()
Funkcja może także przyjmować parametry.Np.

function add($parameter1, $parameter2){
    echo ($parameter1+ $parameter2);
}

Jak widzisz funkcja żeby zadziałać musi mieć parametry $parameter1 i $parameter2
Teraz w błędzie który otrzymujesz jest informacja, że pierwszy parametr funkcji mysqli_select_db() jest niewłaściwego typu.
Sprawdź więc to co wpisujesz jako pierwszy parametr.

0

$wynik = mysql_connect ("$adres", "$uzytkownik", "$haslo");

To wpisuję.

A za

$uzytkownik = "byzio";
$haslo = "edek";
$db_name = "book";
$adres = "serwer5374.home.pl";

0

Co jest zle ? Co powinienem zmienić ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1