mysql_real_escape_string geef error
Ik had een vraagje ik ben bezig met een pagina die bepaalde data uit een cookie haalt, maar deze wil ik (extra) veilig maken.
Dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$user = $_COOKIE["Username"];
$pass = $_COOKIE["Password"];
$user = stripslashes($user);
$pass = stripslashes($pass);
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
// Connects to your Database
mysql_connect("localhost", "XX", "XX") or die(mysql_error());
mysql_select_db("XX") or die(mysql_error());
$data = mysql_query("SELECT * FROM members WHERE Username = '$user' AND Password = '$pass'")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
Print "<th>Username:</th> <td>".$info['username'] . "</td> ";
}
?>
$user = $_COOKIE["Username"];
$pass = $_COOKIE["Password"];
$user = stripslashes($user);
$pass = stripslashes($pass);
$user = mysql_real_escape_string($user);
$pass = mysql_real_escape_string($pass);
// Connects to your Database
mysql_connect("localhost", "XX", "XX") or die(mysql_error());
mysql_select_db("XX") or die(mysql_error());
$data = mysql_query("SELECT * FROM members WHERE Username = '$user' AND Password = '$pass'")
or die(mysql_error());
while($info = mysql_fetch_array( $data ))
{
Print "<th>Username:</th> <td>".$info['username'] . "</td> ";
}
?>
maar als ik de mysql_real_escape_string er in zet krijg ik deze error's:
*******************************
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'justade'@'localhost' (using password: NO) in /home/justade/domains/tracemypc.co.cc/public_html/user/test.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/justade/domains/tracemypc.co.cc/public_html/user/test.php on line 13
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'justade'@'localhost' (using password: NO) in /home/justade/domains/tracemypc.co.cc/public_html/user/test.php on line 14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/justade/domains/tracemypc.co.cc/public_html/user/test.php on line 14
//************************
wel deze zonder de mysql_real_escape_string wel werkt.
Zou iemand zo vriendelijk willen zijn om te kijken wat ik fout doe.
Met vriendelijke groet,
Daan
En heb je meerdere users met dezelfde naam en hetzelfde password? Lijkt mij niet. Dan heb je ook geen while() nodig.
En waarom sla je een wachtwoord in een cookie op? Nergens voor nodig....En ook onveilig.
Verder kun je er van uit gaan dat dit ook bij de cookie gebeurd, daarom is deze bijna niet te kraken en wanneer de gebruiker uitlogt worden de gebruikersgegevens om gezet naar gegevens die niet legitiem zijn aan een gebruiker en daarom geweigerd.
Maar nu eigenlijk terug naar het probleem, wat doe ik fout ;-)
Dan alsnog is het onnodig. Met meerdere keren hashen wordt de kans op een collission steeds groter,meen ik.En dus onveiliger. Wachtwoorden horen alleen in de database.
Ik heb hier de database, maar hier is waarschijnlijk niets aan te zien
-- phpMyAdmin SQL Dump
-- version 3.4.2
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Genereertijd: 29 dec 2011 om 21:34
-- Serverversie: 5.1.57
-- PHP-Versie: 5.2.17
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `justad`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `members`
--
CREATE TABLE IF NOT EXISTS `members` (
`admin` int(1) NOT NULL DEFAULT '0',
`id` int(4) NOT NULL AUTO_INCREMENT,
`username` varchar(65) NOT NULL DEFAULT '',
`password` varchar(65) NOT NULL DEFAULT '',
`Firstname` varchar(225) NOT NULL,
`Lastname` varchar(225) NOT NULL,
`Streetadress` varchar(225) NOT NULL,
`Zipcode` varchar(225) NOT NULL,
`City` varchar(225) NOT NULL,
`Email` varchar(225) NOT NULL,
`Country` varchar(225) NOT NULL,
`Birthmonth` varchar(225) NOT NULL,
`Birthday` varchar(226) NOT NULL,
`Birthyear` varchar(225) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `members`
--
INSERT INTO `members` (`admin`, `id`, `username`, `password`, `Firstname`, `Lastname`, `Streetadress`, `Zipcode`, `City`, `Email`, `Country`, `Birthmonth`, `Birthday`, `Birthyear`) VALUES
(0, 1, 'john', '1234', '', '', '', '', '', '', '', '', '', ''),
(1, 2, 'user', 'hash passwprd', 'Daan', 'tje', 'straat', 'nummer', 'Amersfoort', 'mijn e-amil', 'Netherlands', '', '', '');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Toevoeging op 29/12/2011 21:42:38:
Welke manier kan ik dan wel als beste gebruiken
Daan Seegers op 29/12/2011 21:41:27:
Natuurlijk is deze al verbonden met een database
Nee hoor.
Jij maakt verbinding met de database op regel 14, maar op regel 10 probeer jij de verbinding al te gebruiken. Ook mysql_real_escape_string() heeft verbinding nodig.
Toevoeging op 29/12/2011 21:46:59:
`Birthmonth` varchar(225) NOT NULL,
`Birthday` varchar(226) NOT NULL,
`Birthyear` varchar(225) NOT NULL,
Wat is er mis met een gewoon date-veld?
"Wat is er mis met een gewoon date-veld?"
Dit komt natuurlijk ook op de site te staan,
Maar de krijgt een belangrijk aspect betreft tijd.
het admin paneel zal openflahchart gebruiken en deze heb ik nodig voor de statistieken.
Tip: http://teethgrinder.co.uk/open-flash-chart/ geweldige site :-)
Gelukkig kan je een datetime veld een eigen indeling geven.....
Een fatsoenlijk ingerichte database heeft niks met flash te maken. Je gebruikt nu in de database 676 bytes voor de opslag van één datum terwijl dat in enkele bytes kan. Beetje verspilling lijkt mij. Daarbij komt ook nog dat er nu op geen enkele nette manier op gesorteerd kan worden.
Fraaie topic, in elke reactie van San The en Aar staan tips en in elke reactie van Daan lees je zijn verdediging en negeert hij de tips....
want dat kan ik binnen enkele minuten omzetten
Ja en niet 6x md hashen, zie de tip van Aar
ik wil ze in deze kwestie alleen met elkaar vergelijken
Cookie & SESSIONS
Klein vraagje nog
Indien ik iets in een session wil zetten/halen doe ik het dan zo goed?
GR, daan
Toevoeging op 29/12/2011 22:33:08:
die dubbel echo was niet de bedoeling ;-)
Daan Seegers op 29/12/2011 22:32:44:
die dubbel echo was niet de bedoeling ;-)
Die . (punt) ook niet lijkt mij.