<form action> na controles

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom aan t Goor

Tom aan t Goor

21/10/2012 15:31:33
Quote Anchor link
Ik heb een simpel formuliertje met 4 input fields.

Nu wil ik dat als er op de submit button wordt gedrukt er eerst een paar controllers worden uitgevoerd en daarna naar een andere pagina wordt gelinkt.
Die controles werken goed, nu kan ik wel doorlinken via meta tags. Maar nu wil ik ook variabelen mee geven. Dit kan nu dan niet via $_POST['..'] variabelen, wel via $_GET['..'] variabelen.

Maar nu is dan het probleem dat je de inhoud van de variabelen kan veranderen door de url balk aan te passen.


Is het nu mogelijk om eerst controles uit te voeren en daarna via <form method="post" action="pagina.php?stap=2"> verder te gaan?
Of is een andere oplossing beter?

(Ik hoop dat ik het duidelijk heb uitgelegd)
 
PHP hulp

PHP hulp

29/11/2022 22:37:31
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/10/2012 15:35:48
Quote Anchor link
Ja hoor dat kan. Je hebt dan wat javascript nodig.
 
Tom aan t Goor

Tom aan t Goor

21/10/2012 15:36:31
Quote Anchor link
Frank Nietbelangrijk op 21/10/2012 15:35:48:
Ja hoor dat kan. Je hebt dan wat javascript nodig.


Kan je me dan ook uitleggen hoe?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/10/2012 15:38:35
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
<?php
<!DOCTYPE html>
<
html>
<
head>
<
script>
function
validateForm()
{
var
x=document.forms["myForm"]["fname"].value;
if (x==null || x=="")
  {

  alert("First name must be filled out");
  return false;
  }
}

</script>

</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
</body>

</html>
?>


zie http://www.w3schools.com/js/js_form_validation.asp
 
Tom aan t Goor

Tom aan t Goor

21/10/2012 15:43:44
Quote Anchor link
Frank Nietbelangrijk op 21/10/2012 15:38:35:
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
<?php
<!DOCTYPE html>
<
html>
<
head>
<
script>
function
validateForm()
{
var
x=document.forms["myForm"]["fname"].value;
if (x==null || x=="")
  {

  alert("First name must be filled out");
  return false;
  }
}

</script>

</head>

<body>
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
</body>

</html>
?>


zie http://www.w3schools.com/js/js_form_validation.asp


Bedankt voor je reatie, nu wordt er gecontroleerd of alles klopt via javasscript.
Maar is het nu ook nog mogelijk om het in php te laten controleren en alleen het doorlinken via javascript te doen?

Toevoeging:
Ik heb dit geprobeerd, maar dan wordt hij altijd doorgaschakeld, ook als het input field leeg is.

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
<!DOCTYPE html>
<html>
<head>
<?php
function validateForm()
{

if ($_POST['fname'] == ''){
  echo 'ERROR';
  return false;
  }
}

?>

</head>

<body>
<?php
if($_GET['resultaat'] != '1'){

echo '<form name="myForm" action="?resultaat=1" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>'
;

}
else{
    echo $_POST['fname'];
}

?>

</body>

</html>
Gewijzigd op 21/10/2012 15:51:50 door Tom aan t Goor
 
- SanThe -

- SanThe -

21/10/2012 15:58:08
Quote Anchor link
OnSubmit zoekt nu een Javascript function en die is er niet.
Gewijzigd op 21/10/2012 15:58:50 door - SanThe -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/10/2012 15:59:29
Quote Anchor link
Tom,

Je kunt javascript gebruiken voor simpele controlles zoals de vraag of er wel een naam is ingevuld.
Echter dit is heeeeel makkelijk te omzeilen. Je MOET dus alles in PHP filteren.
Een bekende uitspraak is dat alle input van buiten je script als vervuild moet worden beschouwd.
Een hele goed controlle/validatie/filtering is dus onontbeerlijk

Frank
 
Tom aan t Goor

Tom aan t Goor

21/10/2012 16:00:46
Quote Anchor link
- SanThe - op 21/10/2012 15:58:08:
OnSubmit zoekt nu een Javascript function en die is er niet.


Kan ik dan ook iets ander gebruiken dan OnSubmit zodat hij wel naar een php functie zoekt?
 
Wouter J

Wouter J

21/10/2012 16:05:45
Quote Anchor link
Tom, PHP en JavaScript zijn 2 verschillende dingen. PHP wordt op de server uitgevoerd. Een browser en zelfs je laptop merken 0 komma 0 van PHP. Alleen de server weet af van PHP.
Van JS merkt juist de server niks en weet alleen je browser wat hij er mee moet.

