Gå til innhold

Enkel logge inn -> skrive til fil, lese fra fil?


Anbefalte innlegg

Jobber med en prisliste som jeg må kunne endre lett og greit. Det jeg tenker meg er at man logger inn på en side, her har man noen inputbokser. I disse boksene kan man skrive inn prisene som skal vises på siden. Er vel 10-20 priser som skal være mulige å endre, men jeg vet ikke hvordan dette kan gjøres.

 

Om noen setter opp et eksempel på et slikt system der man logger inn og kan endre verdier på en side er jeg veldig takknemlig.

 

Selv aner jeg ikke hvordan dette gjøres, men jeg lærer etterhvert som dere hjelper meg her. Kan prøve selv om dere hjelper meg med følgende:

  • Hvordan jeg skriver til et dokument på en bestemt linje.
  • Hvordan jeg leser fra et dokument på en bestemt linje.
  • Hvordan jeg lager et passe-sikkert innloggingssystem, har aldri prøvd meg på et innloggingssystem før.

Jeg kan kun _helt_ "the basics" av php.

Lenke til kommentar
Videoannonse
Annonse

Hey, kan ivertfall hjelpe deg me login scriptet. Her er et simpelt men rimelig sikkert login script jeg har laget:

 

login.form.php:

<form action="login.act.php" method="post" name="auth">
<table width="100%"  border="0" align="center" cellpadding="0">
 <tr>
   <td width="7%">Brukernavn:</td>
   <td width="93%"><input type="text" name="username" /></td>
 </tr>
 <tr>
   <td>Passord:</td>
   <td><input type="password" name="password" /></td>
 </tr>
 <tr>
   <td colspan="2"><input name="auth" type="submit" value="Logg Inn" /></td>
   </tr>
</table>
</form>

 

login.act.php:

<?php
session_start();
if (!empty($_POST['username']) && !empty($_POST['password'])) {
      if (($_POST['username'] == "brukernavn") && (md5($_POST['password']) == "md5hash av passord")) {
              $_SESSION["access"] = "Admin";
              header("Location: login.done.php");
      }
      
}
else {
      header("Location: login.form.php");
}
?>

 

login.done.php:

<?
session_start();
if ($_SESSION["access"] !== "Admin") {
      echo "Feil brukernavn eller passord, klikk <a href='login.form.php'>her</a> for å prøve igjen";
}
else {
masse kode osv her!
og her
og her
osv
}
?>

 

Den if/else koden i login.done.php kan du bruke på alle sider som skal være sikkret.

 

logout.php

<?php
session_start();
session_destroy();
?>

 

Der har du vel alt du trenger til selve logginnen :)

Lenke til kommentar

Takker! Aldri brukt et slikt før, men regner med det bare er å bytte ut md5hash av passord og brukernavn i login.act.php med de verdiene jeg vil ha.

 

Har fått hjelp av k-mouse med måten jeg kan lese av informasjon fra et dokument. Om noen nå linker til eller kan forklare meg hvordan jeg skal legge til tekst på en bestemt linje i et dokument ( og erstatte det som allerede er på den bestemte linjen) kan jeg prøve meg på å lage et script i morgen. :)

Lenke til kommentar

For å erstatte en linje i en fil:

se funksjonene

file()

fopen()

fwrite()

 

Eksempel hvis du vet nummer på den linjen du vil bytte:

$arfil = file("fil.txt");
$arfil[$linjenrsomskalbyttes] = $detsomskalsettesinn
$helefilen = implode("", $arfil);
$skrivtilfil = fopen("fil.txt", "w"); // w for å skrive over hele filen
fwrite($skrivtilfil, $helefilen);
fclose($skrivtilfil);

Sånn ca.

Du kan evt lese inn hele filen til en variabel, og endre alt som står på en linje, til noe annet vha replace funksjon, men dette forutsetter at denne linjen bare forekommer en gang i filen.

 

EDIT: Slett ikke testet :)

Endret av kakkle
Lenke til kommentar

Takker igjen. :)

