Gå til innhold

Problemer med logginn-script


Anbefalte innlegg

Heisann

 

Er det noen guruer her inne som kan hjelpe meg? Er en fersking på PHP og kan ikke stort. Prøvde å mikse sammen noe helt enkelt for å få et administrasjonssystem på min personlige side. Her skal man kun kunne legge til nyheter. Opprettet en logginn.php der man har en form for å logge seg inn. Det gikk greit. Så opprettet jeg admin.php hvor man kommer hvis man har skrevet riktig brukernavn og passord på logginn.php. På admin.php kan man skrive inn i to inputts-bokser, en for overskrift og en for brødtekst. Så vil jeg at dette skal sendes til en siste side som jeg har kalt nyheter.php. I nyheter skal det ikke ligge en eneste PHP-kode, hvis jeg har forstått dette riktig. I nyheter.php skal nyhtene bare legge seg under hverandre. Alt skal styres via admin.php. Prøvde meg på noe fopen og fputs, men vet ikke om jeg har forstatt det med å ta i mot variabler.

 

Link: http://www.stavegabrielsen.com/index.php?side=logginn

Brukernavn: hei

Passord: heisann

 

Tenker jeg mer på PHP nå, går det helt rundt for meg.

 

logginn.php

<?php
<form method="post" action="index.php?side=admin"> 
<table border="0"> 
<tr><td>Brukernavn:</td><td><input type="text" name="brukernavn" size="27"></td></tr><tr><td> 
Passord:</td><td><input type="password" name="passord" size="27"></td></tr><tr><td></td><td> 
<input type="submit" value="Logg inn"> 
<input type="reset" value="Tøm feltene"> 
</td></tr></table> 
</form> 
?>

 

admin.php

<?php 

if ($brukernavn == "hei" && $passord == "heisann") { 
echo "Du er nå innlogget!<br><br>
<form method='post' action='index.php?side=admin'> 
<table border='0'><tr><td></td><td><b>Legg til en nyhet:</b></td></tr> 
<tr><td>Overskrift</td><td><input type='text' size='60' name='overskrift'></td></tr> 
<tr><td>Brødtekst</td><td><textarea name='brodtekst' rows='10' cols='45'></textarea> 
</td></tr> 
<tr><td></td><td><input type='submit' value='Legg til'> <input type='reset' value='Tøm feltene'> 
</td></tr></table> 
</form>
"; 
} else { 
echo "Feil brukernavn eller passord!" 
} 




if (!$of = fopen("nyheter.php","a")) {
echo "Beklager, men kunne ikke opne denne fila!";
} else {
fputs ($of,$overskrift);
fclose($of);

?> 

Endret av manmob
Lenke til kommentar
Videoannonse
Annonse

Hei igjen,

 

forandret litt på admin.php:

<?php 

if ($brukernavn == "hei" && $passord == "heisann") { 
echo "Du er nå innlogget!<br><br>
<form method='post' action='index.php?side=admin'> 
<table border='0'><tr><td></td><td><b>Legg til en nyhet:</b></td></tr> 
<tr><td>Overskrift</td><td><input type='text' size='60' name='overskrift'></td></tr> 
<tr><td>Brødtekst</td><td><textarea name='brodtekst' rows='10' cols='45'></textarea> 
</td></tr> 
<tr><td></td><td><input type='submit' value='Legg til'> <input type='reset' value='Tøm feltene'> 
</td></tr></table> 
</form>
"; 
} else { 
echo "Feil brukernavn eller passord! Gå <a href='index.php?side=logginn'>tilbake</a> og prøv igjen.";
} 

?>

 

Nå kan folk og fe logge seg inn, men problemet er hvordan jeg skal klare å legge til nyheter. Min kunnskap om PHP er desverre ikke stor nok. Noen som kan hjelpe.

Lenke til kommentar
jeg tok og la inn ett innlegg på siden din med det scriptet der, og jeg synes det ser veldig ut som om det fungerer. Det kom ihvertfall opp en nyhet på siden din, test ifra meg liksom.  Good Luck!
Hei, fikk endelig til scriptet mitt i går, og det var en deilig følelse for en nybegynner innen PHP :)

 

Nå er det bare en ting som mangler. Når man nå legge til nyheter vil den nyeste nyhetene hele tiden leggest nederst. Jeg vil ha det motsatt, de nye øverst, men hvordan?

 

Kodene ser nå slik ut:

admin.php:

<?php 

if ($brukernavn == "hei" && $passord == "heisann") { 
echo "Du er nå innlogget!<br><br>
<form method='post' action='index.php?side=nyheter'> 
<table border='0'><tr><td></td><td><b>Legg til en nyhet:</b></td></tr> 
<tr><td>Overskrift</td><td><input type='text' size='60' name='overskrift'></td></tr> 
<tr><td>Brødtekst</td><td><textarea name='brodtekst' rows='10' cols='45'></textarea> 
</td></tr> 
<tr><td></td><td><input type='submit' value='Legg til'> <input type='reset' value='Tøm feltene'> 
</td></tr></table> 
</form>
"; 
} else { 
echo "Feil brukernavn eller passord! Gå <a href='index.php?side=logginn'>tilbake</a> og prøv igjen.";
} 

?>

 

og

 

nyheter.php:

<?php

$overskrift = "<h2>$overskrift</h2>";

$of = fopen("/home/stave/public_html/php_filer/nyheter.php","a");
fputs ($of,$overskrift);
fputs ($of,$brodtekst);
fclose($of);

