Avatar billede horizon Nybegynder
22. december 2004 - 17:04 Der er 18 kommentarer og
1 løsning

opret/logon script virker ikke

Lidt begynder er man vel altid, specielt hvis man først lige er startet med at være begynder :P

Jeg kan ikke få hverken mit logon script til at virke, eller mit opret script... i opret scriptet har jeg prøvet at lave en checker for at se om personen har skrevet det samme i begge pwd felterne, men den siger fint alligevel, og så skriver den slet ikke noget i databasen

<?php

require("./mysql-funktioner.php");

if($adgangskode == $adgangskodecheck) {
    function opret($logonnavn, $vistnavn, $email, $adgangskode) {
   
    $sql = "insert into Brugere(logonnavn,vistnavn,email,adgangskode)
        values('$logonnavn', '$vistnavn', '$email', '$adgangskode',now())";
   
    forbind();
    sql_spoerg($sql);
    luk_forbindelse;

    }
   
    echo "du er nu oprettet";
}
else{
    echo "adgangskoderne er ikke ens";
}


?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    &Oslash;nsket Logp&aring; navn<br>
    <input type="text" name="$logonnavn" size="24">
    <p>&Oslash;nsket vist navn<br>
        <input type="text" name="$vistnavn" size="24"></p>
    <p>&Oslash;nsket adgangskode<br>
        <input type="password" name="$adgangskode" size="24"></p>
    <p>Gentag adgangskode<br>
        <input type="password" name="$adgangskodecheck" size="24"></p>
    <p>Din e-mail<br>
        <input type="text" name="$email" size="24"></p>
    <p><input type="submit" name="opret" value="Opret"></p>
</form>

Og logpå scriptet gør slet ikke noget
Den siger fejl på linje 15. (den første IF) og jeg ved ikke rigtigt hvad jeg skal gøre her...

<?php

require("./mysql-funktioner.php");

    function logpaa($logonnavn, $adgangskode) {
   
    $sql = "select from Brugere(logonnavn,adgangskode)
        values('$logonnavn', '$adgangskode')";
   
    forbind();
    sql_spoerg($sql);
    luk_forbindelse;

    }
if('$logonnavn1 == $logonnavn' '$adgangskode1 == $adgangskode') {
header("Location: Forside.php");
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
    Brugernavn<br>
    <input type="text" name="$logonnavn1" size="24">
    <p>Adgangskode<br>
        <input type="pwd" name="$adgangskode1" size="24"></p>
    <p><input type="submit" name="logpaa" value="Logind"></p>
</form>
<p><a href="Opret.php">Opret Bruger</a></p>

I skal måske også lige se min tabel "Brugere"

-tabel Brugere-
Feltnavn    Datatype  Nulværdi Standard værdi
Brugerid    int(11)      Nej  0               
Logonnavn  varchar(20)  Nej                 
Vistnavn    varchar(20)  Nej                 
email      varchar(100) Nej                 
adgangskode varchar(100) Nej                 
registreret datetime    Nej  0000-00-00 00:00:00               
eradmin    int(1)      Ja  0 

Jeg håber der er en hjælpsom sjæl derude
Avatar billede coderdk Praktikant
22. december 2004 - 17:19 #1
$sql = "insert into Brugere(logonnavn,vistnavn,email,adgangskode)
        values('$logonnavn', '$vistnavn', '$email', '$adgangskode',now())";

Du indsætter en værdi mere end du angiver - enten så fjern ",now()" eller angiv den i feltlisten :)
Avatar billede iss Novice
22. december 2004 - 17:20 #2
Du kan ikke lægge function inden i en if. Og så ret lige dine variabler til $_POST['var'] osv.
Avatar billede ranglen Nybegynder
22. december 2004 - 17:24 #3
1. $_POST[''] er nævnt, hvis serveren ikke er sat op med register_globals http://dk.php.net/register_globals

