Gå til innhold

PelleP

Medlemmer
  • Innlegg

    499
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av PelleP

  1. Jeg er veldig fersk når det gjelder design av databaser og jeg lurer på en del ting i forhold til den foreslåtte løsningen:

    - Såvidt jeg forstår så vil kollononen for rettigheter i bildetabellen lagre flere verdier i hvert felt? Er dette god praksis?

    - I tillegg så vil det vell innebære at hver gang man laster bildetabellen så blir også alle tilgangsdata lastet. Vil ikke det føre ti redusert ytelse dersom tabellen skal brukes i operasjoner hvor brukertilganger er irrellevante?

    - I steden for to laaange tabeller med lite informasjon på hver linje får man en tabell med masser av informasjon på hver linje. Er det virkelig mer effektivt?

     

    For øvrig lurer jeg på når størrelsen på databasen blir et problem. Det dreier seg tross alt ikke om et nytt MySpace, men snarere et avansert familiealbum. Når vil egentlig størrelsen på databasen bli et problem?

     

    Uansett så lurer jeg på om det blir unødvendig komplissert å styre rettighetene på brukernivå. Jeg vil formode at i de fleste tilfeller vil rettighetene være knyttet til grupper. Kanskje retteighetene kan styres i en tabell med feltene fil og gruppe og en tilleggstabell for unntak?

  2. Jeg er i ferd med å lage en internettside ved hjelp av PHP (Javascript og Mysql).

     

    Blant annet skal jeg ha et bildegalleri med bilder som skal organiseres i album og med brukere og grupper som har tilgang til "sine" bilder. Det skal altså fungere omtrent som på Facebook der man kan gi tilgang til et bilde både til grupper og til enkelte brukere.

     

    Jeg har tenkt å bruke en MySql database, men jeg sliter litt med å finne en noenlunde ryddig design.

     

    For eksempel lurer jeg på om jeg skal ha en tabell "tilganger" med to felt "bilde" og "bruker/gruppe". Dvs at både gruppetilgang og brukertilgang legges inn i samme tabell. Eller om det er bedre med én tabell for brukertilgang og én for gruppetilgang.

     

    Noen forutsetninger:

     

    - Tilgang skal i utgangspunktet gis på bildenivå slik at en bruker kan ha tilgang kun til enkelte bilder i et album.

     

    - Hver bruker skal ha linker til alle album som brukeren har helt eller delvis tilgang til, men skal overhode ikke se de album hvor brukeren ikke har tilgang til noe bilde.

     

    - For hvert bilde skal det sjekkes om en gitt bruker har tilgang til filen enten personlig, eller som medlem av en gruppe.

     

    - Derssom en bruker har tilgang til et bilde både personlig og som medlem av en gruppe så må ikke den personlige tilgangen bli borte dersom brukeren blir fjernet fra gruppen.

     

    - PHP koden må ikke bli altfor komplisert!

     

    Veldig takknemlig for alle synspunkter, råd og vink.

  3. Jeg har lust å oppgradere fra Ubuntu 9.10 til 10.4, uten å ta noen sjanser med mitt velfungerende 9.10.

     

    Jeg tenkte å installere 10.4 på en egen partisjon, men bruke samme partisjon for hhv swap og hjemmeområde som er i bruk av 9.10.

     

    Dette skulle vell være tilnærmet 100% trygt?

     

    (Jeg skal formatere å bruke paritsjoner som til nå er brukt av Windows Vista)

  4. Du kan jo bruke output buffering

     

    
    <?php
    
    ob_start();
    
    $loginRedirect = "http://www.php.net";
    
    echo "Du blir nå sendt til " . $loginRedirect;
    
    header("location:" . $loginRedirect);
    
    ob_end_flush();
    
    ?>
    
    

    Takk for tipset, men jeg fikk ikke det heller til å fungere. Derimot så fungerte det når jeg sendte variabelen videre som et felt i dialogskjemaet, altså linjen:

    <input type='hidden' name='loginRedirect' value='$loginRedirect'>

    Hele koden ser nå slik ut:

    <?php //palogin.php
    
    include_once 'toptekst.php';
    
    global $loginRedirect;
    
    if(isset($_GET['curi'])) $loginRedirect =  $_GET['curi'];
    echo "Last URI was: " . $loginRedirect . "<br/>";
    
    if(isset($_POST['bruker']))
    {
    
       $bruker = $_POST['bruker'];
       $pass   = $_POST['pass'];
       $loginRedirect = $_POST['loginRedirect'];    
    
       if($bruker == "" || $pass == "")
       {
           echo "Vennligst fyll i både brukernavn og passord";
       }
       else
    
       include_once 'pa_db_login.php';
    
       {
           $query = "SELECT * FROM brukere WHERE bruker='$bruker'
                           AND passord='$pass'";
    
           if(mysql_num_rows(mysql_query($query))==0)
           {
               echo "Ugyldig passord eller brukernavn, prøv igjen";
           }
           else
           {
               $_SESSION['bruker'] = $bruker;
               $_SESSION['pass']   = $pass;
               //header( 'Location: http://localhost/hjemmeside/index.php');
               //header("Location:" . $_SESSION['loginRedirect']);            
               header("location:" . $loginRedirect);
               //echo "Du er logget inn som " . $bruker;
           }
       }
    }
    
    if(!$_SESSION)
    {
    echo <<<_END
    <form method='post' action='palogin.php'>
    Brukernavn <input type='text' maxlength='16' name='bruker' "<br/>
    Passord       <input type='password' maxlength='16' name='pass' <br/>
    <input type='hidden' name='loginRedirect' value='$loginRedirect'>
    <input type='submit' value='Logg inn'>
    _END;
    }
    ?>

    Jeg er sikker på et det finnes en enklere måte å gjøre det på, men uansett så har dette vært svært lærerikt. [$_SERVER['REQUEST_URI'] var løsningen, Ekstrapoeng til Ernie! :)

  5. bare slaske litt php kode inn i dn javascripten slik at den skal følge URL'en som du setter..

     

    Det som PHP motoren har problemer med det er og sende en ny header til nettleseren for redirect når du allerede har 50 linjer kode.

    Men hvorfor har den da ikke problemer med det dersom jeg benytter alternativet;

    header( 'Location: http://localhost/hjemmeside/index.php');

     

    Jeg prøvde litt med Ernies løsning, koden ble slik:

    <?php //palogin.php
    
    include_once 'toptekst.php';
    
    $loginRedirect = "";
    if(isset($_GET['curi'])) $loginRedirect =  $_GET['curi'];
    echo "Last URI was: " . $loginRedirect;
    
    if(isset($_POST['bruker']))
    {
    
       $bruker = $_POST['bruker'];
       $pass   = $_POST['pass'];
    
       if($bruker == "" || $pass == "")
       {
           echo "Vennligst fyll i både brukernavn og passord";
       }
       else
    
       include_once 'pa_db_login.php';
    
       {
           $query = "SELECT * FROM brukere WHERE bruker='$bruker' 
                           AND passord='$pass'";
    
           if(mysql_num_rows(mysql_query($query))==0)
           {
               echo "Ugyldig passord eller brukernavn, prøv igjen";
           }
           else
           {
               $_SESSION['bruker'] = $bruker;
               $_SESSION['pass']   = $pass;
               //header( 'Location: http://localhost/hjemmeside/index.php');
               //header("Location:" . $_SESSION['loginRedirect']);
               echo "Du blir nå sendt til " . $loginRedirect;
               header("location:" . $loginRedirect);
               //echo "Du er logget inn som " . $bruker;
           }
       }
    }
    
    if(!$_SESSION)
    {
    echo <<<_END
    <form method='post' action='palogin.php'>
    Brukernavn <input type='text' maxlength='16' name='bruker' "<br/>
    Passord       <input type='password' maxlength='16' name='pass' <br/>
    <input type='submit' value='Logg inn'>
    _END;
    }
    ?>
    

    Dersom dere ser den øverste delen av koden så fungerer den. Ved hjelp av

    $loginRedirect =  $_GET['curi'];

    Får jeg satt variablen $loginRedirect (det blir verifisert ved utskriften), men når jeg prøver å benytte den variabeln for å sende brukeren til forrige side ved hjelp av:

    header("location:" . $loginRedirect);

    så fungerer ikke det fordi $loginRedirect ikke har noen verdi i den delen av koden!?

    Det er tydeligvis noe grunnleggende som jeg missforstått her, jeg trodde at når en variabel ble definert utenfor en funksjon så ville den ha globalt scope??

  6. Det du kan gjøre er å lagre nåværende URL når du sender noen til innloggingen i session og så sende brukeren tilbake til den URLen etter man blir logget inn. Alternativt sjekke om HTTP_REFERER er satt og sette en standardverdi hvis den ikke er det.

    Å lagre den nåværende URL høres fornuftig ut, men hvordan gjør jeg det?

  7. PHP klager nokk mest sannsynlig på at du setter headeren midt i koden. - Javascript metoden er rimelig lik

    <script type="text/javascript">window.location="index.php"</script>

    Nja, men det fungerer jo når jeg bruker "header( 'Location: http://localhost/hjemmeside/index.php');"!

    Det jeg ønsker er imidlertid at brukeren skal sendes tilbake til siden som han kom fra. Det er akkurat på samme måte som her på Diskusjon.no. Når du logger inn her kommer du tilbake til den siden du var på før innloggingssiden.

     

    Javascriptet som du foreslår vill også bare sende brukeren tilbake til indexen, uansett hvor han kom fra.

     

    Jeg prøvde litt med javascript:history.go(-1), men jeg skjønner nok ikke helt nøyaktig hvordan jeg skal skrive koden.

     

    Jeg er ganske fersk som dere skjønner.

  8. Følgende php-fil skulle fungere slik at man etter innlogging ble "redirected" til den siden man kom fra. Inloggingen fungerer, men redirect-koden fungerer ikke. Den alternative løsningen hvor man blir "redirected" til siden index.php fungerer.

    Kan noen hjelpe?

    <?php //palogin.php
    include_once 'toptekst.php';
    
    echo 'Innlogging';
    
    if(isset($_POST['bruker']))
    {
       $_SESSION['loginRedirect'] = $_SERVER['HTTP_REFERER'];
    
       $bruker = $_POST['bruker'];
       $pass   = $_POST['pass'];
    
       if($bruker == "" || $pass == "")
       {
           echo "Vennligst fyll i både brukernavn og passord";
       }
       else
    
       include_once 'pa_db_login.php';
    
       {
           $query = "SELECT * FROM brukere WHERE bruker='$bruker' 
                           AND passord='$pass'";
    
           if(mysql_num_rows(mysql_query($query))==0)
           {
               echo "Ugyldig passord eller brukernavn, prøv igjen";
           }
           else
           {
               $_SESSION['bruker'] = $bruker;
               $_SESSION['pass']   = $pass;
               //header( 'Location: http://localhost/hjemmeside/index.php');
               header("Location: " . $_SESSION['loginRedirect']);
           }
       }
    }
    
    if(!$_SESSION)
    {
    echo <<<_END
    <form method='post' action='palogin.php'>
    Brukernavn <input type='text' maxlength='16' name='bruker' "<br/>
    Passord       <input type='password' maxlength='16' name='pass' <br/>
    <input type='submit' value='Logg inn'>
    _END;
    }
    ?>
    

  9. Vi har hatt bredbånd fra neextgentel i lang tid, men vurderer nå å bytte til fiber fra lynet.

     

    Jeg er bare litt usikker på hvordan hjemmenettverket vil fungere. Vi har tre PC-er og jeg hadde tenkt å koble en vanlig switch til kabeluttaket, koble den ene pc-en dirkte til det og de andre via en trådløs ruter. Det må vel fungere?

     

    Hvordan blir det med sikkerheten. Det er jo brannvegg i ruteren fra nextgentel. Men brannmuren i Windows gir kanske tilstrekkelig beskyttelse?

     

    Lurer også på om det er noen som har noen erfaringer med lynet. Nextgentel har fungert prikkfritt i flere år.

  10. O.K. Jeg bruker boken Learning PHP, MySQL & JavaScript og metoden sanitizeString blir foreslått brukt intill man lerer nøyktagig når man skal bruke de forskjellige metodene. Jeg ser nå at iflg Wikipedia så er magic_quotes "deprecated" siden PHP 5.3.0, er det ikke da litt rart at en bok fra juli 2009 foreslår bruk av metoden stripslaches? Uansett så tar jeg det til etteretning at den foreslåtte metoden for å sikre seg er bad practise.

    Takk for svar!

  11. Koden nedenfor er et eksempel fra boken Learning PHP, MySQL & JavaScript.

    Det jeg lurer på er funksjonen sanitizeString($var). Jeg trodde at den ville fjerne alle slasher og tagger fra datainput, slik at feks <<32// ville bli lest som 32, men det ser ikke ut til å være tilfelle. Er det fordi metoden ikke fungerer, eller fungerer den anorledes enn det jeg trodde den skulle?

     

    <?php //convert.php
    $f = $c = "";
    
    if(isset($_POST['f'])) $f = sanitizeString($_POST['f']);
    if(isset($_POST['c'])) $c = sanitizeString($_POST['c']);
    
    if($f != '')
    {
       $c = intval((5 / 9) * ($f - 32));
       $out = "$f grader Fahrenheit tilsvarer $c grader Celsius";
    }
    elseif($c != '')
    {
       $f = intval((9 / 5) * $c + 32);
       $out = "$c grader Celsius tilsvarer $f grader Fahrenheit";
    }
    else $out = "";
    
    echo <<<_END
    <html>
    <head>
    <title> Temperatur konverterer </title>
    </head>
    <body>
    <pre>
    Tast in enten grader Fahrenheit eller grader Celsius og klikk på Konverter
    
    <b>$out</b>
    <form method="post" action="convert.php">
    Fahrenheit <input type="text" name="f" size="7" />
      Celsius <input type="text" name="c" size="7" />
              <input type="submit" value="Konverter" />
    </form>
    </pre>
    </body>
    </html>
    _END;
    
    function sanitizeString($var)
    {
       $var = stripslashes($var);
       $var = htmlentities($var);
       $var = strip_tags($var);
       return $var;
    }
    ?>
    

  12. O.K. da har jeg blitt litt klokere. Takk dere!

    Grunnen til at jeg spør er at jeg interesserer meg for Friark. Den er skrevet i Java og Groovy og jeg har ikke hørt om Groovy før så jeg lurte på hva de oppnår med å bruke Groovy og om det er overkommelig å forstå kode som er skrevet i Groovy når man kan Java.

  13. Norske programeringsbøker er det generelt få av. Vil anbefale deg å heller se på engelske. Head First Java har jeg hørt skal være god, men har ingen erfaring med java bøker selv, bortsett fra Rett På java, som jeg synes er en veldig dårlig bok.

    Ja! Hadde den på universitetet, ikke noe særlig. Jeg bruker nå Murach's Java SE 6, den syner jeg er veldig grundig og bra.

  14. Jeg har akkurat begynt å lære php. Bare for å prøve meg litt har jeg laget nedenstående programsnutt som skal la en bruker logge seg inn og ut av MySQL. Det ser ut til at den gjør det den skal, men jeg får en litt irriterende feilmelding: "Warning: mysql_close() expects parameter 1 to be resource, null given in /opt/lampp/htdocs/brukeradministrasjon/min_sql_admin.php on line 33".

     

    Kan noen forklare hvorfor, og om det finnes en enkel løsning?

    <?php
    $db_server = null;
    
    if (isset($_POST['bruker']) &&
       isset($_POST['passord']))
    {
       $bruker = get_post('bruker');
       $passord = get_post('passord');    
       $db_server = mysql_connect('localhost', $bruker, $passord);    
       if(!$db_server) 
           echo ("Unable to connect to MySQL: " . mysql_error());
       else 
           {
           echo $bruker . " er logget in!<br /><br />";
           $query = "SHOW databases";
           $result = mysql_query($query);
           if(!$result)
               echo ("FEIL!" . mysql_error());
           else
               {
                 $rows = mysql_num_rows($result);
                 for($j = 0; $j < $rows; ++$j)
                   {
                   $row = mysql_fetch_row($result);
                   echo $row[0] . "<br />";
                   }
               }
           }
    }
    
    if (isset($_POST['logut']))
    {
       mysql_close($db_server);   
       if(!$db_server)  echo "Logget ut!";
    }
    
    
    if(!$db_server)
    {
    echo <<<_END
    <form action="min_sql_admin.php" method="post">
    <pre>
    Bruker  <input type="text" name="bruker" />
    Passord <input type="text" name="passord" />
    <input type="submit" value="LOG IN" />
    </pre>
    </form> 
    _END;
    }
    else
    {
    echo <<<_END
       <form action="min_sql_admin.php" method="post">
       <pre>
       <input type="hidden" name="logut" value="yes" />
       <input type="submit" value="Log ut" />
       </pre>
    _END;
    }
    
    function get_post($var)
    {
       return $_POST[$var];   
    }
    
    ?>
    

×
×
  • Opprett ny...