?>

Endret av manmob
Lenke til kommentar

Du kan foreksempel lese inn hele innholdet av filen, og legge til den nye nyheten på begynnelsen, for så å skrive hele det nye innholdet til filen. Husk da å brke fopen("file.txt", "w") for å skrive over det som står der fra før.

 

$nyttinlegg = $overskrift.$brodtekst;
$gammelfil = implode("", file("/home/stave/public_html/php_filer/nyheter.php"));
$nyfil = $nyttinnlegg.$gammelfil;
$of =  fopen("/home/stave/public_html/php_filer/nyheter.php","w");
fputs ($of, $nyfil);
fclose($of);

 

OBS! Koden er ikke testes, men skal fungere i prinsippet, trur jeg.

 

/Kakkle

Lenke til kommentar

Takk for koden kakkle,

men får det ikke til å fungere. Når jeg prøver å legge til en nyhet, vises ingen nyhet, men heller ingen feilmelding, så dette er litt snodig.

 

Har dette noe med array's å gjøre. Slo nemlig opp i manualen på implode. Hadde satt STOR pris på om du hadde lagt inn noen forklaringer i koden.

Endret av manmob
Lenke til kommentar

Her er litt forklaring og eksempel på implode og file()

Implode lager et array av ting til en streng, med seperatoren som er i første argument som skille mellom dem. Eksempel:

$array = array("hei", "på", "deg");
$streng = implode(" ", $array); // $streng vil nå bli: hei på deg
$streng2 = implode("*", $array); // $streng2 blir hei*på*deg
$streng3 = implode("", $array); // $streng3 blir heipådeg

file() leser innholdet av en fil, og legger hver linje inn som et element i et array:

fil.txt:

hei på deg
Dette står
i filen

lesfil.php:

$readfile = file("fil.txt");
print "<pre>";
print_r($readfile);
print "</pre>";
// Vil skrive ut array
$helefilen = implode("", $readfile);
print helefilen;
// vil skrive ut filen slik den ser ut over i fil.txt

 

Kan du poste admin.php og nyheter.php, slik det ser ut nå ? Tror kanskje det ikke er så lurt å skrive til filen nyhter.php fra filen nyheter.php, egentlig:-)

 

/Kakkle

Lenke til kommentar

Veldig flotte forklaringer kakkle! Tusen takk :thumbs:

 

Slik ser filene mine ut akkurat nå:

 

admin.php:

<?php 

if ($brukernavn == "hei" && $passord == "heisann") { 
echo "Du er nå innlogget!<br><br>
<form method='post' action='index.php?side=nyheter'> 
<table border='0'><tr><td></td><td><b>Legg til en nyhet:</b></td></tr> 
<tr><td>Overskrift</td><td><input type='text' size='60' name='overskrift'></td></tr> 
<tr><td>Brødtekst</td><td><textarea name='brodtekst' rows='10' cols='45'></textarea> 
</td></tr> 
<tr><td></td><td><input type='submit' value='Legg til'> <input type='reset' value='Tøm feltene'> 
</td></tr></table> 
</form>
"; 
} else { 
echo "Feil brukernavn eller passord! Gå <a href='index.php?side=logginn'>tilbake</a> og prøv igjen.";
} 

?>

 

nyheter.php:

<?php

$overskrift = "<h2>$overskrift</h2>";

$nyttinlegg = $overskrift.$brodtekst;
$gammelfil = implode("", file("/home/stave/public_html/php_filer/nyheter.php"));
$nyfil = $nyttinnlegg.$gammelfil;
$of =  fopen("/home/stave/public_html/php_filer/nyheter.php","w");
fputs ($of, $nyfil);
fclose($of);

?>

Lenke til kommentar

ER litt usikker på hva du har gjort her.. Hvilken fil inkluderer du for å vise nyhentene ? nyheter.php ? Isåfall så er det ikke så veldig rart at det ikke vises så veldig mye :-) bytt til .inc som endelse i nyheter.php, og inkluder inc filen der du skal vise nyhetene.

Du bør også kode ut ifra at register Globals er satt til av. Det vil si at du ikke kan hente variabelnavn dirkte fra form. De hentes da med f.eks:

$brodtekst = $_POST["brodtekst"];

 

Husk at nyheter.inc må ha lese og skrive rettigheter(chmod 0755 eller chmod 0777)

 

nyheter.php:

<?php
$overskrift = $_POST["overskrift"];
$brodtekst = $_POST["brodtekst"];
$overskrift = "<h2>$overskrift</h2>";

$nyttinlegg = $overskrift.$brodtekst;
$gammelfil = implode("", file("nyheter.inc"));
$nyfil = $nyttinnlegg.$gammelfil;
// die($nyfil); // kommenter ut denne linjen for å sjekke om filen er riktig.
$of =  fopen("nyheter.inc","w");
fputs ($of, $nyfil);
fclose($of);
?>

Husk at du skriver over alt det tidligere innholdet i filen nyheter.inc. Det kan derfor være greit de første gangene å sjekke at filen blir slik du forventer. Dette kan gjøres ved å skrive die($nyfil) før du skriver til fil.

Der du vil vise nyhtene:

include("nyheter.inc"); //avhengig av at den ligger i samme folder.

 

Etter hvert kan det jo være greit at det huskes at admin er pålogget. Bruk da sessions. Les om det på php.net.

 

Ble mye svada her, menmen... :-)

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...