• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sicherheits funktion

  • Ersteller Ersteller Gelöschtes Mitglied 3007
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
G

Gelöschtes Mitglied 3007

Guest
Guten Tag.

Ich wollte mir eine funktion bauen die alle werte sie ich in sie eingebe auf unzulässige zeichen überprüft.
Die Funktion sieht so aus

PHP:
function rep($wert){
  $zeichen=array(':','/\/','/','.','+');
  $rep=str_replace($zeichen,'_',$wert);
  return $rep;
}

jetzt wollte ich wenn ich einen wert in die funktion einspeise diesen überarbeiteten wert wieder ausgeben

PHP:
$wert=$_GET[$navi];
$check=rep($wert);
include($check.'.php');

so ungefär nur das geht irgendwie net ^.^

kann mir hier vlt einer weiterhelfen wie ich das realisieren könnte?

MFG

//Edit: sorry hab ich im code so stehen hab ich hier nur aus lauter verzweiflung falsch geschrieben :-[
 
Zuletzt bearbeitet von einem Moderator:
hab ich editiert in meinem code steht das auch so nur ich war zu fauel den code aus meinem script hier hin zu kopieren da das so viel schneller geht ;)

und da hat sich dan lieder der kleine fehler eingeschlichen :-[
 
menno ich hab den text nur nicht direkt kopiert weil das schneller geht wenn ich das hier eben schnell hinschreibe...

aber is ja echt nett von dir den post hättest dir auch sparen können wenn du kein bock hast mir zu helfen!
 
Jetzt pass mal auf Herr "ich bin zu faul es hier rein zukopieren"

Entweder du machst dir die mühe und kopierst deinen source, bei dem das Problem auftritt hier herrein, denn aus deinem fehlerhaften code oben wird keiner schlau oder du lässt es sein und brauchst keine hilfe erwarten? - klar soweit ?

Ich helfe immer so gut wie ich kann aber wenn ich schon aussagen wie "ich war zu faul und will trotzdem hilfe" höre da kommt mir der mock hoch !
 
@Onkel:Bitte das nächste Mal den Zusammenhang genauer anschauen. Und nicht den Beitrag wie wild nach Wörtern wie "faul", "mag nicht", etc durchsuchen :roll:
 
keiner versteht mich -.-'

ich wollte den nur nciht kopieren weil das länger gedauert hätte als das eben hier reinzuschreiben! das sich da bei mir mal ein fehler einschleicht passiert vielleicht 1 mal von 100 oder so und ich habe meinen fehler ja auch sofort berichtigt als ich darauf aufmerksam gemacht wurde!

und habe hier ja auch nirgends gesagt das ich hilfe WILL sonder das ich gerne hilfe hätte!

musst mir ja nicht helfen wenn du nicht willst dan brauchst hier aber aich keine kommentare dazu hinterlassen darum geht es hier nähmlich nicht!

und nun bitte btt und helft wenn ihr wollt oder lasst es danke
 
PHP:
<?php

function checkString($string) 
{                
  // erlaubte zeichen a-z,A-Z,0-9,-,_
                
  if((preg_match('/^[a-zA-Z0-9\-\_]+$/',$string))) 
  {
    return true;
  }
  else
  {
    return false;            
  }
}

echo checkString("DEIN STRING"); // Gibt false aus weil kein Leerzeichen erlaubt ist
echo checkString("Hallo"); // Gibt true aus

// Nun kannst du es wie folgt ueberpruefen !

$wert = $_GET['navi'];

if(checkString($wert)) // wenn alle Zeichen zugelassen sind, geht er in die bedingung
{
  include($wert.'.php')  
}
else
{
  echo "Falsche Seite";
}

?>
Sicherlich ist es das was Du suchst oder habe ich da wieder was falsch verstanden
 
naja eigentlich wollte ich das der in der funktion den wert ändert fals nötig und mir dan eine überarbeitete variable gibt mit der ich arbeiten kann ^^
 
also eigentlich hast du mit deinem post ja schon recht das könnte ich verwenden aber ich würde gerne wissen ob es in einer funktion geht und wenn es geht würde es mir wesentlich besser gefallen... warum weiß ich aber uch nicht :P
 
also eigentlich hast du mit deinem post ja schon recht das könnte ich verwenden aber ich würde gerne wissen ob es in einer funktion geht und wenn es geht würde es mir wesentlich besser gefallen... warum weiß ich aber uch nicht :P

Es ist doch in einer Funktion ?!

Ich verstehe das Problem nicht ganz .. sag mir mal bitte konkret was Du vorhast !
 
also ich brauche eine funktion die mir werte auf unzulässige zeichen überprüft und wenn unzulässige zeichen enthalten sind sollen diese in der funktion gleich umgewandelt werden.

darum habe ich str_replace verwendet weil es in er ja nur die zeichen umwandelt wenn welche vorhanden sind. das mache ich weil ich auf statistischen seiten in denen HTML aktiv ist kein PHP verwendet werden darf. und nein ich will keinen anderen weg wenn mitlerweile hab ich mich da so reingesteigert das es mich auch interessiert ob das in einer funktion geht das man einen veränderten wert wieder ausgibt ;)

MFG
 
Also verstehe ich das jetzt richtig...
Du willst alle Zeichen, die Du in dem Array hast in einen "_" wandeln ?

Okay, aber welchen zweck soll das haben ? Nur so die Frage nebenbei !

PHP:
<?php

function checkString($string) 
{                
  if(!(preg_match('/^[:\.\+\/\\]+$/',$string))) 
  {
    $changes = array(':','/\/','/','.','+');
    $string = str_replace($changes,"_",$string);
  }
  
  return $string;
}

$wert = $_GET['navi'];

include(checkString($wert).'.php')  

?>
Es könnten Fehler drin sein, hab kein Syntaxhighlight atm
 
Vielen dank für die antwort das ist genau das was ich gebraucht habe :)

und warum? damit will ich einfach nur einen error verursachen fals doch mal einer so dumm sein sollte und PHP verwenden will den if_.....__ kommt nicht gerade gut ^.^

PS: das mit dem include war ein blödes beispiel ^.^
 
Nein injection sicher ist das auch so schon ^.^

aber mal so nebenbei ^.^ geht das so? ^^

PHP:
function rep($wert)
{                
  if(!(preg_match('/^[)\(\:\.\+\/\\]+$/',$wert)))
  {
    $changes = array(':','/\/','/','.','+');
    $wert = str_replace($changes,"_",$wert);
  }
  
  return $wert;
}

grund warum ich frage:

Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 17 in D:\xampp\*********\cfg\functions.php on line 14
 
PHP:
function rep($wert) 
{                 
  if(!(preg_match('/^[)\(\:\.\+\/\\\]+$/',$wert))) 
  { 
    $changes = array(':','/\/','/','.','+'); 
    $wert = str_replace($changes,"_",$wert); 
  } 
   
  return $wert; 
}

versuchs mal so
 
joa also er über gibt einfach keinen wert...

also wenn ich schreibe

PHP:
$wert='hallo/';
rep($wert);
echo'Der Wert ist '.$wert.'.';

steht da "Der Wert ist ." und eigentlich müsste da ja "Der Wert ist hallo_." stehen.

gibts in einer funktion vielleicht noch andere möglichkeiten?
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben