Kom ihåg mig?
Home Menu

Menu


Form validation problem

Ämnesverktyg Visningsalternativ
Oläst 2011-10-28, 10:02 #1
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
Standard Form validation problem

Har ett problem som jag verkligen måste lösa snabbt, och behöver er hjälp eftersom jag inte är så haj på detta.
Jag har hittat ett script för form validation som ser ut som följande lite förenklat:

<?php include("validering.php"); ?>
<form name="cart" id="cart" method='post' action=''>
Namn:
<input name="namn" type="text" id="namn" size="30" value="<?php echo $valid_namn; ?>" />
<?php echo $error_namn; ?>
E-post:
<input name="email" type="text" id="email" size="30" value="<?php echo $valid_email; ?>">
<?php echo $error_email; ?>
Telefon:
<input name="telefon" type="text" id="telefon" size="30" value="<?php echo $valid_telefon; ?>">
<?php echo $error_telefon; ?>
<input type="image" name="submit" id="order" src="jcart/images/submit.gif" />

När jag har det på detta vis fungerar form validation som den ska, men jag skickas inte vidare till min gateway, som jag vanligtvis gör när jag har action='jcart/gateway.php' (låter ju ganska logiskt!). Men när jag istället har min action='jcart/gateway.php' inlagd så fungerar inte form validation eftersom den direkt skickar vidare till gateway utan att kontrollera fälten.
Jag behöver båda! Snälla hjälp mig, jag blir snart tokig på detta så som jag försökt. :P
Jag har prövat att lägga in kontrollen i gatewayen, men det blir bara fel och fungerar inte. Jag hamnar på en blank sida med samma adress som gatewayen, men skickas inte vidare till tacksidan eller får mejlet ivägskickat. Så jag undviker helst att lägga in någon ytterligare kod i gatewayen! Allra bäst vore om det gick att lösa direkt på formulärsidan.

Uppskattar verkligen er hjälp här, och tänk på att jag inte är duktig på detta, så förklara tydligt utan avancerade termer tack!

Här kommer hela koden till validering.php:

<?php
if($_POST)
{
$namn = $_POST['namn'];
$email = $_POST['email'];
$telefon = $_POST['telefon'];

// Namn
if (eregi('^[A-Za-z0-9 ]{3,20}$',$namn))
{
$valid_namn=$namn;
}
else
{
$error_namn='Fyll i ditt namn korrekt.';
}

// Email
if (eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$', $email))
{
$valid_email=$email;
}
else
{
$error_email='E-postadressen m&aring;ste vara korrekt ifylld.';
}

// Telefon min 6 char max 20 char
if (eregi('^[A-Za-z0-9!@#$%^&*()_]{6,20}$',$telefon))
{
$valid_telefon=$telefon;
}
else
{
$error_telefon='Ange ett giltigt telefonnummer.';
}


if((strlen($valid_namn)>0)&&(strlen($valid_email)> 0)
&&(strlen($valid_telefon)>0) && $valid_leverans>0 )
{
header("Location: jcart/gateway.php");
}
else{ }

}
?>

Senast redigerad av JeZZifelt den 2011-10-28 klockan 10:04 Anledning: Glömde skicka med koden till validering.php.
JeZZifelt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-28, 10:18 #2
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
danjel danjel är inte uppkopplad
Medlem
 
Reg.datum: Nov 2003
Inlägg: 214
$valid_leverans verkar inte sättas någonstans...?
danjel är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-28, 11:31 #3
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
Citat:
Ursprungligen postat av danjel Visa inlägg
$valid_leverans verkar inte sättas någonstans...?
En miss! Skulle lägga in det senare i formuläret, men glömde göra det just då och hade fortfarande kvar i validering.php. Ändrade detta nu och då skickar sidan vidare till jcart/gateway.php när allt är korrekt ifyllt, men sidan blir bara blank och skickar i sin tur inte vidare varken mejl eller till tacksidan.
Kan jag lägga in någon annan kod i valideringen här:

if((strlen($valid_namn)>0)&&(strlen($valid_email)> 0)&&(strlen($valid_telefon)>0))
{header("Location: jcart/gateway.php");}

För tydligen verkar det inte funka på samma sätt med en header-location än via action i formuläret? Jag skulle liksom vilja lägga in

if((strlen($valid_namn)>0)&&(strlen($valid_email)> 0)&&(strlen($valid_telefon)>0))
{form action='jcart/gateway.php'}

om ni förstår mig, men förstår ju såklart att det inte funkar på det sättet. Men det kanske går att fixa till det på något liknande sätt?

Senast redigerad av JeZZifelt den 2011-10-28 klockan 11:42 Anledning: Gjorde inlägget lite mer läsbart.. :P
JeZZifelt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-28, 12:27 #4
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
JeZZifelt JeZZifelt är inte uppkopplad
Flitig postare
 
Reg.datum: Feb 2006
Inlägg: 326
Jag testade nu att lägga in hela koden från jcart/gateway.php i if-taggen då alla fält är korrekt ifyllda i validering.php. Då fungerar valideringen som den ska men jag antar att när jag klickar på beställ så tar kontrollen i jcart.php vid, som gör att jag skickas tillbaks till formulärsidan eftersom den antar att formulärsidan inte är den riktiga "checkouten". Ni kan se här (från jcart.php som ligger inkluderad i gateway.php och alltså nu även i validering.php):


// Determine if this is the checkout page
/* First we check the request uri against the config checkout (set when
the visitor first clicks checkout), then check for the hidden input
sent with Ajax request (set when visitor has javascript enabled and
updates an item quantity). */
$isCheckout = strpos(request_uri(), $checkout);
if ($isCheckout !== false || $_REQUEST['jcartIsCheckout'] == 'true') {
$isCheckout = true;
}
else {
$isCheckout = false;
}

// Overwrite the form action to post to gateway.php instead of posting back to checkout page
if ($isCheckout === true) {

// Sanititze config path
$path = filter_var($config['jcartPath'], FILTER_SANITIZE_URL);

// Trim trailing slash if necessary
$path = rtrim($path, '/');

$checkout = $path . '/gateway.php';
}


Jag har testat att byta till validering.php istället för gateway.php men det hjälper inte.
Det kanske inte ens är detta det beror på? Hmm, jag går bet på detta!
JeZZifelt är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-10-28, 12:39 #5
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Jake.Nu Jake.Nu är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 224
Det som finns i $_POST följer inte med om du gör en redirect som du gör.
Enklast är väl att flytta all kod från formulärsidan till jcart/gateway.php (eller tvärtom), annars får du hitta ett sätt att spara ner all data från $_POST och sedan ladda in det i jcart/gateway.php..

ordentlig fullösning (enl. mig i.a.f.):
PHP-kod:
// validering.php
<?php
if (isset($_POST["spara_formular"])) {
    
// om validering är ok
    
$filename tempnam("/tmp""formtmp");
    
file_put_contents($filenameserialize($_POST));
    
header("Location: http://domain.tld/jcart/gateway.php?ref=" $filename);
    exit();
}
?>

// jcart/gateway.php
<?php
// överst i filen
if (isset($_GET["ref"])) {
    
// bättre kontroll av _GET["ref"] bör göras..
    
$filename "/tmp/" basename($_GET["ref"]);
    if (
file_exists($filename)) {
        
$_POST unserialize(file_get_contents($filename));
        
unlink($filename);
    }
}
?>

Senast redigerad av Jake.Nu den 2011-11-26 klockan 03:39
Jake.Nu är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:25.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017