Ik ben bezig met een ledensysteem, maar hij wilt een variabele geen value mee geven, dit is mijn code:
Alle functies die van DBC af komen die doen het gewoon, daar is niks mis mee. Maar hij wilt de id niet mee geven aan de variabele $userId. De query doet het ook gewoon in Pma.PHP Code:
<?php
class User
{
private static $userId;
public static function verifyLogin()
{
if(isset($_POST["verstuur"]))
{
if(!empty($_POST["wachtwoord"]) && !empty($_POST["email"]))
{
DBC::connect();
$result = DBC::executeQuery("SELECT id FROM gebruikers WHERE email = '" . $_POST["email"] . "' AND wachtwoord = '" . md5($_POST["wachtwoord"]) . "'");
if(DBC::isResultEmpty($result))
{
?>
<div class="error">
<div class="error_inner">
<strong>Toegang geweigerd</strong> | <span>E-mail/wachtwoord incorrect</span>
</div>
</div>
<?php
}
else
{
while($row = DBC::fetchResultAsObject($result))
{
self::$userId = $row->id;
}
$_SESSION["id"] = uniqid();
$_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
if($_POST["onthouden"] == 1)
{
setcookie("user", $_POST["email"], time()+223200, "/");
setcookie("pass", $_POST["wachtwoord"], time()+223200, "/");
}
header("Location: welkom.php");
exit();
}
DBC::close();
}
else
{
?>
<div class="error">
<div class="error_inner">
<strong>Toegang geweigerd</strong> | <span>Vul de velden correct in</span>
</div>
</div>
<?php
}
}
}
public static function isLoggedIn()
{
if(isset($_SESSION["id"]) && isset($_SESSION["ip"]) || trim($_SESSION["ip"]) != "" || trim($_SESSION["id"]) != "")
{
if($_SERVER["REMOTE_ADDR"] != $_SESSION["ip"])
{
header("Location: /beheer/index.php");
exit();
}
DBC::connect();
$result = DBC::executeQuery("SELECT * FROM gebruikers WHERE id = " . self::getUserId());
if(DBC::isResultEmpty($result))
{
header("Location: /beheer/index.php");
exit();
}
DBC::close();
}
else
{
header("Location: /beheer/index.php");
exit();
}
}
public static function hasRights($moduleId, $header = true)
{
DBC::connect();
$result = DBC::executeQuery("SELECT * FROM rechten WHERE gebruiker_id = " . self::getUserId() . " AND module_id = " . $moduleId);
if(DBC::isResultEmpty($result))
{
if($header == true)
{
header("Location: /beheer/welkom.php");
exit();
}
else
{
return false;
}
}
DBC::close();
}
public static function getUserId()
{
return self::$userId;
}
}
?>
Iemand hier een oplossing voor?
- Kan geen value aan variabele toe kennen
-
11-08-2010, 16:45 #1
- Berichten
- 394
- Lid sinds
- 16 Jaar
Kan geen value aan variabele toe kennen
Laatst aangepast door gast17013 : 11-08-2010 om 20:46
-
-
11-08-2010, 17:13 #2
- Berichten
- 433
- Lid sinds
- 17 Jaar
Heb je ook session_start(); bovenaan je script staan?
-
11-08-2010, 20:25 #3
- Berichten
- 394
- Lid sinds
- 16 Jaar
Ja, maar dat heeft er niks mee te maken. Het gaat om die regel waar een comment achter staat. Want dat wilt hij niet doen.. De sessions doen het.
-
11-08-2010, 20:32 #4
- Berichten
- 126
- Lid sinds
- 15 Jaar
Je gebruikt de keywords private en static bij de declaratie van het veld 'user_id'. Maar dit veld declareer je buiten een class.
Oplossing zou zijn om alles in een class te gooien, of bij de declaratie van het veld 'user_id' gebruik te maken van het keyword 'global'.
-
11-08-2010, 20:34 #5
- Berichten
- 394
- Lid sinds
- 16 Jaar
Hij zit al in een class. Dit is maar 1 functie en 1 variabele.
-
11-08-2010, 20:43 #6
- Berichten
- 126
- Lid sinds
- 15 Jaar
Maar er is geen class gedefinieerd in je voorbeeldcode.
-
11-08-2010, 20:45 #7
- Berichten
- 394
- Lid sinds
- 16 Jaar
Hij is aangepast ;) Dit is nu de hele class
-
11-08-2010, 20:59 #8
- Berichten
- 126
- Lid sinds
- 15 Jaar
Weet je zeker dat het opslaan van het id in het veld self::$userId fout gaat? Dit kan je controleren door na de toekenning van de waarde even een 'echo' van dat veld te doen.
Het valt me namelijk op dat je, nadat je waarde hebt toegekend, een redirect en exit doet. Zonder dat je de class of de waarde opslaat in de SESSION of een COOKIE. Wanneer de redirect is uitgevoerd, zal de class opnieuw aangemaakt worden, waarbij het veld self::$userId inderdaad leeg zal zijn.
Ik denk dat deze werking van PHP de oorzaak van je storing is. Zou je kunnen dit kunnen controleren door de 'echo' in te bouwen?
En meteen na de echo een exit te doen, anders kan je de uitvoer niet zien omdat de redirect meteen wordt uitgevoerd
.
-
11-08-2010, 21:16 #9
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Uhh... probeer self::userid eens, zonder de $ dus. :)
-
12-08-2010, 21:26 #10
- Berichten
- 394
- Lid sinds
- 16 Jaar
Opgelost! Omdat ik telkens de class opnieuw aanmaak, wordt de userId ook weer leeg gegooit. Nu heb ik het met Sessies gedaan.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic