van _GET naar een global
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
$_GET is al een global, dus die werkt overal.
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
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...
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?
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 -
Laat anders een wat code zien, het blijft zo koffiedik kijken...
https://github.com/blueimp/jQuery-File-Upload
bedoeling is dat ik info moet krijgen in de server/php/UploadHandler.php
Hoe zie je relevante code eruit die het uploadscript aanroept? En welk script doet dat uploaden?
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
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.
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 -
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
Wat begrijp je precies niet aan onze eerdere opmerkingen? Plaats eens wat van je code.
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 -
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 -
Code (php)
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
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);
$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);
Ik raad wel aan om classes te scheiden van je logica, en dus in een apart bestand te plaatsen.
ik zou dus echt niet weten hoe dat moet
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 -
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