Sorry dat ik weer een topic plaats, maar ik kom soms uit functies echt niet uit terwijl ik ze wel nodig heb, omdat anders mijn hele systeem voor niets isgeweest. Nu is het weer een probleem met unlink(), ik wil een file unlinken, bijvoorbeeld $code5 (zie script), maar hij geeft dan een warning.. deze:

Warning: unlink() [function.unlink]: SAFE MODE Restriction in effect. The script whose uid is 77854 is not allowed to access / owned by uid 0 in /storage/mijndomein/users/073214/public/sites/www.skoolofwar.com/webshop/code_check.php on line

En bovendien verwijdert hij het bestand niet eens.. wie kan me helpen? Hieronder het script:

<?
$code1 = 'codes/3482.php';
$code2 = 'codes/8263.php';
$code3 = 'codes/6344.php';
$code4 = 'codes/3438.php';
$code5 = 'codes/4857.php';

if(file_exists($code1)) { //Check of de code nog bestaat
     include('codes/3482.php'); //Als de code bestaat, include de variabelen van de code
} else {
}

if(file_exists($code2)) { //Check of de andere codes nog bestaan
     include('codes/8263.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

if(file_exists($code3)) { //Check of de andere codes nog bestaan
     include('codes/6344.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code4)) { //Check of de andere codes nog bestaan
     include('codes/3438.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code5)) { //Check of de andere codes nog bestaan
     include('codes/4857.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

$ip = $_SERVER['REMOTE_ADDR']; //Maak variabele voor ip-adres

if($_POST[code] == 3482) { //Kijk of de goede code is ingevoerd
     if($code3482 == 3482) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3482</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=30><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code1); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 8263) {
 if($code8263 == 8263) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 8263</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code2); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 6344) {
 if($code6344 == 6344) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 6344</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code3); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 3438) {
 if($code3438 == 3438) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3438</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code4); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 4857) {
 if($code4857 == 4857) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 4857</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
unlink($code5.php); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} else {
echo "<center><font face=verdana size=3 color=red>OOPS!</br><font size=2 color=black>Je hebt een verkeerde code ingevoerd!</center></font>"; //Als er een niet-bestaande code is ingevoerd geef foutmelding
}

?>
Damiaan Reijnaers schreef op 05.01.2008 15:16
Superraar: als ik naar 777 chmod doet hij ht nog steeds niet
Met chmod verander je alleen de rechten op het bestand, niet de eigenaar. En met safe mode ingeschakeld wordt nu eenmaal geeist dat het uid (dus de eigenaar) ook overeenkomt...
Blanche schreef op 05.01.2008 15:23
[quote='Damiaan Reijnaers schreef op 05.01.2008 15:16']Superraar: als ik naar 777 chmod doet hij ht nog steeds niet
Met chmod verander je alleen de rechten op het bestand, niet de eigenaar. En met safe mode ingeschakeld wordt nu eenmaal geeist dat het uid (dus de eigenaar) ook overeenkomt...[/quote]


Domme vraag misschien maar: Hoe zet je safe mode uit?
Om te weten wat ik precies wil bereiken zal ik even alle scripts posten, hier komen ze:

Edit: De codes doen heel raar, hij doet nu heel veel pagina's in 1 code tag :S

-- index.html --
<html>
<head>
<title>Easy webshop ~ Koop dingen</title>
</head>
<body bgcolor=000000>
<center><table width=375 height=120 bgcolor=FFFFFF><tr><td width=375 height=45><font face=verdana size=5 color=black>NIETS</td></tr><tr><td><b><font face=verdana size=1 color=black>Kosten:</b> 0.00 €</br><a href="krijg_code_verwerk.php"><img src="koop.jpg" border=0></a></td></tr></table>
</br></br>
<center><a href="voerin.html"><font face=verdana size=2 color=white>Voer code in</a>
</body>
</html>

-- voerin.html --
<form action="code_check.php" method="post">
Code: <input type="text" name="code" maxlength="4"><input type="submit" name="submit" value="Voer in">
</form>

-- check_code.php --
<?
$code1 = 'codes/3482.php';
$code2 = 'codes/8263.php';
$code3 = 'codes/6344.php';
$code4 = 'codes/3438.php';
$code5 = 'codes/4857.php';
$code6 = '/codes/3482.php';
$code7 = '/codes/8263.php';
$code8 = '/codes/6344.php';
$code9 = '/codes/3438.php';
$code0 = '/codes/4857.php';

if(file_exists($code1)) { //Check of de code nog bestaat
include('codes/3482.php'); //Als de code bestaat, include de variabelen van de code
} else {
}

if(file_exists($code2)) { //Check of de andere codes nog bestaan
include('codes/8263.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

if(file_exists($code3)) { //Check of de andere codes nog bestaan
include('codes/6344.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code4)) { //Check of de andere codes nog bestaan
include('codes/3438.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}
if(file_exists($code5)) { //Check of de andere codes nog bestaan
include('codes/4857.php'); //Als de andere codes bestaan, include de variabelen van de andere codes
} else {
}

$ip = $_SERVER['REMOTE_ADDR']; //Maak variabele voor ip-adres

if($_POST
 == 3482) { //Kijk of de goede code is ingevoerd
     if($code3482 == 3482) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3482</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=30><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code6); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 8263) {
 if($code8263 == 8263) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 8263</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code7); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 6344) {
 if($code6344 == 6344) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 6344</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code8); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 3438) {
 if($code3438 == 3438) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 3438</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code9); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} elseif($_POST[code] == 4857) {
 if($code4857 == 4857) { //Als de goede code is ingevoerd, bekijk of de code nog bestaat
echo "<center><b>Uw betaling is gelukt!</b></br><center><table width=200 height=250 bgcolor=000000 background='lines.jpg' border=0><tr><td><img src='logo.jpg'></td></tr><tr><td width=200 height=185><font face=tahoma size=1 color=black><b>Betaald met code:</b> 4857</br><b>IP Adres:</b> $ip</td></tr><tr><td width=200 height=20><center><font face=verdana size=2 color=black><b>Betaalmiddel</b></font></td></tr></table>"; //Echo het bonnetje
  //Het is mogelijk om hier de functies te zetten die men na het betalen mag gebruiken
unlink($code0); //Zorg dat de code niet meer gebruikt mag worden
} else {
}
} else {
echo "<center><font face=verdana size=3 color=red>OOPS!</br><font size=2 color=black>Je hebt een verkeerde code ingevoerd!</center></font>"; //Als er een niet-bestaande code is ingevoerd geef foutmelding
}

?>


-- krijg_code_verwerk.php --
<?php

if(file_exists('codes/4857.php')) { //Check of de code nog bestaat
echo "Je code is: <b>4857</b>, ga terug naar de webshop en klik op 'voer code in'!"; //Echo de code
} elseif(file_exists('codes/3438.php')) { //Check of de code nog bestaat
echo "Je code is: <b>3438</b>, ga terug naar de webshop en klik op 'voer code in'!"; //Echo de code
} elseif(file_exists('codes/6344.php')) { //Check of de code nog bestaat
echo "Je code is: <b>6344</b>, ga terug naar de webshop en klik op 'voer code in'!"; //Echo de code
} elseif(file_exists('codes/8263.php')) { //Check of de code nog bestaat
echo "Je code is: <b>8263</b>, ga terug naar de webshop en klik op 'voer code in'!"; //Echo de code
} elseif(file_exists('codes/3482.php')) { //Check of de code nog bestaat
echo "Je code is: <b>6344</b>, ga terug naar de webshop en klik op 'voer code in'!"; //Echo de code
} else {
echo "<center><font face=verdana size=3 color=red>OOPS!</br><font size=2 color=black>Er zijn geen codes beschikbaar!</center></font>"; //Als er geen codes meer zijn geef een foutmelding
}

?>

-- codes/3438.php --
<?

$code3438 = 3438;

?>

-- codes/3482.php --
<?

$code3482 = 3482;

?>

-- codes/4857.php --
<?

$code4857 = 4857;

?>

-- codes/6344.php --
<?

$code6344 = 6344;

?>

-- codes/8263.php --
<?

$code8263 = 8263;

?>

Misschien is de webshop heel slecht gescript, maar het is ook een project van een beginnertje he ;-)

Mijn vraag is trouwens nog steeds: Hoe zet je de PHP Safe Mode uit?
Domme vraag misschien maar: Hoe zet je safe mode uit?
Dat zul je aan je host moeten vragen, dat kun je in ieder geval niet zelf...
Blanche schreef op 05.01.2008 16:33
Domme vraag misschien maar: Hoe zet je safe mode uit?
Dat zul je aan je host moeten vragen, dat kun je in ieder geval niet zelf...


Mm.. Dat is denk ik te veel gedoe, dat doe ik alleen als ik echt, ECHT niet anders kan.. is er niet een andere manier om deze warning weg te krijgen?
Nee.

Het gaat je gewoon niet lukken om met PHP bestanden te verwijderen die niet door PHP aangemaakt zijn als safe mode ingeschakeld is.

ps. Maar zoals ik al zei: is het niet veel slimmer om dit probleem op te lossen door het gebruik van een database?
Blanche schreef op 05.01.2008 16:43
Nee.

Het gaat je gewoon niet lukken om met PHP bestanden te verwijderen die niet door PHP aangemaakt zijn als safe mode ingeschakeld is.

ps. Maar zoals ik al zei: is het niet veel slimmer om dit probleem op te lossen door het gebruik van een database?


Raar eigenlijk, want voordat ik code_check.php aangepast had, was die unlink functie er ook.. en deed hij het ook gewoon.

Ik heb geen verstand van MySQL, of beter gezegd amper verstand.. ik heb zelfs meer verstand van PHP (en dat is zoals je al gemerkt hebt heel erg weinig).. Maar lukt het wel als ik het bestand aanmaak met bijvoorbeeld fopen met 'a'? Bijvoorbeeld zo:

codes/tijdelijk.php

<?php

$fp=fopen("6344.php", "a");
fwrite($fp,"<?php

\$code6344 = 6344

?>
$code");
fclose($fp);

?>
Ik zie het hele nut er niet van in om een PHP bestand te hebben met daarin
<?php
$code6344 = 6344;
?>
Er zijn genoeg andere manieren om te registreren of een code al gebruikt is...
Je fout zit niet in de safe_mode. Deze is goed, en moet je zeker laten staan. Anders haal je je allerlij narigheid op de hals, en vertrouw me, dat wil je niet.

$code6 = '/codes/3482.php';
$code7 = '/codes/8263.php';
$code8 = '/codes/6344.php';
$code9 = '/codes/3438.php';
$code0 = '/codes/4857.php';


Hier zit de fout, je geeft een absoluut pad op.

Ik raad je van harte aan om van het hele rare idee afstappen om losse php bestanden als database te gebruiken, en gewoon een fatsoenlijke manier van een database te gebruiken. Ik raad je ten zeerste af om hiermee verder te gaan, en eerder om een soort andere wijze te gebruiken. Dit is ook niet schaalbaar: voor elke 'code' moet je nieuwe regels toevoegen in je phpcode. Wat als je 100 codes wil? Of 1000?

Een simpele manier is bijvoorbeeld om een tabel in mysql te maken waarin je een lijst met codes hebt:


create table codes (
  id int(4) not null,
  taken tinyint(1) not null default 0,
  primary key(id)
);



Dit scriptje zal min of meer het zelfde doen, maar dan veilig en schaalbaar en zonder fratsen.

<?php

$iId = $_POST['id'];
if (!is_int($iId)) {
// hier jouw error afhandeling:
echo "Geen geldige id meegegeven";
exit;
}

$oDbh = mysql_connect("localhost","jouw_user","jouw_pass");
mysql_select_db("jouwdatabase");

$sQuery = "SELECT id,taken FROM codes WHERE id = " . $iId . " AND taken = 0";
$oSth = mysql_query($sQuery);

if (!$oSth) {
echo "mysql error " . mysql_error() . " met query: " . $sQueryEsc;
exit;
}

if (mysql_num_rows($oSth) != 1) {
echo "Id bestaat niet!"
exit;
}

$aRow = mysql_fetch_assoc($sth);

$sQuery2 = "UPDATE codes WHERE id = " . $iId . " SET taken = 1";
$oSth2 = mysql_query($sQuery);
if (!$oSth2) {
echo "mysql error " . mysql_error() . " met query: " . $sQuery2;
exit;
}
?>
je kunt ook doen:
Dit werkt namelijk ook in safe mode.
Niet getest, maar zal wel werken.
Ander proberen met = 'true' inplaats van == 'true'

<?
if (file_get_contents($bestandje) == 'TRUE'){
hier de code
}
?>

Reageren