Har prøvd meg på et script, og det funker til dels. (uten sikkerhet inntill videre)

 

EDIT: Glem resten av posten her egentlig, har fikset det, lagt det i spoiler og. :)

Skjult tekst: (Marker innholdet i feltet for å se teksten):

Problemet er at om et av input feltene er tomme så blir også den akutelle linjen tom.

Tenkte jeg kunne løse problemet ved å sette den aktuelle variabelen for linjen = den aktuelle linjen om den var tom, men jeg vet ikke hvordan jeg kan gjøre dette over flere linjer.. Ta en kjapp under om du ikke forstår.

 

Prøvde meg altså på noe slikt som

if(empty($en)){ $en = artfil[0] }

...men jeg vet ikke hvordan jeg kan kjøre flere slike for $to, $ tre osv, vet ikke hvordan dette skal "føres" i PHP.

 

Mitt første "kombinerte-små-snutter-fra-andre" -script med innslag av "egenkoding".

  <?php
 if ($_POST['submit'] == TRUE) {
 	
 	$filnavn = "test.txt";
 	$arfil = file("$filnavn");
 	
 	
 	$en        = stripslashes(strip_tags($_POST['en']));
 	$to        = stripslashes(strip_tags($_POST['to']));	
 	$tre        = stripslashes(strip_tags($_POST['tre']));	
 	
 	/* her kan jeg sette inn flere  tester */
 	
 	
 	$arfil[0] = "$en";
 	$arfil[1] = "\n$to";
 	$arfil[2] = "\n$tre\n";
 	
 	
 	$helefilen = implode("", $arfil);
 	$skrivtilfil = fopen("$filnavn", "w");
 	fwrite($skrivtilfil, $helefilen);
 	fclose($skrivtilfil);	
 	
 	echo("Datene er endret, jippi!");
 }
 else {
     
 	
 ?>

 	<form method="post" action="">
 	<p>
   <label for="en">Linje en</label>
   <input name="en" type="text" size="30" maxlength="30" /><br />
   
   <label for="to">Linje to</label>
   <input name="to" type="text" size="30" maxlength="30" /><br />
   
   <label for="tre">Linje tre</label>
   <input name="tre" type="text" size="30" maxlength="30" /><br />
   
   
   <label for="submit"> </label>
   <input id="submit" class="button" type="submit" name="submit" value="Send" />

 	</p>
 	</form>

 <?php } ?> 

 

Hjelp? :)

 

(PHP er forresten veldig morsomt å jobbe med)

 

EDIT: Leif

EDIT2: Glem det, det er kanskje lurt at linjen blir tom om input er tom. Skal se om jeg finner en måte å få den gamle verdien til å stå i den akutelle input boksen når siden loades. :p

 

EDIT: Fikk det til.

Legger ved oppdatert versjon under

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Care</title>
</head>
<body>

 	<?php
 	
 	$filnavn = "turer.txt";
 	$arfil = file("$filnavn");
 	
 if ($_POST['submit'] == TRUE) {
 	
 	$en        = stripslashes(strip_tags($_POST['en']));
 	$to        = stripslashes(strip_tags($_POST['to']));	
 	$tre        = stripslashes(strip_tags($_POST['tre']));	
 	
 	/* her kan jeg sette inn flere  tester */
 	
 	
 	$arfil[0] = "$en";
 	$arfil[1] = "\n$to";
 	$arfil[2] = "\n$tre\n";
 	
 	
 	$helefilen = implode("", $arfil);
 	$skrivtilfil = fopen("$filnavn", "w");
 	fwrite($skrivtilfil, $helefilen);
 	fclose($skrivtilfil);	
 	
 	echo("Datene er endret, jippi!");
 }
 else {
 	
 	}
 ?>

 	<form method="post" action="">
 	<p>
   <label for="en">Linje en</label>
   <input name="en" type="text" size="30" maxlength="30" value="<?php echo("$arfil[0]") ?>" /><br />
   
   <label for="to">Linje to</label>
   <input name="to" type="text" size="30" maxlength="30" value="<?php echo("$arfil[1]") ?>" /><br />
   
   <label for="tre">Linje tre</label>
   <input name="tre" type="text" size="30" maxlength="30" value="<?php echo("$arfil[2]") ?>" /><br />
   
   
   <label for="submit"> </label>
   <input id="submit" class="button" type="submit" name="submit" value="Send" />

 	</p>
 	</form>
 	
