-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmultiStepForm.php
executable file
·130 lines (106 loc) · 2.22 KB
/
multiStepForm.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
127
128
129
130
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
session_start();
define('MULTI_STEP_FORM', 'multiStepForm');
define('STEPS', 'steps');
function boolToString($bool)
{
return $bool ? "true" : "false";
}
function dump($obj)
{
echo "<pre>";
print_r($obj);
echo "</pre>";
}
function firstFormStep()
{
if(!isset($_SESSION[MULTI_STEP_FORM][STEPS])){
return "/";
}
return $_SESSION[MULTI_STEP_FORM][STEPS][0];
}
function nextStepIndex()
{
return currentStepIndex() + 1;
}
function nextStep()
{
$nextI = nextStepIndex();
if (isset($_SESSION[MULTI_STEP_FORM][STEPS]) && $nextI < count($_SESSION[MULTI_STEP_FORM][STEPS])) {
return $_SESSION[MULTI_STEP_FORM][STEPS][$nextI];
}else{
return "";
}
}
function previousStepIndex()
{
return currentStepIndex() - 1;
}
function previousStep()
{
$prevI = previousStepIndex();
if(isset($_SESSION[MULTI_STEP_FORM][STEPS]) && $prevI >= 0){
return $_SESSION[MULTI_STEP_FORM][STEPS][$prevI];
}else{
return "";
}
}
function setCurrentStepIndex($StepIndex)
{
$_SESSION[MULTI_STEP_FORM]['currentStep'] = $StepIndex;
}
function currentStepIndex()
{
return $_SESSION[MULTI_STEP_FORM]['currentStep'];
}
function setFormSteps($steps)
{
echo MULTI_STEP_FORM;
$_SESSION[MULTI_STEP_FORM] = array();
$_SESSION[MULTI_STEP_FORM][STEPS] = $steps;
}
function checkCorrectStep()
{
// se le variabili di sessione non sono inizializzate la pagina non è corretta
if(!isset($_SESSION[MULTI_STEP_FORM][STEPS])){
return false;
}
// se sono la prima pagina del form nessun problema
$ex = explode("/", $_SERVER['PHP_SELF']);
$me = $ex[count($ex) - 1];
if ($me == firstFormStep()) {
return true;
}
$referer = "";
if(isset($_SERVER['HTTP_REFERER'])){
$ex = explode("/", $_SERVER['HTTP_REFERER']);
$ex = explode("?", $ex[count($ex) - 1]);
$referer = $ex[0];
}
if ($referer == previousStep()) {
return true;
}
return false;
}
function redirect($to)
{
header("location: $to");
exit();
}
function formOpen($destination="", $method = "POST", $htmlAttrs = ""){
if ($destination == "") {
$destination = nextStep();
}
?>
<form action="<?php echo $destination; ?>" method="<?php echo $method; ?>" <?php echo $htmlAttrs; ?> >
<?php
}
function formClose()
{
?>
</form>
<?php
}
?>