Thread Verfasser: Lore
Thread ID: 272
Thread Info
Es gibt 5 Beiträge zu diesem Thema, und es wurde 4509 Mal angesehen.
 Thema drucken
Userfeld beim editieren ausschließen
Lore
Hallo alle zusammen,

Mein Ziel ist es ein bestimmtes, eigen erstelltes, Userfeld von den Seiten des "Profil editiere", sowohl auf Seiten der User, als auch auf Seiten der Administratoren, zu entfernen. Besagtes Userfeld soll und muss allerdings für meine Zwecke auf der Seite "Registrieren" enthalten bleiben!

Nur habe ich überhaupt keine Ahnung wie ich das anstellen kann und bitte hiermit um Hilfe!

mfg
Lore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Dat Tunes
Möglich ist das und am einfachsten denk ich mal mit einer if Abfrage.

Nehme das Userfeld, suche nach der display abfrage und dann fügst du folgenes ein:


if (FUSION_SELF == "register.php"){ CODE }


Damit wird der Inhalt nur auf der register.php angezeigt.
Codebeispiel anhand der Location.php


if (!defined("IN_FUSION")) { die("Access Denied"); }

// Display user field input
if ($profile_method == "input") {
   $user_location = isset($user_data['user_location']) ? stripinput($user_data['user_location']) : "";
   if ($this->isError()) { $user_location = isset($_POST['user_location']) ? stripinput($_POST['user_location']) : $user_location; }

   echo "<tr>\n";
   echo "<td class='tbl".$this->getErrorClass("user_location")."'><label for='user_location'>".$locale['uf_location'].$required."</label></td>\n";
   echo "<td class='tbl".$this->getErrorClass("user_location")."'>";
   echo "<input type='text' id='user_location' name='user_location' value='".$user_location."' maxlength='50' class='textbox' style='width:200px;' />";
   echo "</td>\n</tr>\n";

   if ($required) { $this->setRequiredJavaScript("user_location", $locale['uf_location_error']); }
   
// Display in profile
} elseif ($profile_method == "display") {
   
    if (FUSION_SELF == "register.php"){ //Klammer öffnen
   
   if ($user_data['user_location']) {
      echo "<tr>\n";
      echo "<td class='tbl1'>".$locale['uf_location']."</td>\n";
      echo "<td align='right' class='tbl1'>".$user_data['user_location']."</td>\n";
      echo "</tr>\n";
   }
   
    } //Klammer schließen

// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_location']) && ($_POST['user_location'] != "" || $this->_isNotRequired("user_location"))) {
      // Set update or insert user data
      $this->_setDBValue("user_location", stripinput(trim($_POST['user_location'])));
   } else {
      $this->_setError("user_location", $locale['uf_location_error'], true);   
   }
}
?>

Das Problem ist nicht das Problem, das Problem ist der Nutzer, der das Problem verursacht.
Was lernen wir ?
Wir entfernen einfach den Nutzer und das Problem ist gelöst !

Sollte das Problem nicht gelöst sein, WD40! WD40 hilft immer !
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Lore
Vielen Dank für die Antwort, ich werde es testen und dann mitteilen ob es klappt oder nicht.

Zusammengefügt am 30. Juni 2014 um 16:!31:57:
So, getestet. Ergebnis: Klappt so nicht.

Habe versucht das, wie in deinem Beispiel angegebenen, Bereich (Display in Profil)zu machen
-
wobei mir hier nach einigem nachdenken auffiel, das das so nicht gehen kann (vielleicht war mein Problem falsch formuliert). Die Anzeige an sich im Profil soll erhalten bleiben, allerdings soll das Editieren besagten Userfeldes nicht möglich sein, sondern einzig und allein bei der Registrierung (als Pflichtfeld) abgefragt werden
-
Also habe ich die if Abfrage um den Bereich "Insert and Update" gepackt, was dann leider auch keinerlei Wirkung zeigte. Trotzdem danke ich dir für den Versuch mir zu helfen! Möglicherweise habe ich auch einfach nur etwas falsch gemacht(nicht auszuschließen Dickeslachen).

Es wäre schön wenn du, oder jemand anderes, mir sagen könnte wie ich mein "Problem" beseitige.

mfg
Lore
Bearbeitet von Lore am 30. Juni 2014 14:31:57
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
John Doe
Hi Lore,

also du hast das Benutzerfeld angelegt und so angegeben, dass es bei der Registrierung angezeigt und auch ausgefüllt werden muss (Pflichtfeld!).
Es soll im Profil angezeigt werden, soll aber nachträglich nicht vom User bei "Profil bearbeiten" abgeändert werden können?
Also ich würde es so machen... (siehe Codebeispiel wie folgt!):

if (!defined("IN_FUSION")) { die("Access Denied"); }

// Display user field input
if ($profile_method == "input") {
   $user_location = isset($user_data['user_location']) ? stripinput($user_data['user_location']) : "";
   if ($this->isError()) { $user_location = isset($_POST['user_location']) ? stripinput($_POST['user_location']) : $user_location; }

   echo "<tr>\n";
   echo "<td class='tbl".$this->getErrorClass("user_location")."'><label for='user_location'>".$locale['uf_location'].$required."</label></td>\n";
   echo "<td class='tbl".$this->getErrorClass("user_location")."'>";
//--------------------------------
//Wenn sich der User auf der "register.php" befindet, kann das Feld editiert werden!
if (FUSION_SELF == "register.php"){ //Klammer öffnen
   echo "<input type='text' id='user_location' name='user_location' value='".$user_location."' maxlength='50' class='textbox' style='width:200px;' />";
} else {
   echo "<input type='text' id='user_location' name='user_location' value='".$user_location."' maxlength='50' class='textbox' style='width:200px;' readonly>";
}
//-------------------------------
   echo "</td>\n</tr>\n";

   if ($required) { $this->setRequiredJavaScript("user_location", $locale['uf_location_error']); }
   
// Display in profile
} elseif ($profile_method == "display") {   
   if ($user_data['user_location']) {
      echo "<tr>\n";
      echo "<td class='tbl1'>".$locale['uf_location']."</td>\n";
      echo "<td align='right' class='tbl1'>".$user_data['user_location']."</td>\n";
      echo "</tr>\n";
   }
// Insert and update
} elseif ($profile_method == "validate_insert"  || $profile_method == "validate_update") {
   // Get input data
   if (isset($_POST['user_location']) && ($_POST['user_location'] != "" || $this->_isNotRequired("user_location"))) {
      // Set update or insert user data
      $this->_setDBValue("user_location", stripinput(trim($_POST['user_location'])));
   } else {
      $this->_setError("user_location", $locale['uf_location_error'], true);   
   }
}
?>

Der Code ist ungeteste, also bitte auf jeden Fall vorher ein Backup der zu ändernden Datei machen!!!
Sag bescheid, ob es so geht :)
Dieses Mitglied wurde gelöscht!
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Lore
Ich habe das Problem nun gelöst, allerdings mit keiner eurer Lösungsvorschläge. Ich hab stattdessen die if Abfrage um die gesamte Datei gepackt (unter die Zeile natürlich)

if (!defined("IN_FUSION")) { die("Access Denied"); }
und danach den Code zum Darstellen des Userfeldes als elseif dahinter gehängt!

Nun funktioniert das ganze und ich danke euch beiden für die Denkanstöße!

mfg
Lore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: