Ga naar inhoud

Aanbevolen berichten

Geplaatst:

Ik vermoed dat het toch iets te maken heeft met de ´user´ rechten op je mysql.

Deze rechten zitten ingebakken in een database meestal genaamd ´mysql´.

Ik denk dat met de gebruikersnaam die jij invoert je geen verbinding mag leggen vanuit het ip-adres waarmee je wilt verbinden. De mysql service controleert namelijk op een aantal dingen:

- bestaat de user?

- is het wachtwoord ok?

- mag de user vanuit die computer wel inloggen? (localhost of 127.0.0.1 is altijd wel toegestaan)

- welke databases mag de user dan zien, bevragen en bewerken?

Misschien dat er volgens de mysql specialisten nog wat stappen tussen zitten, maar bij die 3e stap gaat het denk ik fout. Ik denk dat als je bij 'host' niet 'localhost' of '127.0.0.1' invult je geen toegang hebt tot de mysql database als die gebruiker.

[aan het bewerken]

- - - Updated - - -

Uitbreiding op mijn vorige bericht!

Ik zie net in jouw code bij 'host' het volgende staan:

'host' => '192.168.17*.**'

Ik denk als je dat veranderd naar 'localhost' of '127.0.0.1' dat het dan wel moet lukken.

Als je database NIET op dezelfde computer draait, dan moet je dit in die 'mysql' tabel aanpassen. Vaak kun je met phpmyadmin (http://www.phpmyadmin.net/home_page/index.php) wel een beheerinterface krijgen voor je mysql database. Hierin kun je ook per gebruiker aangeven wat de rechten zijn. Je moet dan het procent-teken (%, dit staat voor 'alle ip-adressen') gebruiken in combinatie met de gebruikersnaam en de rechten (zoals select, update, delete, drop, etc).

Geplaatst: (aangepast)
Ik vermoed dat het toch iets te maken heeft met de ´user´ rechten op je mysql.

Deze rechten zitten ingebakken in een database meestal genaamd ´mysql´.

Ik denk dat met de gebruikersnaam die jij invoert je geen verbinding mag leggen vanuit het ip-adres waarmee je wilt verbinden. De mysql service controleert namelijk op een aantal dingen:

- bestaat de user?

- is het wachtwoord ok?

- mag de user vanuit die computer wel inloggen? (localhost of 127.0.0.1 is altijd wel toegestaan)

- welke databases mag de user dan zien, bevragen en bewerken?

Misschien dat er volgens de mysql specialisten nog wat stappen tussen zitten, maar bij die 3e stap gaat het denk ik fout. Ik denk dat als je bij 'host' niet 'localhost' of '127.0.0.1' invult je geen toegang hebt tot de mysql database als die gebruiker.

[aan het bewerken]

- - - Updated - - -

Uitbreiding op mijn vorige bericht!

Ik zie net in jouw code bij 'host' het volgende staan:

'host' => '192.168.17*.**'

Ik denk als je dat veranderd naar 'localhost' of '127.0.0.1' dat het dan wel moet lukken.

Als je database NIET op dezelfde computer draait, dan moet je dit in die 'mysql' tabel aanpassen. Vaak kun je met phpmyadmin (phpMyAdmin) wel een beheerinterface krijgen voor je mysql database. Hierin kun je ook per gebruiker aangeven wat de rechten zijn. Je moet dan het procent-teken (%, dit staat voor 'alle ip-adressen') gebruiken in combinatie met de gebruikersnaam en de rechten (zoals select, update, delete, drop, etc).

Ik heb geen wachtwoord ingesteld op de database en heb alle permissie's gegeven aan root waar alle ip addressen aan kunnen verbinden ( Doormiddel van % ).

Nu probeer ik het via localhost en krijg ik nogsteeds hetzelfde probleem:

post-28323-1417705700,8122_thumb.png

[color=#000000][font=Times New Roman]SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'loginroot'
[/font][/color]

Alvast bedankt.

post-28323-1417705700,791_thumb.jpg

aangepast door poonkje112
Geplaatst:

De melding die je nu meegeeft is dat hij geen gebruikersnaam kan vinden.

Wat hij aangeeft is:

Toegang geweigerd voor gebruiker:  ''   (blanco)
vanuit 'localhost'
op de database 'loginroot'

Ik ga je code even reviewen, misschien dat je variabele niet goed wordt overgenomen.

Geplaatst:

Deze regel is de boosdoener:

$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db') . Config::get('mysql/username') , Config::get('mysql/password'));

Het resultaat van deze (DSN) string is namelijk dit:

mysql:host=localhost;dbname=loginroot

Maar jouw resultaat moet zijn:

mysql:host=localhost;dbname=login

Het probleem zit hem in de punt-teken tussen Config::get('mysql/db') en Config::get('mysql/username')

dat moet een comma zijn en dan zou het moeten werken.

De code die je nu gebruikt gaat er vanuit dat je de naam van de database en de gebruikersnaam aan elkaar geplakt worden en dat dat de naam van je database wordt ([db][username], ofwel: loginroot)

En je wachtwoord (blanco) de gebruikersnaam is (vandaar ook de ''@'localhost')

Verander die regel dus in dit en het werkt:

$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db') , Config::get('mysql/username') , Config::get('mysql/password'));

Groeten,

Leroy

Geplaatst:
Deze regel is de boosdoener:

$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db') . Config::get('mysql/username') , Config::get('mysql/password'));

Het resultaat van deze (DSN) string is namelijk dit:

mysql:host=localhost;dbname=loginroot

Maar jouw resultaat moet zijn:

mysql:host=localhost;dbname=login

Het probleem zit hem in de punt-teken tussen Config::get('mysql/db') en Config::get('mysql/username')

dat moet een comma zijn en dan zou het moeten werken.

De code die je nu gebruikt gaat er vanuit dat je de naam van de database en de gebruikersnaam aan elkaar geplakt worden en dat dat de naam van je database wordt ([db][username], ofwel: loginroot)

En je wachtwoord (blanco) de gebruikersnaam is (vandaar ook de ''@'localhost')

Verander die regel dus in dit en het werkt:

$this->_pdo = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db') , Config::get('mysql/username') , Config::get('mysql/password'));

Groeten,

Leroy

Dat heeft gewerkt groot en deels nu nu is er een fout op lijn 6 van index zie ik nu:

Index.php

<?php 
require_once 'core/init.php';


$user = DB::getInstance()->get('users', array('username', '=', 'alex'));


[b]if(!$user->count()) {[/b]
   echo 'No user!';
} else {
   echo 'OK!';
}

Probleem melding op localhost:

post-28323-1417705700,8384_thumb.jpg

Probleem melding op andere computer:

post-28323-1417705700,8596_thumb.png

Geplaatst:

Dat eerste probleem komt denk ik omdat de tabel "users" nog niet bestaat of dat de query geen resultaat geeft of door een totaal ander probleem

Je gebruikt namelijk een database classe (DB.php) die ik niet ken, en hij is totaal niet valide.

Ik weet niet of je Object georiënteerd kunt programmeren, maar tijdens de methode "action" in de DB classe (DB.php) returned hij

- of de classe

- of false

- of niets

Met dat resultaat wil je de methode 'count()' oproepen, maar dat kan ALLEEN wanneer die 'action'-methode de classe terug geeft (dus optie 1). Bij alle andere geeft hij die foutmelding die jij krijgt.

Ik zou voorstellen om een andere Database classe te gebruiken zoals deze: https://github.com/ajillion/PHP-MySQLi-Database-Class

Of gebruik een PHP framework in combinatie met die Database classe. Een simpel PHP framework is FatFreeFramework, ofwel het F3-framework (Home | Fat-Free Framework for PHP)

Dit is een heel klein framework waarmee je al heel veel kunt doen met veel minder code dan wanneer je het allemaal zelf moet gaan ontwikkelen.

Met een beetje kennis kun je die database classe ook wel combineren met het F3-framework.

Je tweede probleem ligt aan je Xamp configuratie. Ik denk als je index.php erachter typt dat het wel werkt.

Als je Xamp en Mysql wilt gebruiken om zelf een beetje te programmeren op je eigen computer en dit mogelijk te delen kan ik beter aanraden om iets te gebruiken zoals UsbWebserver (Usbwebserver V8)

Je kunt dit op een USB stickje zetten en op elke pc die je gebruikt gewoon starten, je hoeft hier namelijk niets voor te installeren. Je moet er alleen wel voor zorgen dat je huidige Xamp en Mysql server verwijderen anders draaien er 2 dezelfde services op dezelfde poort en daar gaat je pc niet mee akkoord.

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.