Paar vraagjes over PhpMyLogon
Pagina: « vorige 1 2 3 volgende »
Ik denk dus dat ik dat stukje ook toe moet voegen aan mijn menu-script..?
Waar ken je een waarde toe aan $_SESSION('user_id'] / waar maak je die aan?
Alle code die je tot nu toe hebt laten zien is een controle of die sessie bestaat, maar zolang die nergens wordt aangemaakt, zal dat altijd een false opleveren.
nee, nu zet je de sessies alleen maar aan. het maakt het gebruik ervan dus mogelijk. je zult zelf nog alle session variabelen moeten maken
Kan het probleem nergens anders liggen ?
Rainier van Es op 13/04/2012 19:00:04:
Ik neem aan dat die gewoon in het loginsysteem staan, toch ?
Kan het probleem nergens anders liggen ?
Kan het probleem nergens anders liggen ?
Die vraag kunnen wij toch niet beantwoorden? Het is jouw script (althans; jij hebt het ergens vandaan gehaald). Jij kunt er in kijken/controleren/testen. Wij kunnen alleen met de info die jij geeft proberen om te helpen.
Rainier van Es op 10/04/2012 14:52:29:
Ik weet dat het mij niet geadviseerd wordt om dit script te gebruiken, maar omdat ik beginner in PHP ben is het handig om ergens te beginnen!
Als je geen idee hebt waar je mee bezig bent, misschien beginnen met iets anders/makkelijkers? Of ga op zoek naar een tut hierover. Ze zijn er echt.
Stel; die zou ergens staan, en dat met die sessie is allemaal OK, kan het dan nog ergens anders aan liggen?
Rainier van Es op 13/04/2012 19:30:11:
Stel; die zou ergens staan, en dat met die sessie is allemaal OK, kan het dan nog ergens anders aan liggen?
Hoe zo stel? :s
Staat het er/is het met die sessie ok of niet?
Je vraagt nu aan ons om te gaan zitten gokken over andere mogelijke oorzaken, zonder zelf de moeite te willen nemen om te kijken of het wel goed zit met die sessie.
Controleer of iets de oorzaak kan zijn en ga niet eerst op zoek naar mogelijk andere oorzaken.
Als thuis een lamp het niet meer doet, ga je dan ook eerst bellen met je stroomleverancier om te vragen of er mogelijk een stroomstoring is? Dan ga je toch eerst controleren of die lamp stuk is, zo niet, ga je kijken of er een stop uit ligt. Als je hele huis geen stroom meer blijkt te hebben, ga je eens rond kijken of er een stroomstoring in de buurt is.
Ik heb even alles nogmaals bekeken en ja, er word een sessie gemaakt.
probeer or die() te gebruiken die vertellen je de fout, maar een echo van alle variablen om te kijken of ze bestaan.
Code (php)
1
session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/login.php:11) in /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/config.php on line 5
en
Code (php)
1
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/login.php:11) in /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/config.php on line 5
Als ik succesvol ben ingelogd krijg ik deze meldingen:
Code (php)
1
2
3
2
3
Notice: Undefined index: cookie in /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/login.php on line 109
Notice: Undefined variable: loginsucces in /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/login.php on line 125
Notice: Undefined variable: loginsucces in /var/www/vhosts/mywebsite.com/httpdocs/coshaco/secured/login.php on line 125
De foutmeldingen spreken voor zich. Toch...
Quote:
Notice: Undefined index: cookie in /var/www/vhosts/rainiervanes.com/httpdocs/coshaco/secured/login.php on line 103
Vanaf lijn 103 staat:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php if($_POST['cookie'] == "do") {
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(eregi("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `".$db_tbl."` SET cookie_pass = '".$cookiecode."' WHERE name = '".$_POST['user']."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $userid, time() + 365 * 86400);
setcookie("cookie_pass", $cookiepass, time() + 365 * 86400);
}
?>
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(eregi("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `".$db_tbl."` SET cookie_pass = '".$cookiecode."' WHERE name = '".$_POST['user']."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $userid, time() + 365 * 86400);
setcookie("cookie_pass", $cookiepass, time() + 365 * 86400);
}
?>
Wat doe ik fout?
eregi is verouderd!!
Je query is lek.
Mis foutcontrole.
Is er een manier hoe ik dat op kan lossen?
Vooruit, korte toelichting:
1) controleren of cookie bestaat
2) vervangen door preg_match
3) input vooraf controleren / beveiliging inbouwen (mysql_real_escape_string)
4) inbouwen (zijn heeeel veel topics over te vinden).
Het zou me echt een heel stuk verder helpen.
Verder; heeft het inbouwen van de beveiliging met mysql_real_escape_string iets te maken met het werkende krijgen van deze code?
Nogmaals mijn code vanaf regel 103:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if($_POST['cookie'] == "true") {
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(preg_match("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `".$db_tbl."` SET cookie_pass = '".$cookiecode."' WHERE name = '".$_POST['user']."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $userid, time() + 365 * 86400);
setcookie("cookie_pass", $cookiepass, time() + 365 * 86400);
}
?>
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(preg_match("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `".$db_tbl."` SET cookie_pass = '".$cookiecode."' WHERE name = '".$_POST['user']."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $userid, time() + 365 * 86400);
setcookie("cookie_pass", $cookiepass, time() + 365 * 86400);
}
?>
Toevoeging op 15/04/2012 15:15:12:
Het probleem met de tekst die moest veranderen bij het inloggen is opgelost (geen idee wat er fout ging..)!
Bedankt allemaal! ;)
Regel 1: TRUE mag zonder aanhalingstekens, gebruik ===
Regel 3: zo willekeurig is dat niet, omdat de tijd bekend is. Er zijn betere functies voor.
Regel 10: Verwijder de backticks (de `) en gebruik mysql_real_escape_string();
Daarnaast: waar set je $_SESSION['user_id']?
Superbedankt Eddy, ik zal er eens naar kijken! ;-)