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"> Ønsket Logpå navn<br> <input type="text" name="$logonnavn" size="24"> <p>Ønsket vist navn<br> <input type="text" name="$vistnavn" size="24"></p> <p>Ø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
Annonceindlæg fra HP
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 :)
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.
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 $
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...
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"> Ønsket Logpå navn<br> <input type="text" name="logonnavn" size="24"> <p>Ønsket vist navn<br> <input type="text" name="vistnavn" size="24"></p> <p>Ø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
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 ;)
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...
22. december 2004 - 17:55
#9
horizon, man skal lige "ind i det" :) det skal nok komme, du er da godt på vej ;)
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ær venlig at gå 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"); ?>
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 ;)
23. december 2004 - 20:57
#12
Wee! mange tak... så virker det i hvert fald :D Glædelig jul!
23. december 2004 - 23:00
#13
I lige måde :D
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...
24. december 2004 - 01:36
#15
lav en query før, inden du sætter ind, og se om det findes i forvejen ;)
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
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']."'";
25. december 2004 - 18:24
#18
Wee!!! mange tak!!! Det var alt for nu :D Smid et svar så får du dine point...
25. december 2004 - 18:25
#19
Certainly :)
Vi tilbyder markedets bedste kurser inden for webudvikling