alweer fout met session.. :(

Status
Niet open voor verdere reacties.

ginojo

Gebruiker
Lid geworden
7 sep 2010
Berichten
912
hallo,

ik heb weer eens een raar stukje. Soms is het voor mij net abra-ka-drabra... :confused:
Maar ik heb dus het volgende idee:
-Als mensen zich registreren kunnen ze ja of nee kiezen om de nieuwsbrief te ontvangen.
-Als ze inloggen wordt er in het database gekeken of ze ja of nee hebben gekozen.
- Als het ja is wordt er een session geschreven.
(- Als je ingelodg bent wordt je automatisch naar de homepage geleid.)
- Op de homepage wordt het registreerform verborgen als er bij het inloggen de session is geschreven.
- Als dit niet zo is wordt het form weergegeven.

Ik heb deze code verzonnen bij het inloggen:
PHP:
<?php
if(mysql_num_rows(mysql_query("SELECT newsletter FROM users WHERE newsletter='Yes'")) == 1)
{ 
    $_SESSION['news'] = '1'; 
} else { }
?>

En op de homepage dit:
(Hierboven staan de db gegevens)
PHP:
<?php
if($_SESSION['news'] != '1') { 
?>
<h3 style="font-style: italic;">Newsletter...</h3><br>

You are already signed up for our newsletter. You do not have to sign up any more...
<?                
} else { 
?>
<h3 style="font-style: italic;">Newsletter...</h3><br>

Sign up for our newsletter. It's free and you get first the news about The Digitcompany!!!<br><br>

<?php 
if (isset($_POST['Name']) && isset($_POST['Email'])) { 
  if ($_POST['Name'] == "" || $_POST['Email'] == "") { 
    print_error(); 
    print_for(); 
  } else { 
$Name = $_POST["Name"];
$Email = $_POST["Email"];
$ip = getenv('REMOTE_ADDR'); 
$data = "page/uit/txts/newsletter.txt";
$file = fopen($data , "a");
$tijd = time();
$datum = strftime("%d/%m/%y %H:%M", $tijd);
fputs($file, "
De volgende wilt zich inschrijven voor The Digitcompany nieuwsbrief:
Naam: $Name 
Email: $Email
Ip-adres: $ip

--------------------------------------------------------------------
");
fclose($file);
    print_sent(); 
  } 
} else { 
?>  <form name="form1" method="post" action="index.html">
	  Name: <br />
  <input name="Name" value="" type="text" /><br />
  <br />
          Email: <br />
  <input name="Email" value="" type="text" /><br />
  <br />
	  <input name="Submit" value="Send" type="submit" />
</form> 
<? } 

function print_error() { 
?> 
<table width=100%> 
<tr><td><p style="color: rgb(255, 0, 0);">Fill in all the fields correctly, please...</p></td></tr>
</table> 
<? 
} 
function print_sent() { 
?> 
<table width=100%> 
<tr><td><p style="color: rgb(96, 96, 96);">Thank you! You're subscribed for the Digit Company newsletter!</p></td></tr> 
</table> 
<? 
}
}
?>

Waarom krijg ik nu als ik niet eens ben ingelogd de melding te zien dat ik al ben ingelogd?
:mad:

Ginojo
 
[sql]SELECT newsletter FROM users WHERE newsletter='Yes'[/sql]

Je selecteert de waarde van het veld nieuwsletter, voor alle rijen waarvoor geldt dat de waarde van het veld nieuwsletter "Yes" is.

Logischerwijs levert dit je dus als resultaat een hele lange rij met "Yes" op, en ik vermoed dat dat niet is wat je wilt hebben.
 
ja, ik snap het ja.
maar hoe moet ik dit dan fixen?

(maar is het dan niet raar, dat als ik nog niet eens op die pagina bent geweest, en dan al geschreven wordt?)

maargoed, welke actie moet ik dan uitvoeren om te kijken of de huidige gebruiker de nieuwsbrief ontvangt?

Ginojo
 
Nou het aantal rijen dat terugkomt is vermoedelijk groter dan 1, en dat betekent dat je nieuws dus altijd op Nee komt te staan, tenzij er precies 1 gebruiker in het systeem is die em wil hebben.

Wat je moet doen is aan je query een tweede conditie toevoegen, dat het id gelijk is aan het id van de persoon die ingelogd is. Ik ga er vanuit dat je dat opslaat; zo niet dan moet je dat ook doen ;)
 
Owke...

Heb je daar een voorbeeld van? Want sql is nog een beetje abra-ka-dabra... :s

Ginojo
 
PHP:
$query = "SELECT newsletter FROM users WHERE newsletter='Yes' AND userid = '" . $_SESSION['userid'] . "'";

Veldnamen zijn fictief want ik weet niet hoe ze bij jou heten maar ongeveer zoiets. Je moet dus wel zorgen dat je de id in de session hebt staan anders werkt het niet.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan