2009-06-23 8 views
0

übergeben werden Ich habe ein bizare Problem, wo ich ein Skript habe, das anderswo auf der Seite funktioniert, aber ablehnt, für mich jetzt zu arbeiten. Das Problem ist exklusiv für IE, es funktioniert gut in Mozilla. Unten ist die Form:

<form class="element_form" action="general_image.php" method="post"> 

    <?php generate_input('hidden', '', 'id', $id);?> 
    <input type="image" src="../images/delete.gif" name="action" value="delete" class="button" /> 
    <input type="image" src="../images/tick.gif" name="action" value="active_switch" class="button" /> 

</form> 

Hier ist der Code, der funktionieren soll:

<?php 

include('header.php'); 

$db->connect(); 

$table = 'general_image'; 

$page = 'general'; 

$region = $_SESSION['region']; 

$action = $secure->secure_string($_REQUEST['action']); 
$id = $secure->secure_string($_POST['id']); 

$max_active = 1; 

if($action == 'active_switch' || $action == 'delete'){ 

    $response = array(); 

    $response['action'] = $action; 
    $response['id'] = $id; 

    if($action == 'active_switch'){ 

     $query = 'SELECT * FROM general WHERE region = "' . $region . '"'; 

     $result = mysql_query($query); 

     if(!$result) { 

      $utility->fail($action, 'query error: ' . $query); 

     }else{ 

      $row = mysql_fetch_assoc($result); 

      $already_active = false; 

      $active = ''; 

      if($id == $row['fifi']){ 

       $already_active = true; 
      } 

      $active .= $row['fifi']; 

      $response['results'] = $active; 

      if(!$already_active){ 

       $update = ''; 
       $active = ''; 

       $update .= 'fifi="' . $id . '"'; 

       $active .= $id; 

       $query = 'UPDATE general SET ' . $update . ' WHERE region = "' . $region . '"'; 

       $response['results'] = $active; 

      }else{ 

        $utility->redirect($page . '.php'); 

      } 
     } 

    }elseif($action == 'delete') { 

     $query = "DELETE FROM $table WHERE id=" . $id; 
    } 

    echo $query . "hello"; 


    if(!mysql_query($query)) { 

     $utility->fail($action, 'query error: ' . $query); 
    } 

Wenn jemand könnte mir sagen, was ich falsch mache, das wäre toll. Dank

EDIT

$action = $secure->secure_string does the following: 

    function secure_string($string) 
    { 
     return (strip_tags(addslashes(mysql_real_escape_string(stripslashes($string))))); 
    } 
+0

was macht diese funktion $ secure-> secure_string? –

+0

Ich finde diesen Foren-Thread interessant, der interessant sein könnte: http://www.webmasterworld.com/html/3342151.htm – balpha

Antwort

1

Ich habe festgestellt, dass es manchmal besser ist, für Maßnahmen ein verstecktes Feld zu haben, dann eine Taste oder ein Bild einreichen. Wenn jemand RETURN oder ENTER drückt, um das Formular zu senden, welche Aktion wird zurückgegeben?

+0

Sie können die Eingabetaste nicht drücken, um das Formular zu senden. Es ist nur ein Klick. – Drew

+0

Ich habe für das einfache, extra versteckte Feld und zwei Formen Ansatz gehen, da es das Problem in diesem Fall gelöst hat. Danke, Alter! – Drew

+0

Entschuldigung, ich habe nicht bemerkt, dass im Falle eines Bildfeldes die x, y Koordinaten des Mausklicks an den Variablennamen angehängt werden, so dass Sie mit $ _REQUEST ['action_x'] anstatt mit 'action' enden "Wie du erwartet hast. siehe http://nz.php.net/manual/en/faq.html.php#faq.html.form-image – bumperbox

-1

Ich denke, Eingabe [Typ = 'Bild'] ist in IE gebrochen. Versuchen Sie stattdessen den Button [type = 'submit'] zu verwenden.

+0

keine Ahnung, warum meine Antwort downvoted Ursache für eine Suche nach 'ie Eingabe Bildwert' (http: //lmgtfy.com/?q=ie+input+image+value) stimme mit meinen Gedanken überein. – anddoutoi

1

Zum Beispiel kann die Taste Bild hat: name="submitP" und value="Print"

in Form Post PHP, habe ich so:

if(isset($_REQUEST['submitP']) || isset($_REQUEST['submitP_x'])) 
{ something.... 
} 

Wenn diese zweite Klausel Post IE

0

zu behandeln sind erinnerst du dich an session_start();?