</div>

</div>

</body>
</html>

Endret av -Teddy-
Lenke til kommentar

Har nå begynt på sikkerhet-delen.

 

EDIT: Fikset første problem i denne posten og, slettet en masse info.

 

Nå er følgende problemet mitt:

Login'en går helt fint, helt til jeg kommer til bra.php, der scriptet mitt ligger. Her får jeg opp feil brukernavn og passord, selv om de stemte i login.done.php. Har prøvd meg på header:(location) og på en vanlig link for komme til bra.php, uten at det var noen forskjell på utfallet.

 

Filene:

 

login.form.php

<form action="login.act.php" method="post" name="auth">
<table width="100%"  border="0" align="center" cellpadding="0">
<tr>
  <td width="7%">Brukernavn:</td>
  <td width="93%"><input type="text" name="username" /></td>
</tr>
<tr>
  <td>Passord:</td>
  <td><input type="password" name="password" /></td>
</tr>
<tr>
  <td colspan="2"><input name="auth" type="submit" value="Logg Inn" /></td>
  </tr>
</table>
</form>

 

login.act.php

<?php
session_start();
if (!empty($_POST['username']) && !empty($_POST['password'])) {
     if (($_POST['username'] == "meg") && (md5($_POST['password']) == "7815696ecbf1c96e6894b779456d330e")) {
             $_SESSION["access"] = "Admin";
             header("Location: login.done.php");
     }
    
}
else {
     header("Location: login.form.php");
}
?>

 

login.done.php

<?
session_start();
if ($_SESSION["access"] !== "Admin") {
     echo "Feil brukernavn eller passord, klikk <a href='login.form.php'>her</a> for å prøve igjen";
}
else {
echo 'Trykk <a href="bra.php">her</a> for å komme til redigeringssiden.';
}
?>

 

bra.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http//www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Care</title>
</head>
<body>





<?php
if ($_SESSION["access"] !== "Admin") {
     echo "Feil brukernavn eller passord, klikk <a href='login.form.php'>her</a> for å prøve igjen";
}	
else { 
 	
 	$filnavn = "turer.txt";
 	$arfil = file("$filnavn");
 	
 if ($_POST['submit'] == TRUE) {
 	
 	$en        = stripslashes(strip_tags($_POST['en']));
 	$to        = stripslashes(strip_tags($_POST['to']));	
 	$tre        = stripslashes(strip_tags($_POST['tre']));	
 	
 	/* her kan jeg sette inn flere  tester */
 	
 	
 	$arfil[0] = "$en";
 	$arfil[1] = "\n$to";
 	$arfil[2] = "\n$tre\n";
 	
 	
 	$helefilen = implode("", $arfil);
 	$skrivtilfil = fopen("$filnavn", "w");
 	fwrite($skrivtilfil, $helefilen);
 	fclose($skrivtilfil);	
 	
 	echo("Datene er endret.");
 }
 else {  
 	
 	} 
}  	
?>

 	<form method="post" action="">
 	<p>
   <label for="en">Linje en</label>
   <input name="en" type="text" size="30" maxlength="30" value="<?php echo("$arfil[0]") ?>" /><br />
   
   <label for="to">Linje to</label>
   <input name="to" type="text" size="30" maxlength="30" value="<?php echo("$arfil[1]") ?>" /><br />
   
   <label for="tre">Linje tre</label>
   <input name="tre" type="text" size="30" maxlength="30" value="<?php echo("$arfil[2]") ?>" /><br />
   
   
   <label for="submit"> </label>
   <input id="submit" class="button" type="submit" name="submit" value="Send" />

 	</p>
 	</form>
 	
</div>

</div>

</body>
</html>

Endret av -Teddy-
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...