PHP Extra funktioner för inloggning

Permalänk
Medlem

PHP Extra funktioner för inloggning

Tjenare, vill göra så att folk som är inloggade ska ha andra funktioner som icke inloggade ska ha.

Min kod ser ut så här

<?php session_start(); ?> <html> <body> <?php include 'dbconnect.php';?> <center> <a href="main_login.php"><b>Login/Register</b></a> <form method="post" action="search.php?go" id="searchform"> <input type="text" name="search"> <input type="submit" name="submit" value="Search"> </form><?php if(session_is_registered($myusername)){ echo "<form action='db_update.php' method='get'> <input type='text' name'Update'> <input type='submit' value='Update'> </form>"; } ?> </center> </body> </html>

Undrar helt enkelt ifall ni har någon tutorial som visar detta eller om ni själva vet och kan hjälpa mig. Kan lägga upp mer kod på begäran

Permalänk
Medlem

Använd inte session_is_registered(x). Använd isset($_SESSION['x']).

<?php session_start(); if(isset($_POST['submit'])) //Har man tryckt på "Logga in" { if($_POST['usr'] === "Admin" && $_POST['passwd'] == "1234") //Kolla att uppgifterna stämmer, hårdkodade för att det skulle gå snabbt för mig. { $_SESSION['inloggad'] = TRUE; //Spara i $_SESSIONS saker som du vill ska gälla när man är inloggad. $_SESSION['usr'] = "Admin"; //Tex användarens användarnamn } else { $errors['wrongPass'] = "Fell lösenord eller användarnamn."; //Fel lösenord, spara i en array. } } ?> <!-- All HTML kod längst ner i dokumentet, ser snyggare ut. --> <!DOCTYPE HTML> <html lang="sv"> <head> <meta charset="UTF-8"> <title>Min coola sida</title> </head> <body> <div id="wrapper"> <?php if(isset($errors)) : //Finns det något fel? ?> <ul id="errors"> <?php foreach($errors as $error) : //Loopa igenom alla fel ?> <li><?php echo $error; //Skriv ut felet ?></li> <?php endforeach; ?> </ul> <?php endif; ?> <!-- Formulär för att logga in --> <form action="" method="POST"> <!-- action="" = samma sida som vi är på --> <input type="text" name="usr"/> <input type="password" name="passwd"/> <input type="submit" value="Logga in" name="submit" /> </form> <?php if($_SESSION['inloggad'] === true): //Är man inloggad, visa det hemliga inehållet ?> <div id="onlyMembers"> <h1>Välkommen <?php echo $_SESSION['usr']; ?></h1> ... </div> <?php endif; ?> </div> </body> </html>

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem
Skrivet av Sony?:

Använd inte session_is_registered(x). Använd isset($_SESSION['x']).

<?php session_start(); if(isset($_POST['submit'])) //Har man tryckt på "Logga in" { if($_POST['usr'] === "Admin" && $_POST['passwd'] == "1234") //Kolla att uppgifterna stämmer, hårdkodade för att det skulle gå snabbt för mig. { $_SESSION['inloggad'] = TRUE; //Spara i $_SESSIONS saker som du vill ska gälla när man är inloggad. $_SESSION['usr'] = "Admin"; //Tex användarens användarnamn } else { $errors['wrongPass'] = "Fell lösenord eller användarnamn."; //Fel lösenord, spara i en array. } } ?> <!-- All HTML kod längst ner i dokumentet, ser snyggare ut. --> <!DOCTYPE HTML> <html lang="sv"> <head> <meta charset="UTF-8"> <title>Min coola sida</title> </head> <body> <div id="wrapper"> <?php if(isset($errors)) : //Finns det något fel? ?> <ul id="errors"> <?php foreach($errors as $error) : //Loopa igenom alla fel ?> <li><?php echo $error; //Skriv ut felet ?></li> <?php endforeach; ?> </ul> <?php endif; ?> <!-- Formulär för att logga in --> <form action="" method="POST"> <!-- action="" = samma sida som vi är på --> <input type="text" name="usr"/> <input type="password" name="passwd"/> <input type="submit" value="Logga in" name="submit" /> </form> <?php if($_SESSION['inloggad'] === true): //Är man inloggad, visa det hemliga inehållet ?> <div id="onlyMembers"> <h1>Välkommen <?php echo $_SESSION['usr']; ?></h1> ... </div> <?php endif; ?> </div> </body> </html>

Saken är den att jag redan har en inloggnings sida som efter en inloggning redirectar till första sidan igen. Sen har jag en databas med användarna. Så kan inte skriva " ['usr'] == 'Admin'. Har ingen PHP kunskap alls, så därför kan det verka att jag är lite borta. Har lärt mig medans jag har gjort detta slutprojektet(Det är inte för PHP utan ett slutprojekt för SQL.)

Permalänk
Medlem

if(!empty($_SESSION['inloggad']) && !empty($_SESSION['usr'])) //Om användaren är inloggad { echo "Du är inloggad"; echo "Detta kan endast inloggade se"; } } else //om inte inloggad { echo "Du är inte inloggad och ser inte saker som en inloggad kan se"; }

Såhär kan du göra för att visa olika innehåll beroende på om man är inloggad eller ej

Visa signatur

[Intel i7 4770K] [ GTX 1070] [Asus ROG VI Gene] [Corsair AX860] [Corsair 16GB Vengeance LP] [120GBIntel 520] [Bitfenix Phenom M]

Citera för svar

Permalänk
Medlem
Skrivet av nivv:

if(!empty($_SESSION['inloggad']) && !empty($_SESSION['usr'])) //Om användaren är inloggad { echo "Du är inloggad"; echo "Detta kan endast inloggade se"; } } else //om inte inloggad { echo "Du är inte inloggad och ser inte saker som en inloggad kan se"; }

Såhär kan du göra för att visa olika innehåll beroende på om man är inloggad eller ej

Tack ska testa det!

Permalänk
Medlem

kolla igenom videor som berör just inloggning finns en hel del material. om du vill ha extra lull så kan du blanda in jquery osv..

http://thenewboston.org/
http://phpacademy.org/

Visa signatur

Asus UX32VD-R4002V

Permalänk
Medlem

I min inloggnings check så har jag dragit ut User,Pass och ID med $_SESSION array. Sen i index.php så kollar jag ifall ID är tom och då vet jag ifall man är inloggad eller inte. Dock så finns det ingeting i den array:en, ingen aning varför.

Index.php

<?php session_start(); ?> <html> <body> <?php include 'dbconnect.php';?> <center> <a href="main_login.php"><b>Login/Register</b></a> <form method="post" action="search.php?go" id="searchform"> <input type="text" name="search"> <input type="submit" name="submit" value="Search"> </form><?php echo $_SESSION['ID']; if(!empty($_SESSION['ID'])){ echo "<form action='db_update.php' method='get'> <input type='text' name'Update'> <input type='submit' value='Update'> </form>"; } else echo "lol"; ?> </center> </body> </html>

Min inloggnings check

<?php ob_start(); include 'dbconnect.php'; // Define $myusername and $mypassword $myusername=$_POST['Användare']; $mypassword=$_POST['Lösenord']; // To protect MySQL injection (more detail about MySQL injection) $myusername = stripslashes($myusername); $mypassword = stripslashes($mypassword); $myusername = mysql_real_escape_string($myusername); $mypassword = mysql_real_escape_string($mypassword); $sql="SELECT * FROM Users WHERE User='$myusername' and Pass='$mypassword'"; $result=mysql_query($sql); while($row = mysql_fetch_array($result) ){ if(isset($row['ID'])){ if(isset($row['Username'])){ if(isset($row['Password'])){ $_SESSION['ID'] = $row['ID']; $_SESSION['User'] = $row['Username']; $_SESSION['Pass'] = $row['Password']; } } } } // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $myusername and $mypassword, table row must be 1 row if($count==1){ // Register $myusername, $mypassword and redirect to file "login_success.php" session_register("myusername"); session_register("mypassword"); header("location:login_success.php"); } else { echo "Wrong Username or Password"; } ob_end_flush(); ?>

Permalänk
Medlem

Byt ut

session_register("myusername"); session_register("mypassword");

mot

$_SESSION["myusername"] = true; $_SESSION["mypassword"] = true;

Btw, isset() kan du flera argument. Så du kan srkiva if(isset($x, $y, $z)) istället för tre ifs.

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem
Skrivet av Sony?:

Byt ut

session_register("myusername"); session_register("mypassword");

mot

$_SESSION["myusername"] = true; $_SESSION["mypassword"] = true;

Btw, isset() kan du flera argument. Så du kan srkiva if(isset($x, $y, $z)) istället för tre ifs.

Tackar fungerade grymt bra:)