Avatar billede nielspt Nybegynder
10. marts 2007 - 15:26 Der er 22 kommentarer og
1 løsning

password på side med html-form = genlogin

Hej allesammen.

Jeg er ved at lae en admin-side, som jeg har sat password på. På denne side, skal det være muligt at styre mit nyhedsbrev-system - altså slette indtastede e-mail-adresse (Som ligger i min database

Problemet er bare, at jeg har lavet en form, hvor jeg kan taste den e-mail jeg ønsker at fjerne ind. Denne retunerer til admin-siden, hvormed jeg igen skal indtaste brugernavn og password for at få adgang (Og derefter er der alligevel intet sket)

Uden password-beskyttelsen virker det fint, men jeg vil gerne have en form for beskyttelse.

kode:
<?php
// Define username and password
$username = "****";
$password = "****";

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {

?>
<body>
<center>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p><label for="txtUsername">ID:</label>
    <br /><input type="text" title="Navn" name="txtUsername" /></p>

    <p><label for="txtpassword">PASSWORD:</label>
    <br /><input type="password" title="Password" name="txtPassword" /></p>

    <p><input type="submit" name="Submit" value="Send" /></p>

</form>
</center>


<?php
}
else {
// Dn beskyttede side herefter:

?>


<?
//Hvis formen er submittet skal følgende gøres
$email = $_REQUEST["email"];
if ($email) {

// laver forbindelse
            mysql_connect("****", "****", "****") or die(mysql_error());
            mysql_select_db("****") or die(mysql_error());
           
           
            // sletter
            mysql_query("delete from newsletter where email='$email'");
}
?>


<form method='post' action='admin.php'p>
      <input type='text' name='email' value='Fjern tilmeldt e-mail' onFocus="if(this.value=='Fjern tilmeldt e-mail')this.value='';"onblur"if(this.value=='')this.value='Fjern tilmeldt e-mail';" size='22' class='input'><br>
     
      <input type='submit' name='send' value='Send' class='inputsend'>

<?php

}

?>
_________________________


Nogen gode forslag så jeg ikke bliver 'fanget' af min egen beskyttelse?

Tak.
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 15:37 #1
Hvis jeg var dig ville jeg lave det med sessions, gør det hele noget nemmere. ;)

Og jeg tror det er fordi at den smider dig tilbage til admin siden, uden at vedhæfte brugernavn og kodeord i adressen...

feks.

du har nok noget ala: header("Location: admin_side.php");

det skal du ændre til:

$uri = "admin_side.php?username=".$_POST['username']."&password=".$_POST['password'];
header("Location: $uri");
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 15:42 #2
og så skal du selvfølgelig lige rette det til, så det passr med de forskellige variable navne. ;)
Avatar billede nielspt Nybegynder
10. marts 2007 - 16:40 #3
ja, kan godt se det burde virke.. Men det gør det ikke - jeg bliver stadig ført tilbage til login.. (lige nu er både password og brugernavn 'admin')

Her er hvad jeg har skrevet:

<?
//Hvis formen er submittet skal følgende gøres
$email = $_REQUEST["email"];
if ($email) {

// laver forbindelse
            mysql_connect("****", "****", "****") or die(mysql_error());
            mysql_select_db("****") or die(mysql_error());
           
           
            // sletter
            mysql_query("delete from newsletter where email='$email'");
            $uri = "admin.php?username=".$_POST['admin']."&password=".$_POST['admin'];
header("Location: $uri");
}
?>
Avatar billede limemedia Nybegynder
10. marts 2007 - 16:51 #4
$uri = "admin.php?username=".$_POST['txtUsername']."&password=".$_POST['txtPassword'];
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 17:00 #5
som limemedia skrev, og med henvisning til mit indlæg af 15:42:13 :)
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 17:00 #6
$uri = "admin.php?username=".$_POST['admin']."&password=".$_POST['admin']; <-- og det er grunden til at både brugernavn og password er admin. ;)
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 17:01 #7
Men som jeg også startede med at sige, så ville jeg lave det med sessions. ;)
Avatar billede limemedia Nybegynder
10. marts 2007 - 17:12 #8
Sessions i PHP er stadig ikke noget jeg decideret vil anbefale ... men det er som man synes og hvilket ambitionsniveau man har
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 17:16 #9
lige et side-spring:

Limemedia -> hvorfor vil du ikke anbefale sessions ?
Avatar billede limemedia Nybegynder
10. marts 2007 - 17:21 #10
mht SEO og hvordan ikke session enablede robotter indekserer din side
men igen, det kommer an paa din ambition, jeg omskrev engang i 2003 eller 2004 sessionsbiblioteket da jeg freelancede for TDC saa det understoettede SEO og robotter ... men det er jo en helt anden snak en hvad er emnet her
Avatar billede blackscorpion Nybegynder
10. marts 2007 - 17:24 #11
var også bare lige et sidepring.

