18. november 2004 - 08:20Der er
69 kommentarer og 1 løsning
Login evt. med MySQL
Hej
Jeg er ny med MySQL men jeg er ikke sikker på at dette kræves til denne opgave. Men det vil nok væren en fordel. Jeg skal bruge et lille "login script". Man skal kunne, første gang man besøger siden, skulle kunne indtaste sit Navn, Email og Password. Når så man kommer ind på siden anden gang skal siden kunne genkende brugeren og skrive "hej Navn" - altså også med cookie. Navnet skal være en global variabel så man kan skrive f.eks. $navn og få printet Navnet alle steder på siden. Kan nogle i det mindste pege mig i den rigtige retning? Jeg finder kun scripts med sikkerhedsbeskyttelse etc - men det er det her jo slet ikke. Det er meget enklere. Tak
Tjah, kan da lave lidt til dig hvis du er med på det? Først skal du lave en side med de forms (info) du vil have om brugeren. "Action" på de forms skal så være f.eks. opret.php
Opret.php: <?PHP
if(isset($_POST['submit']) && $_POST['submit'] != "") { //kræver at "knappen" på din form-side hedder submit
$q = if(mysql_query("INSERT INTO brugere (navn, mail, alder) VALUES('$navn','$alder','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet }
?>
Feltet mail og/eller brugernavn i din database skal så være "unikt" så du ikke får flere ens brugere...
ok lige et par spørgsmål - jeg tilføjer selve mysql_connect til opret.php ik? ellers bare en form så har opret.php i "action" feltet? og til sidst bruger SELECT til at hente indholdet ud af databasen (selvom jeg nok skal have lidt hjælp til dét)
if(mysql_query("INSERT INTO brugere (navn, mail, alder) VALUES('$navn','$alder','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet }
selvfølgelig, nu er jeg med - jeg har nemlig lavet en gæstebog der virker men der medfulgte der en txt fil jeg kunne uploade og som så satte tabellen op. Vil du lave den til mig? Så kan jeg se hvordan det skal gøres til næste gang.
hmm hvis det er let så ogå et ID nr som bare starter fra 1 af og så måske også tidspunktet for oprettelsen - men hvis du har lavet det andet så skipper vi det bare :)
Ja, du skal tilpasse så alle dine variabler passer.
$brugernavn = $_POST['brugernavn']
$_POST['brugernavn'] svarer til det felt i dine forms, hvor brugeren indtaster sit brugernavn. Du skal lave den konvertering for alle de forms du har valgt at medtage.
$brugernavn bruger du så i din INSERT-query. Den skal også tilpasses, så det passer med de værdier du vil bruge.
Det med fejlen, ved jeg ikke helt. Som du har pastet, kan jeg ikke lige se den. Check lige, at du har alle " og ; hvor de skal være. Også på linie 7.
yes, sådan. nu gemmer den som den skal :) så skal vi bare have hentet skidtet igen, lavet cookies og sørge for at folk ikke kan registrere samme brugernavn. (jeg skal nok hæve pointsene - meget)
/* checker om bruger findes */ $q = mysql_query("SELECT FROM brugere WHERE brugernavn = '$brugernavn' OR mail = '$mail'"); if(mysql_num_rows($q) > 0) { //brugeren er allerede oprettet } else { if(mysql_query("INSERT INTO brugere (navn, mail, alder) VALUES('$navn','$alder','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet } }
?>
Som du nok kan lure, så bare tag de ting jeg har tilføjet i forhold til det paste du lavede 09.30.43 :)
/* checker om bruger findes */ mysql_query("SELECT FROM brugere WHERE brugernavn = '$brugernavn' OR mail = '$mail'"); if(mysql_num_rows($q) > 0) { //brugeren er allerede oprettet
} else { <-- Parse error: parse error, unexpected '}' in /var/www/html/login/opret.php on line 16
if(mysql_query("INSERT INTO brugere (brugernavn, adgangskode, mail) VALUES('brugernavn','$adgangskode','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet } }
det virker desværre stadigvæk ikke - har også rettet $navn og $alder øverst. jeg prøvede lige at skrive ECHO('eksisterer allerede'); efter "//bruger er allerede oprettet" og så fik jeg denne fejl i stedet: Parse error: parse error, unexpected T_ECHO in /var/www/html/login/opret.php on line 16
så det er nok noget med den her sætning: if(mysql_num_rows($q) > 0) { ?
/* checker om bruger findes */ $q = mysql_query("SELECT id FROM brugere WHERE brugernavn = '$brugernavn' OR mail = '$mail'"); if(mysql_num_rows($q) > 0) { //brugeren er allerede oprettet } else { <-- if(mysql_query("INSERT INTO brugere (brugernavn, adgangskode, mail) VALUES('brugernavn','$adgangskode','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet } }
?>
Parse error: parse error, unexpected '}' in /var/www/html/login/opret.php on line 16 (linie 16 er der med: <--)
/* checker om bruger findes */ $q = mysql_query("SELECT id FROM brugere WHERE brugernavn = '$brugernavn' OR mail = '$mail'"); echo mysql_num_rows($q); if(mysql_num_rows($q) > 0) { //brugeren er allerede oprettet } else { if(mysql_query("INSERT INTO brugere (brugernavn, adgangskode, mail) VALUES('brugernavn','$adgangskode','$mail')")) { //brugeren blev oprettet } else { //brugeren blev ikke oprettet } } }
?>
...og den funker nu?! Se lige om der er forskel på den og din...
nej der var det fordi "brugere" tabellen ikke var oprettet. jeg tror php versionen på min server er ret gammel. 4.1.2 - kan det være der, der er noget?
så virker det! :D det var den editor jeg brugte der havde indsat nogle åndssvage tegn.. grr...!! Nu kører jeg notepad style. (det er når man copy&paster nogle gange).
Ovenstående benytter sessions. Sessions er som cookies, dog bliver de kun gemt indtil brugeren lukker sin browser. Men så længe brugeren surfer rundt på dine sider, kan du få hans brugernavn frem med: echo $_SESSION['brugernavn'];
Det kræver dog lige, at du husker session_start(); i toppen af alle de sider hvor du ønsker det brugt...
hehe, nej jeg _vil_ ikke men det ville være fedt. men det tager vi bare en anden dag :) det her er mere end fint indtil videre! tusind tak. og husk nu at smide et svar :D
orv, lige en sidste ting. jeg har jo slettet og oprettet en del i min tabel nu - da jeg slettede alle brugere og oprettede en ny blev den oprettet som id 9. er det muligt at "resette" id counteren?
Cookies kan du jo så også selv lege med. Funktionen kan f.eks. se sådan ud: setcookie("brugernavn", $brugernavn, time() + 60 * 60 * 24 * 14);
time() + 60 * 60 * 24 * 14 betyder at cookien vil udløbe 14 dage efter den er sat. For at bruge cookien, bruger du: echo $_COOKIE['brugernavn']; og skal så stadig huske session_start(); i toppen af de dokumenter du vil bruge den på...
jeg kan ikke finde det - hvis finder det så smid mig en mail så skal jeg nok lave et nyt spørgsmål - med flere points. hvis man må det, altså. TAK igen!
yo jaw, kan det passe det script jeg fik tjekker om både password og email allerede er oprettet når man laver en ny bruger? det er meningen at den kun skal kigge efter brugernavn. Folk må gerne have f.eks. samme adgangskode :) giver det mening?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.