van _GET naar een global

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Sylvester vader

sylvester vader

12/08/2019 15:43:02
Quote Anchor link
hi uhm een stomme vraag hoor en ik weet dit is geen normale scripting manier

ik heb een pagina met een upload script
in dit script zitten includes die verwijzen naar een aantal classes en functies

nu wil ik een _GET gebruiken (die netjes in de adresbalk staat)
in die classes / functies gaan gebruiken....

alles dat ik doe werkt niet met betrekking tot _GET
een _POST er heen sturen werkt wel maar dan moet iemand dus eerst steeds op submit drukken om de informatie door te sturen terwijl dit gewoon in de adressbalk staat

nou weet ik dat er iets is zoals globals enz
echter heb ik daar geen verstand van :(

iemand een ideetje?

bedoeling is dus dat ik bv in de functie gewoon $id kan oproepen en dat deze dan ook werkt
 
PHP hulp

PHP hulp

12/12/2019 08:51:03
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 15:45:36
Quote Anchor link
$_GET is al een global, dus die werkt overal.
 
Sylvester vader

sylvester vader

12/08/2019 15:53:59
Quote Anchor link
lol dus niet :@

kijk uhm hoe moet ik dit uitleggen ......
link in de adressbalk is
admin.php?page=uploadnew2&tab=dames&id=79#upload

in de pagina waar het omdraait heb ik
alles al geprobeerd
$_GET['id']
$_REQUEST['id']

een post sturen werkt echter wel maar ik wil niet steeds op submit willen drukken
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 15:58:51
Quote Anchor link
Dan is de URL niet (meer) juist. Want volgens de PHP-manual moet dit altijd werken: Of je nu in een class of functie zit...
 
Sylvester vader

sylvester vader

12/08/2019 16:05:25
Quote Anchor link
dat zou kunnen maar hoe krijg ik dus die info daarheen?

ik heb het script doorgekeken en het blijkt dat mijn upload script een .js bevat.
deze linkt in de .js weer door naar een .php file in hierin wordt een andere php geinclude waar ik dus de info in wilt hebben
moet ik sessions gebruiken ofzo of is er een andere manier?
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 16:17:31
Quote Anchor link
Ik neem aan dat via JavaScript een aanroep (via AJAX) wordt gedaan naar een PHP-script, die de upload regelt.
In dat geval moet je ook de waarde van de $_GET meegeven aan dat script. Het is namelijk een onafhankelijke asynchrone request, en dan bestaat die $_GET namelijk niet.
Gewijzigd op 12/08/2019 16:20:08 door - Ariën -
 
Verwijderd 31683

Verwijderd 31683

12/08/2019 16:22:29
Quote Anchor link
Laat anders een wat code zien, het blijft zo koffiedik kijken...
 
Sylvester vader

sylvester vader

12/08/2019 16:27:54
Quote Anchor link
nou eigelijk uhm is het dit script die ik iets heb aangepast
https://github.com/blueimp/jQuery-File-Upload

bedoeling is dat ik info moet krijgen in de server/php/UploadHandler.php
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 16:33:40
Quote Anchor link
Hoe zie je relevante code eruit die het uploadscript aanroept? En welk script doet dat uploaden?
 
Sylvester vader

sylvester vader

12/08/2019 16:37:33
Quote Anchor link
uhm alle code is relevant :P
maar de info die ik nodig hebt moet in
'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/',
'upload_url' => $this->get_full_url().'/files/',

regel 51, 52

die files moet bv een id worden
 
Ozzie PHP

Ozzie PHP

12/08/2019 16:38:15
Quote Anchor link
@Sylvester vader

We willen je best helpen, maar we hebben geen glazen bol. Verwijzen naar scripts waarin jij iets hebt aangepast heeft geen zin. We willen graag zien wat je gedaan hebt. Alleen dan kunnen we er iets zinvols over zeggen. Dus plaats even wat (relevante) code. Dat praat een stuk makkelijker.
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 16:38:17
Quote Anchor link
Alle code kan nooit relevant zijn ;-)
De directory lijkt me juist niet relevant, want het gaat om het script die uploadt. Kijk anders eens naar je Network-tab in je browser terwijl je een upload uitvoert. Dan moet je kunnen zien welk script er aangeroepen wordt.
Gewijzigd op 12/08/2019 16:38:49 door - Ariën -
 
Sylvester vader

sylvester vader

12/08/2019 16:44:28
Quote Anchor link
ja ok dat zijn precies de files die ik eerder heb aangeduid
jquery die gaat naar server/php/index.php (hierin is ook goed dan kan ik wel doorsturen zelf naar de volgende pagina)
en deze doet een require

require('UploadHandler.php');
en hierin wil ik de info hebben





Toevoeging op 12/08/2019 16:45:37:

ik moet de directory aanpassen naar de map van de user die is geopend en dus moet ik de info hebben bij
UploadHandler.php
 
Ozzie PHP

Ozzie PHP

12/08/2019 16:45:44
Quote Anchor link
Wat begrijp je precies niet aan onze eerdere opmerkingen? Plaats eens wat van je code.
 
Sylvester vader

sylvester vader

12/08/2019 16:46:58
Quote Anchor link
in het standaard script kan ook niet wat ik wil standaard daar staat dus alle code in
https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php

Toevoeging op 12/08/2019 16:49:05:

