Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  29 1586
Har funnet en template jeg vil ha, og jeg vil ha en login funksjon her :

http://img249.imageshack.us/img249/3374/herzf8.jpg


[COLOR=Red]Kan noen forklare/vise meg hvordan jeg gjør det? eller poste koden eller whatever, bare så jeg skjønner :P[/COLOR]
z0p
uʍop ǝpısdn
z0p's Avatar
Jeg vil anbefale deg å sette deg litt inn i php selv, så slipper du å spørre om noen kan lage alle funksjonene du trenger. php er relativt enkelt å sette seg inn i og å forstå.
Du trenger neppe skrive all koden fra grunn, da det finnes utallige kilder med ferdige skript, funksjoner og klasser du kan ta i bruk.
fiNk's Avatar
Trådstarter
Jeg har et script, men trenger hjelp til å få det til å virke i de rutene, og ikke starte som en egen side..
z0p
uʍop ǝpısdn
z0p's Avatar
Du må sannsynligvis sette skriptet som action i formen. Deretter hentes data fra tekstfeltene via post/get i skriptet.

http://www.tizag.com/phpT/postget.php

Akkurat hvordan du skal sette det opp kommer an på hvordan scriptet er skrevet, og hvor sikkert og dynamisk du vil ha det.
fiNk's Avatar
Trådstarter
Ok.. Jeg suger i php, så her må hjelp til!

Her er login scriptet :


Fiks eventuelle feil!


Kode

Brukernavn <INPUT NAME="brukernavn" TYPE="text">
Passord <INPUT NAME="passord" TYPE="password">
<INPUT NAME="login" VALUE="1" TYPE="hidden">
<INPUT NAME="submit" VALUE="Logg inn" TYPE="submit">

<?php
session_start();
function auth($_user, $_password){
    # her kommer din innlogging til en mySQL-database
    $crypticPassword = md5($_password);
    $get_users = mysql_query("SELECT id FROM userlist WHERE user='$_user' and pass='$crypticPassword'");
    if(mysql_num_rows($get_users) == 0){
        return FALSE;
    }
    else {
        return TRUE;
    }
}
if($loggut == 1){
    session_unset();
}
if($login=="1" || $loggetinn=="1"){
    if(auth($brukernavn, $passord)){
        $_SESSION['loggetinn'] = 1;
        $_SESSION['brukernavn'] = $brukernavn;
        $_SESSION['passord'] = $passord;
        if($login == 1){
            header("Location: $PHP_SELF");
        }
    }

}
?>
Trigonoceps occipita
vidarlo's Avatar
Donor
Du skriver HTML'en du vil ha, og kaller boksane hhv. brukernavn og passord. Du trenger såvidt eg ser ikkje endre noko i PHP-koden.
z0p
uʍop ǝpısdn
z0p's Avatar
Skal du bruke en mySQL databse, og har du satt opp denne?
fiNk's Avatar
Trådstarter
Sitat av vidarlo
Du skriver HTML'en du vil ha, og kaller boksane hhv. brukernavn og passord. Du trenger såvidt eg ser ikkje endre noko i PHP-koden.
Vis hele sitatet...
Kan du vise? jeg begynte med php/html i kveld...
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av fiNk
Kan du vise? jeg begynte med php/html i kveld...
Vis hele sitatet...
Kva del av ikkje var det du misforstod? Du treng ikkje endre PHP-scriptet. Det held å endre HTML-scriptet til følgande:
*Rett variabelnavn
*Rett action i <form...> tagen

Prøv sjølv først, og samanlikn dei to html-snuttane du har og sjå på forskjellen på dei. Du lærer ikkje noko av at eg gjer det.
koden blir slik:

Kode

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Brukernavn <INPUT NAME="brukernavn" TYPE="text"> 
Passord <INPUT NAME="passord" TYPE="password"> 
<INPUT NAME="login" VALUE="1" TYPE="hidden"> 
<INPUT NAME="submit" VALUE="Logg inn" TYPE="submit"> 
</form>


