Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 543
Heisann.

Prøver å lage et enkelt innlogginsystem som gjør følgende:
  • Logger inn med en PIN-kode
  • Innlemmer oversikt.php
  • I oversikt.php skal man fylle inn antall solgte
  • Så skal oversikt.php som er i index.php oppdateres

Dette får jeg ikke til, den går bare tilbake til index.php
Prøver dette i PHPED, og har ingen webserver, men tester bare lokalt.

Problemet er at det ikke kommer ut hva jeg taster inn i boksen.

I tillegg, hvis jeg skal gange sammen antall solgte med et tall hvordan gjør jeg dette? Er ganske så fersk i PHP, så litt starthjelp hadde vært greit. Bruker foreløpig http://www.w3schools.com/php/ til nytte, tips om noe andre sider?

Index.php

Kode

<html>
Vennligst tast inn deres PIN-kode.
<form>
<form action="index.php" method="get">
PIN-kode: <input type="text" name="pinkode" size="4" />
<input type="submit" value="Logg inn" />
 </form>

<?php
$pc=$_GET["pinkode"];
$p = 1234;
    if  ($pc==$p)
    {
        echo    "Korrekt.";
        require("oversikt.php");
    }
    elseif ($pc==NULL)
        echo    "Tast inn PIN-kode.";
    else
    {
        echo    "Feil PIN-kode.";
    }
?>
</html>
Oversikt.php

Kode

<html>
Her er oversikt over foreløpig kundeinformasjon: <br />
Antall solgte: 
<html><form><form action="oversikt.php" method="post">
<input type="text" name="solgte" size="2" />
<input type="submit" value="Post!" /></form></html></html>
<?php
$solgte=$_POST["solgte"];
    echo $solgte;
?>
Sist endret av verified; 5. april 2012 kl. 19:02.
Hei.
Du må huske å sjekke om data er sendt inn før du begynner å behandle det. Det er her isset() kommer inn. I tillegg er det god kodeskikk å alltid utføre logikk/php før man starter output/html til nettleseren.

Du kan heller ikke bruke require på denne måten. Det du er ute etter en en redirect. Se koden min under. Require() er ment for å hente inn kode/funksjoner/klasser osv, evt html. Ikke en komplett side med dens funksjoner. Da må man redirecte.

index

Kode

<?php
$p = 1234;
$output = '';

if ( isset($_GET['pinkode']) ) {
	
	$pc = $_GET['pinkode'];
	
	if  ($pc == $p) {
        //$output = 'Korrekt PIN';
        header('Location: oversikt.php');
        die();
    }
    else {
    	$output = 'Feil PIN-kode.';
    }
}
?>
<html>
<?php echo $output; ?>
Vennligst tast inn deres PIN-kode.
<form action="index.php" method="get">
	PIN-kode: <input type="text" name="pinkode" size="4" />
	<input type="submit" value="Logg inn" />
</form>

</html>
oversikt

Kode

<?php
$output = '';
if ( isset($_POST['solgte']) ) {
	$solgte = $_POST['solgte'];
	
	$output = $solgte;
}
?>
<html>
<?php echo $output; ?>
Her er oversikt over foreløpig kundeinformasjon: <br />
Antall solgte: 
<form action="oversikt.php" method="post">
	<input type="text" name="solgte" size="2" />
	<input type="submit" value="Post!" />
</form>
</html>
Edit: Når det er sagt, så er det jo ikke noe sikkerhet på oversiktsiden som hindrer noen i å direkte gå inn på siden, utenom loginsiden
Sist endret av ma10as; 5. april 2012 kl. 19:56.
Takk for lærerik og informativ tilbakemelding!
Noe andre skikker jeg burde vite om?

Anbefaler du å bruke MySQL eller global, har lest såvidt om det på w3school.

Er på ganske
bar bakke, så tips til nettsteder/youtube kanaler taes hjertelig i mot.
Uansett login, liker jeg å bruke session, for å lettere kontrollere at de som åpner siden har lov til det.
En $_SERVER['REMOTE_ADDR'] i sessionkey sørger dessuten for å hinder session hijacking.

index.php

Kode

<?php
session_start();
$p = md5('1234'.'salt'.$_SERVER['REMOTE_ADDR']); // Setter kryptert passord som sjekkes ved innlogging
if ( $_REQUEST['login-go'] === 'Logg inn' ) {  //Logger inn
	$pc = md5($_POST['pinkode'].'salt'.$_SERVER['REMOTE_ADDR']);  // Henter input passord og krypterer
    if ($p === $pc){  // Sammenligner passordene
		$_SESSION['login'] = $pc;  // Lager session om passord er like
	} else {
		$output = 'Feil PIN, prøv igjen! <br>'; // Hvis ikke, informerer om feil
	}
}
if ($_REQUEST['logout-go'] == 'Logg ut') {  // Logger ut
    session_start();
    session_unset();
    session_destroy();
}
echo '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body>';
if ($_SESSION['login'] === $p) {  // Hvis innlogged, vis oversikt.php
include ('oversikt.php');
} else {  // Hvis ikke, vis dette
 $output .= '<html>
Vennligst tast inn deres PIN-kode.
<form action="index.php" method="POST">
	PIN-kode: <input type="text" name="pinkode" size="4">
	<input type="submit" value="Logg inn" name="login-go"/>
</form>';
}
echo $output; // Skriver ut innhold
echo '</body></html>';
?>
oversikt.php

Kode

<?php
$p = md5('1234'.'salt'.$_SERVER['REMOTE_ADDR']);
if ($_SESSION['login'] === $p) {  //Dersom loginsession er satt, og er riktig vis innhold
	if ( isset($_POST['solgte']) ) { // Sjekker om solgte er satt
		$solgte = $_POST['solgte'];
	} else { // Hvis ikke satt, setter solgte til 0
		$solgte = 0;
}
$output .= '<form action="index.php" method="POST">Klikk her for å logge ut:  <input type="submit" value="Logg ut" name="logout-go"></form>
Her er oversikt over foreløpig kundeinformasjon: <br>
Antall solgte: '.$solgte.'<br><form action="index.php" method="POST">
<input type="text" name="solgte" size="2">
<input type="submit" value="Post!"></form>';
} else {   // Hvis ikke, ødelegg evt session
    session_start();
    session_unset();
    session_destroy();
}

?>
Er veldig selvlært (har hvertfall en fungerende side kjørende), så mulig andre vil rette på det jeg har gjort.
Brukte stort sett Google for å innhente kunnskap.

Vil anbefale MySQL, men du bør være obs på å kontrollere inndata før du skriver verdier til database, for å forhindre SQL injection muligheter.
Lagrer du passord i database, bør dette også krypteres.
Sist endret av Lanjelin; 5. april 2012 kl. 21:29.
Limited edition
Moff's Avatar
Sitat av Lanjelin Vis innlegg
Uansett login, liker jeg å bruke session, for å lettere kontrollere at de som åpner siden har lov til det.
En $_SERVER['REMOTE_ADDR'] i sessionkey sørger dessuten for å hinder session hijacking.
Vis hele sitatet...
Dette var nytt for meg. Er du helt sikker på at dette er en vanntett teknikk? Koden din var ikke helt selvforklarende for meg; så vidt jeg kan forstå, så salter du passordet med IP-adressen til den besøkende, sammenligner denne hashen med den du får fra brukeren hver gang siden lastes inn. Vil ikke det kreve at brukeren også submitter et passord hver gang siden lastes, siden IP-adressen ikke lagres i klartekst i $_SESSION-arrayet? Hvis ikke, hvor er det 1234-variabelen i oversikt.php kommer fra?