of de mijne

** snip **
Edit:
Relevante code is niet meer dan ongeveer 20 regels. Niemand is gebaat om zich door een script van +/- 1500 regels te worstelen.
Gewijzigd op 12/08/2019 16:51:54 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 16:50:08
Quote Anchor link
Zoek eens uit waar die class UploadHandler() wordt aangeroepen?
Kan je daar geen wrapper om heen bouwen? Dan hoef je niet een bestaande class aan te passen, die bij een update weer jouw modificaties verliest.

Op eens zelfde manier werkt ook de uploadclass die ik heb geschreven voor mijn site.
Het JavaScript-based (plUpload) roept een PHP-script aan met daarbij de nodige velden die de site in de URL heeft staan. De aanroep van dat script komt uit in een wrapper die de class van het uploadscript aanroept. En daarbij worden er nog de nodige extra dingen gedaan, zoals het opslaan van de bestandsnamen, ID's, metadata in de uploads-tabel, en de afbeelding in de koppeltabel.

Wrapper is all you need.
Gewijzigd op 12/08/2019 16:55:34 door - Ariën -
 
Sylvester vader

sylvester vader

12/08/2019 16:54:34
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php





$options
= array(
    'delete_type' => 'POST',
    'db_host' => 'localhost',
    'db_user' => '????',
    'db_pass' => '????',
    'db_name' => '????',
    'db_table' => 'files'
);


require('UploadHandler.php');





class CustomUploadHandler extends UploadHandler {

    protected function initialize() {
        $this->db = new mysqli(
            $this->options['db_host'],
            $this->options['db_user'],
            $this->options['db_pass'],
            $this->options['db_name']
        );

        parent::initialize();
        $this->db->close();
    }


    protected function handle_form_data($file, $index) {
        $file->title = @$_REQUEST['title'][$index];
        $file->description = @$_REQUEST['description'][$index];
        $file->userid = @$_REQUEST['userid'][$index];
    }


    protected function handle_file_upload($uploaded_file, $name, $size, $type, $error,
    //global $user_id, $account_id;
            $index = null, $content_range = null) {
        $file = parent::handle_file_upload(
            $uploaded_file, $name, $size, $type, $error, $index, $content_range
        );
        
        
        
        
        
        
        
        if (empty($file->error)) {
            $sql = 'INSERT INTO `'.$this->options['db_table']
                .
'` (`userid`, `name`, `size`, `type`, `title`, `description`)'
                .' VALUES (?, ?, ?, ?, ?, ?)';
            $query = $this->db->prepare($sql);
            $query->bind_param(
                'isisss',
                $file->userid,
                $file->name,
                $file->size,
                $file->type,
                $file->title,
                $file->description
            );
            $query->execute();
            $file->id = $this->db->insert_id;
        }

        return $file;
    }


    protected function set_additional_file_properties($file) {
        parent::set_additional_file_properties($file);
        if ($_SERVER['REQUEST_METHOD'] === 'GET') {
            
            
            
            
            $sql = 'SELECT `id`, `userid`, `type`, `title`, `description` FROM `'
                .$this->options['db_table'].'` WHERE `name`=?';
            $query = $this->db->prepare($sql);
             $query->bind_param('s', $file->name);
            $query->execute();
            $query->bind_result(
                $id,
                $userid,
                $type,
                $title,
                $description
            );
            while ($query->fetch()) {
                $file->id = $id;
                $file->userid = $userid;
                $file->type = $type;
                $file->title = $title;
                $file->description = $description;
            }
        }
    }


    public function delete($print_response = true) {
        $response = parent::delete(false);
        foreach ($response as $name => $deleted) {
            if ($deleted) {
                $sql = 'DELETE FROM `'
                    .$this->options['db_table'].'` WHERE `name`=?';
                $query = $this->db->prepare($sql);
                 $query->bind_param('s', $name);
                $query->execute();
            }
        }

        return $this->generate_response($response, $print_response);
    }

    
    protected function get_user_id() {
        @
session_start();
        return session_id();
    }

}



$upload_handler = new CustomUploadHandler($options);
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 16:56:51
Quote Anchor link
Jep, je moet een wrapper maken.
Ik raad wel aan om classes te scheiden van je logica, en dus in een apart bestand te plaatsen.
 
Sylvester vader

sylvester vader

12/08/2019 16:59:09
Quote Anchor link
lol ik ben een noob met classes en functions enzo
ik zou dus echt niet weten hoe dat moet
 
- Ariën -
Beheerder

- Ariën -

12/08/2019 17:08:17
Quote Anchor link
Ah, je hebt dus een extended class, zie ik.
Gewoon een script aanmaken waarin je die CustomUploadHandler(...) aanroept.

Sim-pel ;-)

Nog beter dan een wrapper die om je class heen zit.
Haal eerst die class even los en zet die in een apart bestand.
Gewijzigd op 12/08/2019 17:09:04 door - Ariën -
 
Sylvester vader

sylvester vader

12/08/2019 17:13:35
Quote Anchor link
uhmmmmm
dat doet hij dus gelijk al in die file
onderaan
of haal ik nu dingen door elkaar ?

ps op die pagina werkt een gewone _get ook niet

maar uhm ik kan wel een file aanmaken maar dan moet ik nogsteeds een manier vinden om die info van die extra file in die
UploadHandler.php te krijgen
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.