<?php 
session_start(); 
function auth($_user, $_password){ 
    # her kommer din innlogging til en mySQL-database 
    $crypticPassword = md5($_password); 
    $get_users = mysql_query("SELECT id FROM userlist WHERE user='$_user' and pass='$crypticPassword'"); 
    if(mysql_num_rows($get_users) == 0){ 
        return FALSE; 
    } 
    else { 
        return TRUE; 
    } 
} 
if($loggut == 1){ 
    session_unset(); 
} 
if($login=="1" || $loggetinn=="1"){ 
    if(auth($brukernavn, $passord)){ 
        $_SESSION['loggetinn'] = 1; 
        $_SESSION['brukernavn'] = $brukernavn; 
        $_SESSION['passord'] = $passord; 
        if($login == 1){ 
            header("Location: $PHP_SELF"); 
        } 
    } 

} 
?>
Jeg bare la til form.
Sist endret av boblesaft; 6. mars 2007 kl. 18:12.
for å lage en identisk login trenger jeg html koden til den logg innen du har der.

The nordic dj: Ville ikke brukt den koden ettersom Logg inn formen vil være der vis man er logget in fra før.

Må ha en IF, Else if, else ting her:
-Noe som sjekker om bruker er logget in, hvis logget in viser skjult innhold.
-Vis ikke logget in vis innloggings formen
(-Vis feil brukernavn og passord vis glemt passord)
m0b
m0b's Avatar
DonorAdministrator
Globale variabler? Behandling av $login og $loggetinn som strengvariabler og ikke engang konsekvent? SQL-Injection. Galskap, noe av det værre jeg har sett. At de av dere som påberoper seg kunnskap om PHP her ikke har påpekt dette ser jeg på som et mirakel.
Sist endret av m0b; 6. mars 2007 kl. 21:09.
Så det han burde hat noe som:
$brukernavn = htmlspecialchars($brukernavn);

Vet ikke om dette var korrekt siden jeg skrev det fra hukommelsen

Edit: Når jeg leser denne koden ser jeg jo alt er feil. Hvordan skal den finne ut av at brukernavn er det samme som $_user??
Sist endret av BombFreak!; 6. mars 2007 kl. 21:17.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av BombFreak!
Edit: Når jeg leser denne koden ser jeg jo alt er feil. Hvordan skal den finne ut av at brukernavn er det samme som $_user??
Vis hele sitatet...
Fordi den bare plukker ei rad fra DB der både brukernavn og passord stemmer....

Funksjonen som bør brukast er forøvrig mysql_real_escape_string, fordi den tar hensyn til gjeldande charset o.l.
fint det vidarlo lærte noe nytt i dag og

Bør vel også legge til en max length i formen også. Slik at ingen vil legge inn:

Kode

$result = mysql_query("SELECT * FROM userlist); 
$myrow = mysql_fetch_array($result); 
echo "bruker ".$myrow["user"]; 
echo "<br>passord: ".$myrow["pass"]
$get_users = mysql_query("SELECT id FROM userlist WHERE user='$_user' and pass='$crypticPassword'");
Er ikke så god på hacking
Sist endret av BombFreak!; 6. mars 2007 kl. 21:34.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av BombFreak!
fint det vidarlo lærte noe nytt i dag og

Bør vel også legge til en max length i formen også.
Vis hele sitatet...
Tja, å tru at klient-side restriksjoner har betydning er i beste fall naivt.

Egentleg er det veldig lite poeng i max-length sidan du trivielt kan omgå den (FireBug t.d treng under 1sek på å lage lengre formfelt), og brukarar sjelden oppgir veldig lange stringer.

Du bør iallefall hive på server-side sjekk om du skal behandle data på en måte som gjer at lengda er kritisk.

Hugs på det at *alt* klienten kan sende må sjåast på som farlig, inntill det motsatte er bevist..
selfølgelig hadde det vert enkelt og omgått. Så maxlength i phpkoden før den går inn i databasen vil hjelpe litt.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av BombFreak!
selfølgelig hadde det vert enkelt og omgått. Så maxlength i phpkoden før den går inn i databasen vil hjelpe litt.
Vis hele sitatet...
No skal det seiast at mysql er rimelig immun mot lange stringer. Verste som skjer er vel at den klager litt over det, trur ikkje lange strenger skal kunne føre til sql injection...
m0b
m0b's Avatar
DonorAdministrator
Hva som er max lengde for et felt er jo avhengig av datatypen til et felt, max er vel longblob som takler knappe 4,3GB .
dette ble vist en diskusjons tråd mellom oss. var ikke meningen :P
Tilbake til teameat:

Ville egentlig bare funnet en annen script som er mye tryggere.

Sitat av |d13m0b
Hva som er max lengde for et felt er jo avhengig av datatypen til et felt, max er vel longblob som takler knappe 4,3GB .
Vis hele sitatet...
Mange hackere går ikke gjennom sql databasen men redigerer php koden.
Sist endret av BombFreak!; 6. mars 2007 kl. 21:46.
eller bare bruke htmlspecialchars for å unngå det blir tolket som kode i stede for tekst =)
m0b
m0b's Avatar
DonorAdministrator
Sitat av BombFreak!
dette ble vist en diskusjons tråd mellom oss. var ikke meningen :P
Tilbake til teameat:

Ville egentlig bare funnet en annen script som er mye tryggere.


Mange hackere går ikke gjennom sql databasen men redigerer php koden.
Vis hele sitatet...
Tror neppe du er rette personen til å fortelle meg hva hackere gjør og hva de ikke gjør. Hvorfor du tar dette opp skjønner jeg egentlig ikke. I utgangspunktet, hvis man er redd for sikkerhet så ville man ikke engang tenkt på å benytte de kodesnuttene som er kommet opp av dage i denne tråden.
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av |d13m0b
Hva som er max lengde for et felt er jo avhengig av datatypen til et felt, max er vel longblob som takler knappe 4,3GB .
Vis hele sitatet...
Joda, men stortsett vil vel bare mysql spytte ei feilmelding i retur, og ikkje kjøre det overflytande?:P
m0b
m0b's Avatar
DonorAdministrator
Bruker mysql veldig lite, er andre typer databaser jeg benytter. Men erfaringsmessig så prøver den ikke å kjøre inn data inn i basen till kingdom come, men vil heller kutte vekk det som ikke er allokert plass til og spytte ut en sur notis.
Sist endret av m0b; 6. mars 2007 kl. 21:53.
z0p
uʍop ǝpısdn
z0p's Avatar
Jeg tror egentlig ikke trådstarter her er ute etter et script som bruker en database for lagring av passord og brukernavn, men et enkelt script som sjekker input mot en variabel eller flatfile. Så diskusjonen rundt dette er sannsynligvis unødvendig.
Sist endret av z0p; 6. mars 2007 kl. 21:54.
Sitat av z0p
Jeg tror egentlig ikke trådstarter her er ute etter et script som bruker en database for lagring av passord og brukernavn, men et enkelt script som sjekker input mot en variabel eller flatfile. Så diskusjonen rundt dette er sannsynligvis unødvendig.
Vis hele sitatet...
he,he.. sant nok! En "grønnskolling" på php vil nok ikke skjønne noe som helst av svarene som har kommet til nå. For å lage en login må man jo skjønne både hvordan databaser funker, sånn helt basic, og i hvertfall hvordan sessjoner funker. Og dette er vel ikke noe som sitter som ei kule den første uka med php hvis man er normal.

Så tror ikke det er noe vits å legge ut haugevis av kode for å klare dette... trådstarter vil jo ikke ane hva man skal gjøre videre med scriptet han får

Anbefaler: les eksempler og forklaring på php's funksjoner på www.php.net Prøv også denne newbie guiden på W3 Schools

Good luck!
▼ ... over en måned senere ... ▼
Prøv å legge denne inn i indexen din(denne trenger du ikke en MySQL database til):


Kode

<form action="index.php" method=POST>
Brukernavn:
    <input type="text" name="bruker" /><br />
Passord:
<input type="password" name="pass" />
<input type="submit" value="Logg inn" />
</form>

<?php ob_start();
if( isset($_POST['Submit']) ) { 
$user=$_POST['bruker']; 
$pass=$_POST['pass']; 

if (($user==="brukernavn") && ($pass==="passord"))  { 
header( "location: Velkommen.php"); 
} else { 
echo "FEIL!"; 
} 
} 
?>
Bytt ut "Brukernavn" med brukernavnet ditt, og "passord" med ditt passord.

Du kan også legge til flere brukere manuelt med å gjøre slik:

Kode

if (($user==="brukernavn") && ($pass==="passord") || ( $bruker==="brukernavn2") && ($pass==="passord2"))  {
Husk å lagre den index.php, ikke index.html om du ikke har gjort dette fr før av
Hva er egentig dette for en hubbabubbatråd? Alt av php-kode som blir postet i denne tråden er, i bestefall, søppel.

Og til trådstarter: jeg kjenner typen din. Nettopp oppdaga hvordan man kan lage nettside, men uten noen kunskap i det heletatt skal du lage et atomkraftverk. Først må du lære deg HTML (så CSS), så lærer du deg PHP. Og å poste
koden eller whatever, bare så jeg skjønner :P
Vis hele sitatet...
er som om at en person uten bakgrunnskaper i det heletatt skulle klart å laget et atomkraftverk ut av et utstnitt på 10x10 cm av tegning til kraftverket.