Je kan dus niet zomaar van JS naar PHP gaan. De enige mogelijkheid die er is is werken met AJAX in JS, maar dat is zonder een framework een bijna onmogelijke opgave.
 
Tom aan t Goor

Tom aan t Goor

21/10/2012 16:07:54
Quote Anchor link
Wouter J op 21/10/2012 16:05:45:
Tom, PHP en JavaScript zijn 2 verschillende dingen. PHP wordt op de server uitgevoerd. Een browser en zelfs je laptop merken 0 komma 0 van PHP. Alleen de server weet af van PHP.
Van JS merkt juist de server niks en weet alleen je browser wat hij er mee moet.

Je kan dus niet zomaar van JS naar PHP gaan. De enige mogelijkheid die er is is werken met AJAX in JS, maar dat is zonder een framework een bijna onmogelijke opgave.


Bedankt voor je reactie,

Dit gaat dus nooit lukken. Is er dan nog een andere manier om mijn probleem op te lossen?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/10/2012 16:08:35
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
<script>
function validateForm(f) {
    for (var i in f.elements) {
        el = f.elements[i];
        if (el.rel == "required" && (el.value == null || el.value.trim() == '')) {
            alert(el.title + ' moet zijn ingevuld');
            return false;
        }
    }
    return true;
}
</script>
<form name="aForm" action="procesform.php" onsubmit="return validateForm(this.form);" method="post">
<input type="text" title="Voornaam" name="firstname" rel="required">
<input type="submit" value="Verstuur">
</form>
 
Andy V

Andy V

21/10/2012 16:13:28
Quote Anchor link
javascript is inderdaad heel eenvoudig te omzeilen, je kan zelfs door je site te inspecteren zo iets al snel uitschakelen maar het is wel mooi dat het allemaal live gecontroleerd wordt maar dan kan je toch best altijd een extra controle met php doen voor de veiligheid want clientside == hackbaar, server side ook tenzij je voor een waterdichte beveiliging van je script zorgt.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/10/2012 16:27:26
Quote Anchor link
Uiteraard! moet je in PHP nogmaals controleren.
Overigens kan je er ook één form maken, en met JS die stappen doorlopen
 
Tom aan t Goor

Tom aan t Goor

21/10/2012 16:29:54
Quote Anchor link
Ik hoor nu allemaal dingen.

Maar het enige dat ik dan kan verzinnen is wel via een meta tag doorsturen met $_GET['..'] waardes?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/10/2012 16:50:28
Quote Anchor link
Zet de stap in een hidden input, dit is nog steeds te veranderen, maar je maakt het al wel iets moeilijker.
Daarnasst hou je in een sessie var bij welke stap de goede is. Bv(in pagina.php):
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
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if (!isset($_SESSION['step'])) {
        $_SESSION['step'] = 1;
    }

    else {
        $_SESSION['step'] += 1;
    }

    if((int) $_POST['step'] != $_SESSION['step']) {
            header("Location : http://www.hackersgetkilledhere.com");
            exit;
    }

    // hier de rest van je dingen afhandelen
}
?>
Gewijzigd op 21/10/2012 16:52:23 door Ger van Steenderen
 
ScrapZz nl

ScrapZz nl

21/10/2012 17:49:55
Quote Anchor link
kan je dit niet het mooist doen met ajax (post)
dus je post de data via ajax naar je server en als hij een goede result terug stuurd ga je veder?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$.post(`bestand.php`, {postdata}, function(back){
if(back = 1){
  alert(`ok`);
}elseif(back = 2){
  alert(`fout`);
}
});

dus als hij 1 terug stuurd is alles goed gegaan en als je 2 terug krijg is er iets fout gegaan!
zo kan je natuurlijk ook bij 1 zeggen geen naam 2 geen email 3 alles ok

(zit op tablet het is dus niet getest en uitgebruid!)
Gewijzigd op 21/10/2012 17:51:15 door ScrapZz nl
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

21/10/2012 18:02:03
Quote Anchor link
Natuurlijk is dat het mooiste, en dan bij voorkeur nog met JSON, maar ik denk dat bij TS het nu een beetje begint te tollen.
Hoe dan ook, JQuery is ook JavaScript en dus te manupileren, dus moet je nog steeds die controles in PHP uitvoeren.
 
Obelix Idefix

Obelix Idefix

21/10/2012 18:38:32
Quote Anchor link
Zet na alle controles de gegevens die je op de volgende pagina wilt gebruiken in een sessie en met een header kun je dan doorsturen.
 
Andy V

Andy V

21/10/2012 21:59:35
Quote Anchor link
of met een global xP
Gewijzigd op 21/10/2012 22:01:44 door Andy V
 



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.