Vidre sende $_GET["email"] info

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
gertk
Begynder
Indlæg:3
Tilmeldt:2. maj 2013, 13:02
Vidre sende $_GET["email"] info

Indlæg af gertk » 29. okt 2016, 16:48

Hej,

Jeg har et script til at upload filer på min hjemmeside. Jeg har dog lidt svært ved at få tingene til at "tale" sammen, så håber på nogle kan komme med et hit til at få det til at virke :)

Scriptet er på index.php filen som når den loades skaber en folder på serveren. Upload scriptet skal så kunne uploade til den specifikke folder.

Folderen skal genereres/opkaldes efter e-mail adressen fra URLen fx:
index.php?email=myemail@myemail.dk...

Dette gør jeg ved denne kode:

Kode: Vælg alt

<?php

// change the name below for the folder you want
$dir = " public_html/server/".$_GET["email"];

$file_to_write = 'test.txt';
$content_to_write = "The content";

if( is_dir($dir) === false )
{
    mkdir($dir);
}

$file = fopen($dir . '/' . $file_to_write,"w");

// a different way to write content into
// fwrite($file,"Hello World.");

fwrite($file, $content_to_write);

// closes the file
fclose($file);

// this will show the created file from the created folder on screen
include $dir . '/' . $file_to_write;

?>
Koden virker og mappen genereres med navnet: myemail@myemail.dk

Nu kommer mit problem . Upload scriptet skal vide at det er denne mappe det skal uploade til. Jeg har prøvet at bruge denne kode til at sende informationen til upload scriptet:

Kode: Vælg alt

<?
$_SESSION['tmem']="public_html/server/".$_GET["email"]."/";
?>
Ovenstående står på index.php filen, men koden for upload scriptet ligger på en anden fil UploadHandler.php. Men inden koden kommer der til kommer den igennem en anden fil index.php Begge disse to filer ligger i mappen public_html/server/ og index.php med ovenstående koder ligger i /public_html/

Index.php filen i public_html/server/ som min ovenstående kode gerne skulle gå igennem ser således ud:

Kode: Vælg alt

<?php
session_start();
error_reporting(E_ALL | E_STRICT);
require('UploadHandler.php');
$upload_handler = new UploadHandler();

Og filen UploadHandler.php som fortæller scriptet hvor filer skal uploades ser så ledes ud:

Kode: Vælg alt

'script_url' => $this->get_full_url().'/'.$this->basename($this->get_server_var('SCRIPT_NAME')),
 'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).$_SESSION['tmem'],  // PATCH TO THE FOLDER FOR THE UPLOAD
 'upload_url' => $this->get_full_url().$_SESSION['tmem'],  // PATCH TO THE FOLDER FOR THE UPLOAD
 'input_stream' => 'php://input',
 'user_dirs' => false,
 'mkdir_mode' => 0755,
 'param_name' => 'files',

Men delen med .$_SESSION['tmem'] virker ikke. Hvad gør jeg forkert?

Jeg har også prøvet med koden:

Kode: Vælg alt

'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).$_GET['email'],  // PATCH TO THE FOLDER FOR THE UPLOAD
'upload_url' => $this->get_full_url().$_GET['email'],  // PATCH TO THE FOLDER FOR THE UPLOAD
Nogle kloge hoveder der kan se hvad jeg gør forkert eller kan hjælpe? :)

jepperask
Geni
Geni
Indlæg:378
Tilmeldt:4. nov 2012, 17:57

Re: Vidre sende $_GET["email"] info

Indlæg af jepperask » 6. nov 2016, 13:20

Hvilken fejl får du?

Umiddelbart burde du have adgang til $_SESSION['tmem'] i din UploadHandler.php (session_start() der hvor du opretter en UploadHandler).
Hvordan ser resten af UploadHandler-filen ud?

Hvad er SCRIPT_NAME? Er det noget kode du har fundet, hvor du eventuelt mangler at erstatte disse værdier med et filnavn?

Besvar