men igen, hvis det er en side der skal hoste 200.000 brugere med 2mill + visninger om dagen, ville jeg nok også finde en anden løsning en sessions. ;)
Avatar billede limemedia Nybegynder
10. marts 2007 - 17:38 #12
jeg udvikler smaa som store loesninger paa samme maade, da den lille 10k loesning pludsligt kunne blive til en 20k loesning :)
Avatar billede dkfire Nybegynder
10. marts 2007 - 23:31 #13
det er vel lige meget med SEO når det er en lukket side til adminitration ???
Avatar billede nielspt Nybegynder
11. marts 2007 - 12:02 #14
Det vil sgu ikke virke - jeg bliver stadig ført tilbage til login..

Nogen der har et forslag til hvordan jeg ellers kan lave en password-beskyttet side, som jeg ikke blir ført tilbage til, når jeg trykker 'send' i min html-form, der retunerer til admin-siden?

Tak for forslag so far.
Avatar billede dkfire Nybegynder
12. marts 2007 - 12:09 #15
Læg din kode ud, så kan vi kigge på det.
Avatar billede blackscorpion Nybegynder
12. marts 2007 - 13:10 #16
Det er sku da klart at du bliver smidt tilbage til login...

// Define username and password
$username = "****";
$password = "****";

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {

Der bruger du $_POST[] som kun kan sendes fra en form.

og

$uri = "admin.php?username=".$_POST['txtUsername']."&password=".$_POST['txtPassword'];

bliver det lavet til $_GET[]

så ret:

if ($_POST['txtUsername'] != $username || $_POST['txtPassword'] != $password) {

til

if ($_REQUEST['txtUsername'] != $username || $_REQUEST['txtPassword'] != $password) {

og prøv igen. :D
Avatar billede blackscorpion Nybegynder
12. marts 2007 - 13:13 #17
Det der sker rent teknisk bag siden er følgende:

Du logger ind på admin siden, hvor du har sat formen til POST.
Derefter submitter du en form, der også er POST, til en side som så gør nogle ting du har bedt den om, og når den er færdig, sender den dig tilbage til admin siden, gør den med GET, hvor den igen tjekker for brugernavn og password, som så er POST.

Dvs.

Post til post, post til GET til post.

Derfor bliver du bedt om at logge ind igen.

Håber det var til at forstå.
Avatar billede nielspt Nybegynder
12. marts 2007 - 17:51 #18
Tak for kommentarer...
Har gjort præcist som beskrevet, men bliver stadig ført tilbage til login.. :-(
Her er min kode:


<?php
// Define username and password
$username = "****";
$password = "****";

if ($_REQUEST['txtUsername'] != $username || $_REQUEST['txtPassword'] != $password) {

?>
<body>
<center>
<form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <p><label for="txtUsername">ID:</label>
    <br /><input type="text" title="Navn" name="txtUsername" /></p>

    <p><label for="txtpassword">PASSWORD:</label>
    <br /><input type="password" title="Password" name="txtPassword" /></p>

    <p><input type="submit" name="Submit" value="Send" /></p>

</form>
</center>


<?php
}
else {
// Den beskyttede side herefter:

?>


<?
//Hvis formen er submittet skal følgende gøres
$email = $_REQUEST["email"];
if ($email) {

// laver forbindelse
            mysql_connect("****", "****", "****") or die(mysql_error());
            mysql_select_db("****") or die(mysql_error());
           
           
            // sletter
            mysql_query("delete from newsletter where email='$email'");
            $uri = "admin.php?username=".$_POST['txtUsername']."&password=".$_POST['txtPassword'];

}
?>


<form method='post' action='admin.php'>
      <input type='text' name='email' value='Fjern tilmeldt e-mail' onFocus="if(this.value=='Fjern tilmeldt e-mail')this.value='';"onblur"if(this.value=='')this.value='Fjern tilmeldt e-mail';" size='22' class='input'><br>
     
      <input type='submit' name='send' value='Send' class='inputsend'>

<?php

}

?>
Avatar billede blackscorpion Nybegynder
12. marts 2007 - 20:07 #19
nåååårh. ;)

Du skal fjerne $uri helt.

smid derefter følgende ind i den sidste form:

<input type="hidden" name="txtUsername" value="<?php echo $_POST['txtUsername']; ?>">
<input type="hidden" name="txtPassword" value="<?php echo $_POST['txtPassword']; ?>">

Så burde det virke.
Avatar billede nielspt Nybegynder
12. marts 2007 - 22:42 #20
Så var den der! :D
Det er bare super! Mange, mange tak for hjælpen blackscorpion!
Er du ikke venlig at lægge et svar, så jeg kan give dig point'sene?
Tak!

Mvh. Niels
Avatar billede blackscorpion Nybegynder
13. marts 2007 - 15:47 #21
Jamen det var så lidt. ;)

Derfor det er bedst at smide så meget af koden til at starte med. ;)

For jeg troede at når du havde sendt din form, at du røg videre til et andet script, der så slettede den angivet email, og derefter sendte dig tilbage til admin siden, derfor jeg skrev det med $uri :D

Men fedt du fik det til at lykkes. ;)
Avatar billede blackscorpion Nybegynder
13. marts 2007 - 15:48 #22
okey mig der koger, havde ikke øjnene med mig fra starten af. lol :D
Avatar billede nielspt Nybegynder
13. marts 2007 - 23:29 #23
Tak for hjælpen igen!
:-) Spørgsmål lukket.
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