Gå til innhold

kakkle

Medlemmer
  • Innlegg

    731
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av kakkle

  1. 'tabbrowser extensions' fikser det

    Hmmm... HAr nå installert Tabbrowser prefrences og QuickTabPrefToggle, men finner ingen opsjon om at sidene som man var på da man lukket leseren, skal åpnes neste gang du starter leseren.

     

    Noen tips ? Er det jeg som ikke har sett noe viktig her ?

     

    /kakkle

  2. Er det ikke bedre å gi $_SESSION vedrien til $brukernavn, da ?:

    login.php

    if  ($row['passord'] == $pass and $row['uid'] == "") {
    
      $_SESSION["brukernavn"]=$brukernavn;
    
      header("Location: minside.php?brukernavn=$brukernavn");
    

    minside.php:

    <?php
    session_start();
    $brukernavn = $_GET['brukernavn'];
    
    if ($_SESSION["brukernavn"] == $brukernavn){
    echo"Du er logget inn!";
    }
    else{
    include("login.php");
    echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
    }
    ?>
    

    KAn evt i minside.php bruke:

    <?php
    session_start();
    
    if (isset($_SESSION["brukernavn"])){ // Denne vil kun være satt dersom riktige ting er ok i scriptet login.php
    echo"Du er logget inn!";
    }
    else{
    include("login.php");
    echo"<p>Du må logge inn for å få tilgang til din brukerprofil!</p>";
    }
    ?>
    

    Du kan da fjerne "halen" urlen i header i login.php scriptet.

     

    /KMS

  3. Du må se på if blokkene... slutter de der de skal slutte ? Virker nesten som om du bare har satt mange } helt på slutten for å få vekk feilmeldinger...

    Hvis du ser på denne if setmningen:

    if (empty($brukernavn) || empty($pass)){
    

    så slutter den helt på slutten... Det vil si at det inne i if blokken kun blir utført dersom brukernavn eller passord ikke er fylt ut, og det er vel ikke helt meningen.

    Regner med at du vil ha slutten på denne if'en etter dette:

    if(!$pass){
    echo "<p>passord</p>";
    }
    

     

    edit: skrivefeil

    /Kakkle

  4. $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
    $resultat = mysql_query($q);
    $row = mysql_fetch_array($resultat);
    $uid = $row["uid"];
    if (!$uid){
    $sjekk = true;
    }
    
    else {
    $sjekk = false;
    }
    

    istedet for:

    $q =("SELECT uid FROM users WHERE brukernavn = '$brukernavn'");
    $resultat = mysql_query($q);
    $sjekk = mysql_fetch_array($resultat);
    
    if (!$sjekk){
    $sjekk = true;
    }
    
    else {
    $sjekk = false;
    }
    

  5. Hei Tror du har misforstått litt...

     

    Der det i koden står

    // send mail for bestilling

    skal du sette inn koden for sending av mail dersom konsult er krysset av

    // send mail for nyhetsbrev

    Her setter du du inn koden for sending av mail dersom nyhetsbrevtingen er krysset av.

    if setningene med header skal være helt til slutt i scriptet.

     

    begge.php siden kan hete hva som helst...

  6. Hmmm... du bruker den nok feil...

    Navn på sjekkboksene i ditt tilfelle, er what og nyhet. Dersom disse er huket av, får de verdien "on".

    if($_POST["what"] == "on") {
     //send mail for bestilling
     $konsult = true;
    }
    if($_POST["nyhet"] == "on") {
     // send mail for nyhetsbrev
     $nyhet = true;
    }
    if($konsult && $nyhet) {
     header("location:begge.php");
    }
    if($konsult) {
     header("location: takk.htm");
    }
    if($nyhet) {
     header("location: sendt.htm");
    }
    

    eller litt forkortet(akkurat det samme):

    if($_POST["what"] == "on") {
     //send mail for bestilling
     $konsult = true;
    }
    if($_POST["nyhet"] == "on") {
     // send mail for nyhetsbrev
     $nyhet = true;
    }
    if($konsult && $nyhet) header("location:begge.php");
    if($konsult) header("location: takk.htm");
    if($nyhet) header("location: sendt.htm");
    

    EDIT: Litt for mange $ foran nyhet :-)

  7. <form method="post" name="Form" action="">
    <input type="checkbox" name="konsult">Konsultasjon<br>
    <input type="checkbox" name="nyhet">Nyhetsbrev<br>
    <input type="submit" name ="sndForm" value="send">
    </form>
    <? 
    if(isset($_POST[sndForm])) {
     if($_POST["konsult"] == "on") {
          print "konsultasjon skal sendes<br>";
     }
     if($_POST["nyhet"] == "on") {
          print "nyhetsbrev skal sendes";
     }
    }
    

  8. headers må settes før det skrives noe ut i det hele tatt...

     

    Flytt if-blokka til starten av scriptet:

    <?php
    session_start();
    include("config.php");
    if ($_POST['send'] == 'Login'){
    $brukernavn = $_POST['brukernavn'];
    $pass = $_POST['pass'];
    $pass = md5($pass);
    mysql_connect($mySQLhost, $mySQLuser, $mySQLpass)
          or die("Could not connect: " . mysql_error());
    mysql_select_db($mySQLdb);
    
    $q =("SELECT passord FROM users WHERE uid='' AND brukernavn = '$brukernavn'");
    $resultat = mysql_query($q);
    $sjekk = mysql_fetch_array($resultat); 
    
    if ($sjekk[passord] == $pass) {
    $_SESSION["$brukernavn"] = true;
    header("Location: minside.php?brukernavn=$brukernavn"); }
    
    else {
    echo "<p>Sikker på at du skrev inn riktig brukernavn og $pass?</p>";
    }
    }
    
    echo <<< end
    
    <form action='$regScript' method='$formMethod'>
    <p>Brukernavn:   <input name='brukernavn' type='text' size='20'>
    <p>Passord:   <input name='pass' type='password' size='20'>
    <p><input name='send' type='submit' value='Login'>
    </form>
    
    end;
    ?>
    

    Dette skal fungere, med mindre du inkluderer denne login siden i en annen side, som skriver ut noe før header... Da kan du bare sende dataen til en annen side, f.eks. sjekk_login.php. som kun inneholder if blokken, også blir man sendt videre til en side med header(location:...) dersom brukernavn og passord er feil, og til en annen dersom det er rett...

     

    /Kakkle

  9. hm87: for å skrive smoothies kode litt annerledes:

    check.php:

    <?
    session_start();
    if ($_POST['bnavn'] == 'dittbrukernavn' && $_POST['pass'] == 'pass') {
     $_SESSION['brukernavn'] = $_POST['bnavn']; // denne blir kun satt dersom brukernavn og passord stemmer. 
     header("location: hemmelig.php");
    } else {
    echo 'feil brukernavn og passord';
    }
    

    hemmelig.php:

    <?
    session_start();
    if (isset($_SESSION['brukernavn'])) { // Denne finnes kun dersom den er satt i check.php, altsåp dersom brukernavn og passord er riktig
    // hemmelig innhold
    } else {
    echo 'du har ikke tilgang til denne siden';
    exit();
    }
    ?>
    

    Akkurat hvilken verdi $_SESSION['brukernavn'] har, har ingenting å si, siden det kun blir sjekket om den er satt. Kunne satt $_SESSION['brukernavn'] = "tre-kåmma-åtte"; for den saks skyld. Men det kan være smart å la det være brukernavn, da dette kan brukes i siden han logger inn på. F.eks. i forbindelse med spørringer. Hvis han skal endre sine egne data, eller no.

     

    /Kakkle

  10. 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... :-)

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

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

×
×
  • Opprett ny...