PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Abfrage Formular ?



fight-night
11-06-2003, 05:32
Hi ! Hab mal ne kurze Frage ,ich hab mir eine mysqlabfrage geschrieben etwa so

"select * from user where name like '$variable';" die variabele wird ordentlich übergeben und die abfrage funtioniert wenn ich in die Eingabe textbox "na%" eingebe zB. kommt alles mit "na" am Anfang die user sollen aber nicht immer das "%" mit eingeben müssen (nicht sehr schön) wie kann ich das syntaktisch mit in die abfrage einhängen das es automatisch hinten angehängt wird,an das was aus der textbox übergeben wird ?

Compuholic
11-06-2003, 08:20
Der folgende Code sollte eigentlich funktionieren. Er prüft, ob das Zeichen bereits am Ende vorhanden ist und fügt es ggf. hinzu.

$str = 'Blubb'

if ('%' == ($c = $str[strlen($str) - 1]))
{
$str = $str . '%';
}

fight-night
11-06-2003, 08:32
mmmh irgendwie bin ich zu doof das umzustriken !!ich schick mal das Script mit ,vielleicht kannst du mir das nochmal zeigen @compiholic ..Danke schon mal
######################################
<?php

if(!isset($query) || empty($query))
{$query = "select * from users where users like '$anfrage'";}
$query=stripslashes($query);


mysql_connect ("localhost", "ingo", "future")
or die("Keine Verbindung zur Datenbank");

mysql_select_db("ingo") or
die("Datenbank nicht gefunden!");

$ergebnis = mysql_query($query) or
die( mysql_error() );

$anz_spalten = mysql_num_fields($ergebnis);

//echo "<b>SQL Anfrage: $query</b>";
//Tabellenkopf erstellen
echo "<table border = 1>\n";
echo "<tr align = center>\n";

for ($i=0; $i<$anz_spalten; $i++)
{
echo "<th>" . mysql_field_name($ergebnis, $i). "</th>\n";
}
echo "</tr>\n";//Ende Tabellenkopf
//Rumpf der Tabelle erstellen
while ($zeile = mysql_fetch_row($ergebnis))
{
echo "<tr align=left>\n";
for ($i=0; $i<$anz_spalten; $i++)
{
echo "<td>";
if (!isset($zeile[$i])) //auf null prüfen
{echo "NULL";}
else
{echo $zeile[$i];}
echo "</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
?>
################################################
Die Variablen und Namen sind frei erfunden-:)

Compuholic
11-06-2003, 09:49
if(!isset($query) || empty($query))
{
$query = "select * from users where users like '$anfrage'";
}
$query=stripslashes($query);

if ('%' != $query[strlen($query) - 1])
{
$query = $query . '%';
}

mysql_connect ("localhost", "ingo", "future")
or die("Keine Verbindung zur Datenbank");
[...]

igel
11-06-2003, 09:50
Moin!

Ganz einfach:

<?php

if (!isset ($_REQUEST['query']) || empty ($_REQUEST['query']))
{
$anfrage = $_REQUEST['anfrage'] ."%";
$query = "select * from users where users like '$anfrage'";
}
else
{
$query = $_REQUEST['query'];
}
$query = stripslashes($query);

...
Die Variablen und Namen sind frei erfunden-Das trifft hoffendlich auch auf den User und das Passwort deiner Datenbank zu ;)

Wie du siehst, benutze ich die $_REQUEST-Variable. Das solltest du dir auch unbedingt angewöhnen, da man dann das automatische Registrieren der Variablen abschalten kann. Das mag auf den ersten Blick zwar bequem sein, man reisst sich damit jedoch sehr leicht Sicherheitslöcher in seine Anwendung!
<?php
if ($user = "heinzi" und $passwort = "ASd4sd3")
/* Mal ganz einfach zur Demonstration gemacht, sollte besser
* aus ner Datenbank kommen oder so und verschlüsselt sein...
*/
{
$eingeloggt = 1;
}
?>
(...)
<?php

if ($eingeloggt == 1)
{
print("Ganz geheime Informationen, 100 % sicher");
}Wie kommt man an die Infos, ohne Passwort und User zu kennen? Man ruft die Datei einfach so auf "http://xy.de/login.php?eingeloggt=1". Nur so mal als Demonstration :)

iGEL

fight-night
11-06-2003, 13:27
Hi...Danke an alle funzt jetzt !!

Andislack
11-06-2003, 18:09
hi!

du kannst auch nur:

select * from user where name like '%$variable'

bzw.

select * from user where name like '$variable%'

bzw.

select * from user where name like '%$variable%'

eingeben. dann sollte das auch ganz einfach funktionieren.
halt auf sql basis...

gruss andi

fight-night
11-06-2003, 18:43
heh Danke! @Andislack werde ich morgen mal testen ..auf so etwas einfaches bin ich auch nicht gekommen