2. I html-formnavne skal du ikke bruge $
Avatar billede coderdk Praktikant
22. december 2004 - 17:24 #4
if('$logonnavn1 == $logonnavn' '$adgangskode1 == $adgangskode') {

skal måske ændres til:

if($logonnavn1 == $logonnavn && $adgangskode1 == $adgangskode) {

du laver en header('location') lige efter, men du skriver så noget ud - det vil nok heller ikke virke...
Avatar billede horizon Nybegynder
22. december 2004 - 17:36 #5
Nu ser de 2 sider så sådan her ud...

- - - Logind - - -
<?php

require("./mysql-funktioner.php");

    function logpaa($_POST['logonnavn'], $_POST['adgangskode']) {
   
    $sql = "select from Brugere(logonnavn,adgangskode)
        values($_POST['logonnavn'], $_POST['adgangskode']";
   
    forbind();
    sql_spoerg($_POST['$sql']);
    luk_forbindelse;

    }
if($_POST['logonnavn1'] == $_POST['logonnavn'] && $_POST['adgangskode1'] == $_POST['adgangskode']) {
echo "<a href="Forside.php">Gå til Forsiden</a>";
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
    Brugernavn<br>
    <input type="text" name="logonnavn1" size="24">
    <p>Adgangskode<br>
        <input type="pwd" name="adgangskode1" size="24"></p>
    <p><input type="submit" name="logpaa" value="Logind"></p>
</form>
<p><a href="Opret.php">Opret Bruger</a></p>

Fejl i Logind.php:
Parse error: parse error, unexpected '[', expecting ')' in /mnt/dkcphnas004/www/t/y/thesimcity.dk/EgenUdvikling/Logind.php on line 5
- - - Opret - - -

<?php

require("./mysql-funktioner.php");

if($_POST['adgangskode'] == $_POST['adgangskodecheck']) {
    function opret($_POST['logonnavn'], $_POST['vistnavn'], $_POST['email'], $_POST['adgangskode'],$_POST['registreret']) {
   
    $_POST['sql'] = "insert into Brugere(logonnavn,vistnavn,email,adgangskode,registreret)
        values('$_POST['logonnavn'], '$_POST['vistnavn'], '$_POST['email'], '$_POST['adgangskode'],now())";
   
    forbind();
    sql_spoerg($_POST['sql']);
    luk_forbindelse;

    }
   
    echo "du er nu oprettet";
}
else{
    echo "adgangskoderne er ikke ens";
}


?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    &Oslash;nsket Logp&aring; navn<br>
    <input type="text" name="logonnavn" size="24">
    <p>&Oslash;nsket vist navn<br>
        <input type="text" name="vistnavn" size="24"></p>
    <p>&Oslash;nsket adgangskode<br>
        <input type="password" name="$adgangskode" size="24"></p>
    <p>Gentag adgangskode<br>
        <input type="password" name="adgangskodecheck" size="24"></p>
    <p>Din e-mail<br>
        <input type="text" name="email" size="24"></p>
    <p><input type="submit" name="opret" value="Opret"></p>
</form>

Fejl i Opret.php:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /mnt/dkcphnas004/www/t/y/thesimcity.dk/EgenUdvikling/Opret.php on line 6
Avatar billede coderdk Praktikant
22. december 2004 - 17:43 #6
function logpaa($_POST['logonnavn'], $_POST['adgangskode']) {

kan du så ikke... Kald dem almindelige variabelnavne:

function logpaa($user, $pass) {

At du så *kalder* dem sådan: logpaa( $_POST['logonnavn'], $_POST['adgangskode'] )
er en helt anden ting ;)
Avatar billede coderdk Praktikant
22. december 2004 - 17:44 #7
Du har lidt styr på det, men måske du alligevel kunne have godt af at læse nogle flere tutorials :)

http://www.webcafe.dk/artikler/php/
Avatar billede horizon Nybegynder
22. december 2004 - 17:48 #8
hehe... det er bl.a. dem som jeg har læst, nå, læser dem lige igennem et par gange til så, vil måske hjælpe lidt...
Avatar billede coderdk Praktikant
22. december 2004 - 17:55 #9
horizon, man skal lige "ind i det" :) det skal nok komme, du er da godt på vej ;)
Avatar billede horizon Nybegynder
23. december 2004 - 15:28 #10
Wee!!! nu har jeg NÆSTEN fået opret siden til at virke, det eneste problem er at ligemeget om adgangskoderne er ens eller uens så opretter den brugeren alligevel uden at skrive fejl.

Her er siden som opretter det hele. variablerne $adgangskode og $adgangskode2 skulle meget gerne være skrevet rigtigt, så tror det er noget med "fejludregningen" nede i bunden af siden som giver den et møgfald...

<?php

if(is_array($HTTP_POST_VARS)) {
  $logonnavn = $HTTP_POST_VARS['logonnavn'];
  $vistnavn = $HTTP_POST_VARS['vistnavn'];
  $adgangskode = $HTTP_POST_VARS['adgangskode'];
  $adgangskode2 = $HTTP_POST_VARS['adgangskode2'];
  $email = $HTTP_POST_VARS['email'];
} elseif (is_array($_POST)) {
  $logonnavn = $HTTP_POST_VARS['logonnavn'];
  $vistnavn = $HTTP_POST_VARS['vistnavn'];
  $adgangskode = $HTTP_POST_VARS['adgangskode'];
  $adgangskode2 = $HTTP_POST_VARS['adgangskode2'];
  $email = $HTTP_POST_VARS['email'];
}

require('mysql-funktioner.php');

function opret_fejl($fejl) {

    $generel_tekst = "<p>V&aelig;r venlig at g&aring; tilbage og ret til.</p>";

    $fejlmelding = "<ul>";

    for($i=0;$i<count($fejl);$i++) {
        $fejlmelding .= "<li>". $fejl[$i];
    }

    $fejlmelding .= "</ul>";

    echo top("Fejl") . "Siden brokkede sig lidt over dit input:" . $fejlmelding . $generel_tekst . bund();
    exit;

}

    function opret($logonnavn, $vistnavn, $adgangskode, $email, $registreret) {
   
    $sql = "insert into Brugere(logonnavn,vistnavn,adgangskode,email,registreret)
        values('$logonnavn','$vistnavn','$adgangskode','$email',now())";
       
        forbind();
        sql_spoerg($sql);
        luk_forbindelse();

}

if(!ereg("[A-z0-9]+", $logonnavn)) {

    $fejl[] = "Du har ikke skrevet dit logonnavn";

}

if(!ereg("[A-z0-9]+", $vistnavn)) {

    $fejl[] = "Du har ikke skrevet dit viste navn";

}

if(!ereg("[A-z0-9]+", $adgangskode)) {

    $fejl[] = "Du har ikke skrevet din adgangskode";

}

if(!$adgangskode == $adgangskode2) {

    $fejl[] = "Adgangskoderne er IKKE ens";

}

if(count($fejl) > 0) {
    opret_fejl($fejl);
}

opret(addslashes($logonnavn),addslashes($vistnavn),addslashes($adgangskode),addslashes($email));

header("Location: Opret.php");

?>
Avatar billede coderdk Praktikant
23. december 2004 - 17:07 #11
Prøv at ændre

if(!$adgangskode == $adgangskode2) {

til

if($adgangskode != $adgangskode2) {

Som jeg forstår den første siger den hvis værdien af "IKKE adgangskode" er lige med værdien af "adgangskode2"... Det andet er mere korrekt ;)
Avatar billede horizon Nybegynder
23. december 2004 - 20:57 #12
Wee! mange tak... så virker det i hvert fald :D

Glædelig jul!
Avatar billede coderdk Praktikant
23. december 2004 - 23:00 #13
I lige måde :D
Avatar billede horizon Nybegynder
24. december 2004 - 01:09 #14
Lige en sidste ting, (ja han er belastende)

jeg kan ikke rigtigt få mit opret script til at tage hensyn til om "vistnavn" eller "logonnavn" allerede er taget... jeg har siddet og tænkt den godt igennem (synes jeg selv) men kan ikke lige få den til at gå op...
Avatar billede coderdk Praktikant
24. december 2004 - 01:36 #15
lav en query før, inden du sætter ind, og se om det findes i forvejen ;)
Avatar billede horizon Nybegynder
24. december 2004 - 14:07 #16
jeg har prøvet mig frem med denne her:

include("access.php");
$query = "SELECT logonnavn, vistnavn FROM Brugere WHERE logonnavn = '".$_POST['logonnavn']."' AND vistnavn= '".$_POST['vistnavn']."'";
$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);

if($log['logonnavn'] == $logonnavn){
    $fejl[] = "Dit angivne logonnavn er allerede taget";   
}

if($log['vistnavn'] == $vistnavn){
    $fejl[] = "Dit angivne viste navn er allerede taget";   
}

men den opretter brugeren alligevel uden at der kommer fejlmeddelelse
Avatar billede coderdk Praktikant
25. december 2004 - 01:44 #17
Du skal nok bruge OR:

$query = "SELECT logonnavn, vistnavn FROM Brugere WHERE logonnavn = '".$_POST['logonnavn']."' OR vistnavn= '".$_POST['vistnavn']."'";
Avatar billede horizon Nybegynder
25. december 2004 - 18:24 #18
Wee!!! mange tak!!! Det var alt for nu :D

Smid et svar så får du dine point...
Avatar billede coderdk Praktikant
25. december 2004 - 18:25 #19
Certainly :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester