Avatar billede timealert Nybegynder
16. marts 2003 - 20:59 Der er 7 kommentarer og
1 løsning

Skrive i txt-fil uden "<? echo $_SERVER['PHP_SELF'];?>"

Jeg har et script som skriver i en txt-fil.
Jeg gør sådan:
<form method="POST" action="<? echo $_SERVER['PHP_SELF'];?>">

Men det kan jeg ikke længere bruge, da scriptet ligger på en side som er under en log-ind side. Så hvis "action" står til samme side viser den "ingen adgang" som jeg har bedt den fordi den ikke kan finde "bruger" og "pass".

Hvordan får jeg den til at gemme det i txt-filen alligevel??

Bagefter skal den gå til siden info.php

hvis jeg bare skriver:
<form method="POST" action="info.php"> skriver den ingenting??
Avatar billede gladmhensk Nybegynder
16. marts 2003 - 21:06 #1
det er lidt forvirrende det du skrive :-D
Kan ikke se hvoen
<form method="POST" action="<? echo $_SERVER['PHP_SELF'];?>">
skal kunne skrive i en txt fil, som du siger `??
Avatar billede schaefner Juniormester
16. marts 2003 - 21:08 #2
Læg scriptet i en andet fil og lav din action om til:
<form method="post" action="filderindsaetter.php">
Avatar billede sqren Nybegynder
16. marts 2003 - 21:08 #3
tagwall.php//

<?php
include_once("tagwall.class.php");
$tagwall = new Tagwall;

$tagwall->setMethod(0);
$tagwall->setFile("tagwall.txt");

if ($action == "write") {
    print '
    <form action="' . basename($_SERVER['PHP_SELF']) . '" method="post">
        <input type="hidden" name="action" value="dowrite">
        <b>Navn:</b> <input type="text" name="name"><br>
        <b>Dato:</b> <input type="text" name="email"><br>
        <br>
<textarea name="text" rows="10" cols="76"></textarea><br>
        <input type="submit" value="Gem">
    </form>
    ';
} else {
    if ($action == "dowrite") {
        $tagwall->insertTagwallData($name, $email, $text);
    }
    print '<a href="' . basename($_SERVER['PHP_SELF']) . '?action=write">Skriv i tagwallen</a><br><br>';
    $data = $tagwall->fetchTagwallData();
    foreach ($data as $key => $value) {
        print "<b>Navn:</b> " . $data[$key]["name"] . "<br>
              <b>Dato:</b> " . $data[$key]["email"] . "<br>
              <b>Besked:</b>  " . $data[$key]["text"] . "<hr>";
    }
}
?>


tagwall.class.php//

<?php
/**

    Taggwall class for use with text file or mySQL database.
   
    This tagwall class was developed by Logan Raarup 15. may 2002.
   
    Please see example.php for a demonstration of this tagwall with
    use of text file for saving tagwall data.
   
   
    Feel free to contact me at: logan@logan.dk
    Or visit my website at:    http://www.logan.dk
   

*/
class Tagwall {
    var $ERRORS;
    var $txtfile;
    var $dbinfo = array();
    var $method = 0;
   
    /**
    * This function sets the file where tagwall data will be saved
    * REMEMBER TO GIVE THIS FILE WRITE PERMISSION (chmod 777)
    *
    * @param $file    name of text file to save tagwall info
    */
    function setFile($file) {
        $this->txtfile = $file;
    }
   
    /**
    * This function sets the database info for the tagwall data
    *
    * @param $server  hostname of mySQL server
    * @param $pass    password for mySQL database
    * @param $user    mySQL username
    * @param $db      name of the database for the tagwall
    */
    function setDBInfo($server, $user, $pass, $db) {
        $this->dbinfo = array("server"  => $server,
                              "user"    => $user,
                              "pass"    => $pass,
                              "db"      => $db);
    }
   
    /**
    * This function selects which method to access tagwall data
    *
    * @param $method  set this parameter to 0 = use text file, and 1 = use mySQL database
    *
    * @return  boolean  true or false
    */
    function setMethod($method = 0) {
        if ($method == 0 || $method == 1) {
            $this->method = $method;
            return true;
        } else {
            $this->ERROR = "Invalid method.";
            return false;
        }
    }
   
    /**
    * This function fetches tagwall data with selected method
    *
    * @return  array  tagwall entries
    */
    function fetchTagwallData() {
        if ($this->method == 0) {
            $fp = fopen($this->txtfile, "r");
            if ($fp) {
                $contents = fread($fp, filesize($this->txtfile));
                $contents = explode("|", $contents);
                foreach ($contents as $key => $value) {
                    $contents[$key] = unserialize(&$contents[$key]);
                    if (!empty($contents[$key]["name"])) {
                        $data[] = $contents[$key];
                    }
                }
                $data = array_reverse($data);
                fclose($fp);
                return $data;
            } else {
                $this->ERRORS = "Could not open file.";
                return false;
            }
        } else {
            $link = mysql_connect($this->dbinfo["server"], $this->dbinfo["user"], $this->dbinfo["pass"]) or die("Could not connect to mySQL");
            mysql_select_db($this->dbinfo["db"], $link);
            $result = mysql_query("SELECT * FROM tagwall ORDER BY created_on DESC", $link);
            while ($row = mysql_fetch_row($result)) {
                $data[] = array("name"  => $row["name"],
                                    "email" => $row["email"],
                                    "text"  => $row["text"],
                                    "date"  => $row["created_on"]);
            }
            mysql_close($link);
            return $data;
        }
    }
   
    /**
    * This function inserts an entry to the tagwall
    *
    * @param $name    name of user
    * @param $email  users email address
    * @param $text    text message
    *
    * @return  boolean  true or false
    */
    function insertTagwallData($name, $email, $text) {
        $data = array("name"    => $name,
                      "email"  => $email,
                      "text"    => $text,
                      "date"    => time());
        $data = serialize($data);
        if ($this->method == 0) {
            $fp = fopen($this->txtfile, "a");
            if ($fp) {
                $fp = fwrite($fp, $data . "|");
                return true;
            } else {
                $this->ERRORS = "Could not open file.";
                return false;
            }
        } else {
            $link = mysql_connect($this->dbinfo["server"], $this->dbinfo["user"], $this->dbinfo["pass"]) or die("Could not connect to mySQL");
            mysql_select_db($this->dbinfo["db"], $link);
            mysql_query("INSERT INTO tagwall SET name = '$name', email = '$email', text = '$text', created_on = " . time(), $link);
            mysql_close($link);
        }
    }
}
?>


og husk at oprette et tomt txt dokument.
Avatar billede timealert Nybegynder
16. marts 2003 - 21:11 #4
jeg har lavet følgende:

<html>
<head>
<title>TEST</title>
</head>
<body>
<form method="POST" action="<? echo $_SERVER["PHP_SELF"];?>">
<table border="0" width="275" cellspacing="0" cellpadding="0">
  <tr>
    <td width="135" height="30">Rute:</td>
    <td width="140" height="30"><input type="text" name="rute" size="25" maxlength="7" tabindex="1" class="box"></td>
  </tr>
  <tr>
    <td width="135" height="30">Fra:</td>
    <td width="140" height="30"><input type="text" name="fra" size="25" maxlength="15" tabindex="2" class="box"></td>
  </tr>
  <tr>
    <td width="135" height="30">Planlagt ankomst:</td>
    <td width="140" height="30"><input type="text" name="P_Ank" size="25" maxlength="5" tabindex="3" class="box"></td>
  </tr>
  <tr>
    <td width="135" height="30">Forventet ankomst:</td>
    <td width="140" height="30"><input type="text" name="F_Ank" size="25" maxlength="5" tabindex="4" class="box"></td>
  </tr>
  <tr>
    <td width="275" colspan="2" height="30">
      <div align="right"><input type="submit" value="        Skriv        " class="box" tabindex="5">
    </td>
  </tr>
</table>
</form>
<?php
if(isset($_POST['rute'],$_POST['fra'],$_POST['P_Ank'],$_POST['F_Ank'])) {
$data = $_POST["rute"] . "|" . $_POST["fra"] . "|" . $_POST["P_Ank"] . "|" . $_POST["F_Ank"];
$fil = fopen("tekst.txt", "a+");
    fwrite($fil, $data."\r\n");
    fclose($fil);
}
?>
</body>
</html>

og nu har jeg lagt det ind under en password-side. Jeg skal på en eller anden måde få den til at skrive input i filen og bagefter få den til at gå til siden "info.php".

Men hvis jeg skifter
<form method="POST" action="<? echo $_SERVER['PHP_SELF'];?>">
ud til
<form method="POST" action="info.php"> skriver den ingenting
Avatar billede timealert Nybegynder
16. marts 2003 - 21:16 #5
se det her i aktion her:
http://www.centric.dk/blaabog/brugere/forside.htm
bruger="skriv"
pass="fly"
Avatar billede timealert Nybegynder
16. marts 2003 - 21:27 #6
schaefner -> jeg kan ikke flytte scriptet ind i en anden fil uden så at skulle logge ind, trykke på et link, indtaste og trykke "skriv", for derefter at skrive URl'en til index igen :(

Jeg ville heller:
logge ind, indtaste og trykke "skriv" og så viste den automatisk forsiden...
Avatar billede timealert Nybegynder
16. marts 2003 - 21:52 #7
er der ikke nogen der kan hjælpe?
Avatar billede timealert Nybegynder
17. marts 2003 - 11:02 #8
-Så må jeg jo prøve at finde hjælp et andet sted :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester