Avatar billede bes Nybegynder
06. maj 2005 - 21:24 Der er 11 kommentarer og
2 løsninger

Enkelt bruger system. (skal bare kigges på)

jeg er igang med at lære simpelt php og mySQL.
jeg har denne fil

index.php
-----
<?
// Her Connectes til mySQL databasen og den rigtige database bliver selected.
$conn = mysql_connect("localhost", "**", "**");
mysql_select_db("**");

if (isset($navn) && isset($pass)){
$query = mysql_query("SELECT * FROM users WHERE navn = '$navn' AND pass = '$pass'");
$antal = mysql_num_rows($query);
if ($antal == 1) {
    header("location: inde.php");
}} else {
    echo "login informationer er ikke koreekte";
}
?>

<html>

<body>

<center>

<table>
<tr>
<td colspan="2"><center><b>LOGIN</b></center><br></td>
</tr><tr>
<!-- Her indskrives oplysningerne. -->
<form action="index.php" method="post">
<td><b>Brugernavn :</b></td>
<td align="right"><input type="text" name="navn"></td>
</tr><tr>
<td><b>Password :</b></td>
<td align="right"><input type="text" name="pass"></td>
</tr><tr>
<td colspan="2" align="right"><input type="submit" name="sub" value="Login"></td>
</tr>
</form>
</table>

<br>

<a href="tilmeld.php">Tryk her for at tilmelde dig</a>

</center>

</body>

</html>



men når man går ind på siden skriver den til at starte med dine informationer er ikke korrekte. (echo "login informationer er ikke koreekte";)

hvorfor?


næste fil

tilmed.php
------


<?php
if(!empty($_GET['navn'])) {
  mysql_connect("localhost", "**", "**");
  mysql_select_db("**");
  mysql_query("INSERT INTO users(navn, pass) VALUES('".$_GET['navn']."', '".$_GET['pass']."')");

}

?>

<br><br>
<form action="" method="get">
user :<input type="text" size="30" name="navn">
pass: <input type="password" size="30" name="pass">


<input type="submit" value="opret">
<br><br>
</form>


hvordan får jeg den til ikke at vise
http://root/tilmeld.php?navn=jan&pass=theman

når jeg opretter ny bruger?
Avatar billede dulius Nybegynder
06. maj 2005 - 21:44 #1
Jeg har kun lige hurtigt kigget i din kode, men du kan starte med at gøre følgende (ved ikke om det er det eneste der skal rettes, men har som sagt kun lige taget et hurtigt kig).
I toppen af index.php tilføjer du dette:
$navn = $_POST["navn"];
$pass = $_POST["pass"];

I tilmeld.php har du ikke sat en action på din form. Lav <form action="" method="get"> om til <form action="<?=$_SERVER["PHP_SELF"];?>" method="get">

Mvh. Julius
Avatar billede divinegod Nybegynder
06. maj 2005 - 21:45 #2
For at tage sidste spørgsmål først. vil du ikke vise de data du sende så brug:

<form action="" method="post">

og så skal du i tilmeld.php istedet for $_GET[] bruge $_POST[] eller $_REQUEST[]

Til det andet:

Husk at du skal hente dnie data fra formen med enten $_POST[] eller $_REQUEST[], når din form sender med method="post"

altså bør du gøre følgende:

if (isset($_POST['navn']) && isset($_POST[pass]){
  $query = mysql_query("SELECT * FROM users WHERE navn = '$_POST[navn]' AND pass = '$_POST[pass]'");
  $antal = mysql_num_rows($query);
  if ($antal == 1) {
    header("location: inde.php");
  }
} else {
    echo "login informationer er ikke koreekte";
}
?>

Det burde klare dine problemer så vidt jeg kan se.
Avatar billede dulius Nybegynder
06. maj 2005 - 21:47 #3
Hov. Du skriver hvordan du får den til IKKE at vise http://root/tilmeld.php?navn=jan&pass=theman. Så laver du bare <form action="" method="get"> om til <form action="<?=$_SERVER["PHP_SELF"];?>" method="post"> og så skal du desuden rette alle forekomster af $_GET['navn'] til $_POST['navn'] i dit script.

Se desuden dette link: http://www.php.net/manual/en/language.variables.predefined.php - klik dig ind under $_GET og $_POST variablerne.

Mvh. Julius
Avatar billede bes Nybegynder
06. maj 2005 - 21:57 #4
Parse error: parse error, unexpected '{' in /web/www/frac/users/nold/index.php on line 7


?

det er på index.php
Avatar billede divinegod Nybegynder
06. maj 2005 - 22:09 #5
prøv lige at poste php-delen af index.php
Avatar billede bes Nybegynder
06. maj 2005 - 22:10 #6
if (isset($_POST['navn']) && isset($_POST['pass']){
  $query = mysql_query("SELECT * FROM users WHERE navn = '$_POST[navn]' AND pass = '$_POST[pass]'");
  $antal = mysql_num_rows($query);
  if ($antal == 1) {
    header("location: inde.php");
  }
} else {
    echo "login informationer er ikke koreekte";
}
?>
Avatar billede bes Nybegynder
06. maj 2005 - 22:12 #7
if (isset($_POST['navn']) && isset($_POST[pass]){
  $query = mysql_query("SELECT * FROM users WHERE navn = '$_POST[navn]' AND pass = '$_POST[pass]'");
  $antal = mysql_num_rows($query);
  if ($antal == 1) {
    header("location: inde.php");
  }
} else {
    echo "login informationer er ikke koreekte";
}
?>

havde sat ' på isset($_POST[pass])

men virker heller ikke uden
Avatar billede dulius Nybegynder
06. maj 2005 - 22:15 #8
Du mangler at lukke en parentes her: if (isset($_POST['navn']) && isset($_POST[pass]){ - det skal være: if (isset($_POST['navn']) && isset($_POST['pass'])){

mvh. Julius
Avatar billede bes Nybegynder
06. maj 2005 - 22:18 #9
nu viser den ikke fejl.. men den laver samme nummer med at skrive at der er fejl i log in når man går ind på index.php, og den skriver det ikke når man skriver kode eller navn forkert
Avatar billede dulius Nybegynder
06. maj 2005 - 22:23 #10
Du lukker en if for tidligt såvidt jeg kan se - prøv dette:

if (isset($_POST['navn']) && isset($_POST['pass'])){
  $query = mysql_query("SELECT * FROM users WHERE navn = '$_POST[navn]' AND pass = '$_POST[pass]'");
  $antal = mysql_num_rows($query);
  if ($antal == 1) {
    header("location: inde.php");
  } else {
    echo "login informationer er ikke koreekte";
}}
?>
Avatar billede bes Nybegynder
06. maj 2005 - 22:26 #11
tak skal du ha... har accepteret.. men kan du lige fortælle mig en ting hurtigt.
når man har oprettet på tilmed.php hvordan får jeg den så til at gå til index.php med det saMME?
Avatar billede dulius Nybegynder
06. maj 2005 - 22:31 #12
if(!empty($_GET['navn'])) {
  mysql_connect("localhost", "**", "**");
  mysql_select_db("**");
  mysql_query("INSERT INTO users(navn, pass) VALUES('".$_GET['navn']."', '".$_GET['pass']."')");
header("Location: index.php");
}

Du skal dog sikre dig, at der INTET output bliver skrevet til skærmen inden du kører dette stykke kode - ellers vil der opstå en fejl.

Mvh. Julius
Avatar billede bes Nybegynder
06. maj 2005 - 22:52 #13
det virker tak du.
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