Hjälp med PHP-script som jävlas

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
Tjena

Har problem med ett PHP-script som vägrar göra som jag vill... Har frågat på diverse programmeringsforum, men ingen verkar kunna hjälpa mig, så jag frågar här istället! :)

Såhär ser koden ut:
Code:
	$namn = $_POST['namn'];
	$epost = $_POST['epost'];
	$artistID = $_POST['artist'];
	$lat = $_POST['lat'];
	$albumID = $_POST['album'];
	$instrument = $_POST['instrument'];
	$bidrag = $_POST['bidrag'];
	
		$artist = mysql_fetch_array(mysql_query("SELECT * FROM artist WHERE artistID = '{$artistID}'"));
	
		$filename = $artist['artist']." - ".$lat.".txt";
		$dir = "filer/".$artist['artist']."/";
 
 		$ver=1;
		$exist = true;
		while($exist == true) {
		   if (!file_exists("$dir/$filename")) {
			  echo "Filnamnet blir <i>".$filename."</i>";
			  $exist = false;
		   } else {
			  $ver++;
			  $filename = preg_replace('/(\(ver\d+\))?\.txt/i', ' (Ver'.$ver.').txt', $filename);
		   }
		}

Jag ska spara info från ett formulär i en textfil, dock så kanske textfilen redan finns. Finns den INTE så ska den skapas, finns den så ska den döpas om till namnet (Ver2).txt

Ex.
Magnus Uggla - Trubaduren.txt //Kolla om den finns

Alt. 1:Finns INTE!
Skapa filen och spara den data som skall sparas.

Alt. 2: Filen FINNS!
Spara filen som Magnus Uggla - Trubaduren (Ver2).txt
Om (Ver2) redan finns så ska den heta (Ver3) osv.

Problemet med detta script:
Den funkar bra tills den kommer till (Ver3), finns (Ver3) så döper den ändå filen till (Ver3)! Allt upp till (Ver3) funkar fint...

Sjukt :(

Blir tokglad om någon kan lösa problemet!
 

burner

Ny medlem
Gick med
29 Feb 2004
Ort
Örebro
Hoj
Letar GSXR 1000/750
Jag körde med str_replace istället plus några andra modifieringar, då fungerade det fint.

Tex. enligt

PHP:
$filename = str_replace(" (Ver".$ver.")", ' (Ver'.++$ver.")" ,$filename);

Titta på str_replace och låt str_replace bara förändra filnamnen då det verkligen är en version > 1.
 

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
Okej, ska titta på det och testa lite.
Tack för svaret :)
 

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
Vad gjorde du mer för ändringar? Får inte till det...:va
 

henkaa

Ny medlem
Gick med
31 May 2007
Ort
08
Hoj
950 sm
Du har ett problem med ditt regexp.
Losning som borde funka :tummenupp
$filename = preg_replace('/(\ ?\(ver\d+\))?\.txt/i', ' (Ver'.$ver.').txt', $filename);

For ovrigt hoppas jag du har en funktion for input validation da jag ser tendens pa SQL-Injection i din kod.

Det har blev ju ett ganska nordigt forsta inlagg for mej pa sporthoj.com! :D
 

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
Tack så mycket för svaren

Dock så har jag löst det redan... :) Skrev om koden lite så jag slapp hela replace skiten... :D
 

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
2975072 Du har ett problem med ditt regexp.
Losning som borde funka :tummenupp
$filename = preg_replace('/(\ ?\(ver\d+\))?\.txt/i', ' (Ver'.$ver.').txt', $filename);

For ovrigt hoppas jag du har en funktion for input validation da jag ser tendens pa SQL-Injection i din kod.

Det har blev ju ett ganska nordigt forsta inlagg for mej pa sporthoj.com! :D
Okej, "nörden" :tungan (Ditt rykte på SH är besudlat för all framtid!!! :D )

Vart finns injection-tendenserna? :)

Om du menar $artistID så är det något man väljer från en rullist, inget användaren skriver själv med andra ord.
 

joch

Ny medlem
Gick med
19 May 2007
Ort
Stockholm
Hoj
VFR800 03
Okej, "nörden" :tungan (Ditt rykte på SH är besudlat för all framtid!!! :D )

Vart finns injection-tendenserna? :)

Om du menar $artistID så är det något man väljer från en rullist, inget användaren skriver själv med andra ord.

Det spelar ingen roll om det är en rullist som skickar parametern. Det går alltid att göra manuellt, och därför bör du alltid kontrollera inparametrar som ska skickas till databaser.

Exempelvis om artist_id bara får innehålla siffor:
if(preg_match('/^[0-9]+$/', $inData)
// gör något
else
die('nej du');
 

Linuus

Ny medlem
Gick med
11 Jun 2006
Ort
Göteborg
Hoj
Gixxer 600 "Corona", Suzuki GS 500 E (SÅLD!)
2980373 Det spelar ingen roll om det är en rullist som skickar parametern. Det går alltid att göra manuellt, och därför bör du alltid kontrollera inparametrar som ska skickas till databaser.

Exempelvis om artist_id bara får innehålla siffor:
if(preg_match('/^[0-9]+$/', $inData)
// gör något
else
die('nej du');
Jo det är sant... "Tänkte inte på det" ;)
 

jayjay

Jappsen jr
Gick med
28 Jun 2005
Ort
Stockholm
Hoj
Honda CB750 -94, CBR600F -96
Anledningen till att det inte fungerar är för att du replacear "(Ver x)" med " (Ver x)", notera space. Alltså lägger du på ett space för varje version... gissar jag på. Men ett ganska fult sätt att lösa det på... :) men du ahde som sagt skrivit om det.
 

henkaa

Ny medlem
Gick med
31 May 2007
Ort
08
Hoj
950 sm
Bade joch och jayjay har ratt. :)

Ett extra tips ar att ha Magic Quotes igang i php. (default)
http://uk2.php.net/magic_quotes
Men lita inte endast pa Magic Quotes utan gor som joch skrev och putta in olika globala validerings funktioner i koden som du bara kan kalla pa nar du behover och behandla all potentiell user input som farlig.

:tuttar
 
Nyheter
Triumph storsatsar inom Enduro

Motorsportlegenden och fler...

BMW CE 02 x VAGABUND

BMW Motorrad har presentera...

Bike kör Stark Varg på GGN 2.0!

I veckan blev det klart att...

Transportstyrelsen siktar på höjda avgifter

Transportstyrelsen har medd...

Insektsfaunan hårt drabbad efter nedläggningen av Järva MK:s motorbana

Efter nedläggningen av Järv...

Ny R1 Race och R1 GYTR

Pressrelease från Yamaha ...

Paul Edmondson ny chef för Triumph Racing Enduro Team

Motorsportlegenden och fler...

Miguel Oliveira klar för Yamaha

Miguel Oliveira och Lin Jar...

Suzuki utvecklar döda-vinkeln-kamerasystem

En ny patentansökan har avs...

BMW köper Suzuki-data – nästa steg MotoGP?

Sedan en tid har olika rykt...

Top