Jag håller på lite med en egen community (försöker lära mig bara) och har kommit fram till inloggningen.
Det är ju så att man endast ska kunna komma åt vissa sidor när man är inloggad. Hur ska jag lösa det? Lägga in ett "active" fält i databasen som ändras från 0 till 1 när man loggar in? Eller en session som ändras man loggar in? För det är väl lite svårt att kolla vad "active" i databasen har för värde när man inte är inloggad? :o
SPiNMedlem sedan mars 20007 896 inlägg Använd sessioner ( Om jag har förstått frågan rätt ) för att kontrollera att en användare är inloggad.
<?php
session_start ();
if ( $_SESSION[ 'inloggad' ] == "sant" ) {
// Visa sida
}
else {
// Inte inloggad
}
?>
Vet du inte hur sessioner kan du söka här i forumet - det har diskuterats många gånger - eller kika på min artikel på http://www.phpportalen.net om sessioner.
Tack för ditt svar SPiN. Det verkar nog vara det bästa med sessions. Men en grej bara, en session måste registreras överst av all kod? För att i så fall har jag krånglat till det lite, kör nämligen med "include" filer lite här och var. Bl.a på toppen.
SPiNMedlem sedan mars 20007 896 inlägg En session behöver bara registreras en gång, det är när man sätter den. session_start () måste man däremot ha med överst på alla sidor.
Hehe, jävlar vad snabb du var. Tydligen inte bara jag som sitter och kodar ikväll :e Jag prövar mig fram!
SPiNMedlem sedan mars 20007 896 inlägg Sitter och kodar? Inte en chans. Slösurfar, helt enkelt. :h
Pröva på! :bire
Hmm, som sagt jag provar mig fram och din kod funkade inte! :)
Jag ändrade;
if ( $_SESSION[ 'UserActive' ] == "1" ) {
till
if ( $UserActive == "1" ) {
Varför ska man skriva $_SESSION[adadadasd] ?
SPiNMedlem sedan mars 20007 896 inlägg Om man inte har register_globals till on i PHP.ini, bl.a. Det är också en fråga om säkerhet - vem som helst kan nu gå in på din sida med addressen: http://server.nu/sida.php?UserActive=1
Se till att kontrollera att det verkligen är en sessionsvariabel du jobbar med. :)
Orsaken till att det inte fungerade kan vara att du kör en äldre version av PHP, så försök med $HTTP_SESSION_VARS[] istället för $_SESSION[].
Nu har jag stött på problem, kan jag inte skriva vanlig HTML text i en IF-sats? Utan måste jag skriva ut allting med "echo"? Det blir ju väldigt jobbigt!
SPiNMedlem sedan mars 20007 896 inlägg Eh? Låter väldigt konstigt. Hur gör du?
Så här?
<?php
// En massa PHP
?>
<! Lite HTML >
<?php
// Mer PHP
?>
:q
Jag kör så här, och det funkar inte!
if (jag == "bra") {
<tr>asda</tr>
å massa kod
} else {
Du måste logga in
}
?>
SPiNMedlem sedan mars 20007 896 inlägg Det är inte så konstigt. :)
Du kan inte blanda PHP och HTML på det sättet, kompilatorn ( tolken ) tror då att HTML:en är PHP.
Använd istället echo eller avgränsa med ?> och <?php som jag visade i inlägget över. :)
Men det verkar inte som att det funkar inne i en IF-sats ?
ThACRoWMedlem sedan dec. 2001314 inlägg Jag lägger mig i lite ;)
<? if ($jag == "bra") { ?>
<tr>asda</tr>
<? //å massa kod } else { ?>
Du måste logga in
<? } ?>
SPiNMedlem sedan mars 20007 896 inlägg Jodå.
<?php
// PHP
if ( $variabel == "värde" ) {
?>
<! HTML >
<?php
}
else {
?>
<! HTML >
<?php
}
// PHP
?>
Det blir dock väldigt fult och segt, så använd hellre echo - eller helt av allt templates. Mycket snyggare & lättläsligare kod plus att den tolkas snabbare. :)
Jag ska skriva hela min kod så ni får se;
TOP2.PHP
<?php
session_start();
if ( $HTTP_SESSION_VARS[ 'UserActive' ] == "1" ) {
?>
<html>
<head>
<title>Rob Community 1.0</title>
<link rel="stylesheet" href="css/rob.css">
</head>
<body>
<font face="Arial">
<table border="0" bgcolor="gray" width="400px" height="100%" cellspacing="2" cellpadding="5">
<tr>
<td valign="top" colspan="2" bgcolor="white" height="10%">
<br>
Välkommen till Rob Community 1.0. Varför jag har skapat detta är inte för någon speciell anledning utan mest
för att lära mig själv hur man programmerar. Hoppas allt funkar bra och att du får en trevlig stund på sidan!<br>
<br>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="white" height="10%">
<?php
include("includes/menu.php");
?>
</td>
</tr>
USERHIDEOUT.PHP
<?php
include("includes/top2.php");
?>
<tr>
<td width="400px" valign="top" bgcolor="white">
Välkommen! Du är inloggad!<br>
<br>
<a href="UserLogout.php">Logga ut</a>
</td>
</tr>
<?php
include("includes/bottom2.php");
?>
BOTTOM2.PHP
</table>
</font>
</body>
</html>
<?php
} else {
?>
Du är inte inloggad!
<?php
}
?>
Jag får bara passa parse-errors... :(
ThACRoWMedlem sedan dec. 2001314 inlägg Det går väl inte använda delar av en IF-sats när man inkluderar heller?
Tydligen inte ThACRoW, hmm.
Då blir det ju jobbigt att ändra på varje undersida om man ska ändra något! :x
ThACRoWMedlem sedan dec. 2001314 inlägg Jag tycker det ser ganska jobbigt ut att ha sådana undersidor... egentligen skulle du ju kunna smälla i hopp allt i en fil, skulle jag gjort i det fallet...