giikMedlem sedan mars 2002112 inlägg Jag håller på med en inloggning för något som ska bli ett bannerbyte hade jag tänkt iaf. Men frågan återstår ju om det kommer bli ett :). Men nu försöker jag fixa till en inloggning. Och tänkte försöka göra det med sessioner. Men nu är det så att jag inte är så pass säker på det.
Här kommer iaf en kod som jag börjat på...
<?
function loggain(){
global $srnick, $srpass;
/* Kolla om nicket och lösenordet stämmer överens med något fält i databasen. */
$sql ="SELECT * FROM tabell WHERE srnick = nick AND srpass = pass";
$result =mysql_query("$sql");
if (srnick == $nick) && (srpass == $pass)){
session_register("user");
session_register("losen");
$user = "srnick";
$losen = "srpass";
echo "Du är nu inloggad.";
}
?>
Är det rätt eller är jag helt fel? :P
Det borde nog fungera men du kan ju testa denna variant... den kör jag med och fungerar bra.
if(isset($login)){
$connect = mysql_connect("host", "user","pass");
$sql = "SELECT * FROM users WHERE nick='".$_POST['srnick']."' AND pass='".$_POST['srpass']."'";
$result = mysQl_db_query("$databas","$sql");
if(!($rad=mysql_fetch_array($result))){
echo "Fel uppgifter, var vänlig försök igen.<br>";
}
else{
$user=$rad["nick"];
$losen=$rad["pass"];
$_SESSION['user'] = $user;
$_SESSION['losen'] = $losen;
}
}
Denna anropas om du klickar på en knapp som heter "login" e.g <input type="submit" name="login" value="Logga in">
Du kanske får ändra fälten som ska kollas... vet inte om jag satt rätt namn på dem.
if (isset($_POST['username']) && isset($_POST['password'])) {
$password = $_POST['username'];
$username = $_POST['password'];
$sql = "SELECT uid, username, password FROM users WHERE username = '$username' AND password = '$password' ";
$Result = mysql_query( $sql )
or die( mysql_error() );
if( mysql_num_rows( $Result ) < 1 ) {
print "Felaktiga uppgifter!";
}
else {
$row = mysql_fetch_array($Result);
session_start();
$userId = $row['iud'];
session_register("$userId");
print "Du är inloggad!";
}
}
giikMedlem sedan mars 2002112 inlägg Okej! Behövs det inte session_start(); nånstans? Eller lägger man den först eller?
Kommer mycket frågor nu :birp
I min variant har du med session_start() Det viktiga är att du inte skickat något till klienten innan, för då får du header-felmeddelande.
session_start();
Ska ALLTID ligga högst upp i din fil... det får inte vara någon information ovanför den
// Ingenting ovanför här
<?PHP
session_start();
// Alla annan kod
?>
giikMedlem sedan mars 2002112 inlägg Okej! Det funkar! Ännu en fråga. Det borde nog gå snabbt. Session_register behöver man alltså bara ha på inloggningssidan då?
Sedan när man väl är inloggad så behöver man bara session_start(); i början av filerna?
Tjena jag brukar köra detta som inloggnings script
global $username, $password;
if(empty($username) || empty($password))
{
echo "Fill in all the fields please";return;
}
else
{
$con = mysql_query("SELECT * FROM username WHERE username='$username'");
$array = mysql_fetch_array($con)
if($array["password"] != $password)
{
echo "The username or password is wrong";return;
}
else
{
$_SESSION['user']_=_$usernames;
____$_SESSION['losen']_=_$passwords;
proceed();
}
}
typ så kör jag mina inloggnings script, det funkar och är säkert iaf
giikMedlem sedan mars 2002112 inlägg Okej, men själva inloggningen funkar fint nu! Det är just när man har loggat in sig och typ ska ändra på inställningar och sånt.
Då undrar jag om man behöver session_register i de filerna också. Eller om det bara är just när själva inloggningen sker?
I resterande filer behöver du bara session_start();
giikMedlem sedan mars 2002112 inlägg humm. När jag bara hade session_start i de andra filerna så visades alla medlemmar. Så jag skrev dit session_register("user");
då. Och nu funkar de. Så då måste ju Webslave ha haft fel? ;).
Eller så kanske det är jag som kunde ha gjort på något annat sätt?
Jaja huvudsaken de löste sig iaf!? :)
giikMedlem sedan mars 2002112 inlägg förstår inte.
Gjorde ett nytt inloggningssystem till en annan grej på webhotellet.
Men alltså själva inloggningen ser likadan ut.
<?
/* Om Användaren klickat på logga in, så kollar koden om nicket och passet existerar i databasen. */
if(isset($send)){
include "config.php";
$sql = "SELECT * FROM users WHERE nick='".$_POST['srnick']."' AND pass='".$_POST['srpass']."'";
$result = mysql_query("$sql");
if(!($rad=mysql_fetch_array($result))){
echo "Fel uppgifter, var vänlig försök igen.<br>";
}
else{
$user=$rad["nick"];
$losen=$rad["pass"];
/* Registrerar sessionerna nick och pass */
$_SESSION['user'] = $user;
$_SESSION['losen'] = $losen;
echo "Välkommen in $user<br>";
echo "<br>";
$sql2 ="UPDATE users SET besok = besok+1 WHERE nick ='$user'";
mysql_query("$sql2");
}
}
Om jag skriver typ echo $user på den sidan så skriver den ut det. Men på nästa sida. Där har jag börjat med session_start(); och raden under session_register("user");
Funkade förut när jag hade det andra scriptet. Men vägrar fungera nu. Vad kan vara fel? :h
MatteMedlem sedan aug. 20002 975 inlägg session_start() saknas överst på din inloggningsida.
på sidan där du hämtar skriver du:
<?php
session_start();
echo $_SESSION['user'];
?>
giikMedlem sedan mars 2002112 inlägg jahapp.
Behövs det på själva inloggningssidan?
För i de andra sidorna har jag session_start och session_register först...Men jag ska prova!
Tycker de verkar så knepigt. För att de förra scriptet jag hade så funkade det utan problem. Det är säkert till för att jävlas med mig :).
Förresten! Jag hittade felet. Tror för det första att du hade rätt..Men sedan så hade jag i sql-satsen glömt att döpa om $user till $anv. För jag ändrade till det. Men tack ska du ha för besväret iaf!
Otroligt kul när man kan få svar på sån kort tid! :birp